标题: [文件操作] [已解决]批处理如何修改二级目录下的pdf文件名? [打印本页]
作者: liaoguinan 时间: 2024-1-16 18:08 标题: [已解决]批处理如何修改二级目录下的pdf文件名?
本帖最后由 liaoguinan 于 2024-1-16 22:57 编辑
如何修改每个文件夹下的pdf文件名?
按顺序从1开始排,如下图
作者: newswan 时间: 2024-1-16 19:05
如果显示正确,去掉 13行 #- @cd /d %~dp0 & powershell -command "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit/b
-
- Get-ChildItem -Path . -Directory | ForEach-Object {
- $fName = $_.Name
- Push-Location $_
- $i = 0
- Get-ChildItem -Path . -File | Sort-Object {
- ( $_.basename -replace "${fName}-","" ) -as [int]
- } | ForEach-Object {
- $i++
- $NameNew = "${fName}-$i" + $_.Extension
- $_.Name + " " + $NameNew
- #Rename-Item $_ $NameNew
- }
- Pop-Location
- }
复制代码
作者: liaoguinan 时间: 2024-1-16 20:56
回复 2# newswan
13行的代码如果注释掉的话执行没任何修改,去掉注释,能修改序号,但是会把后面的中文字都删掉了
作者: liaoguinan 时间: 2024-1-16 20:56
回复 2# newswan
如何保留后面的中文字且修改序号?
作者: newswan 时间: 2024-1-16 21:39
- @cd /d %~dp0 & powershell -command "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit/b
-
- Get-ChildItem -Path . -Directory | ForEach-Object {
- $fName = $_.Name
- Push-Location $_
- $i = 0
- Get-ChildItem -Path . -File | Sort-Object {
- ( $_.BaseName -replace "${fName}-(\d+).*","`$1" ) -as [int]
- } | ForEach-Object {
- $i++
- $NameNew = "${fName}-$i" + ( $_.BaseName -replace "${fName}-(\d+)","" ) + $_.Extension
- $_.Name + " " + $NameNew
- #Rename-Item $_ -NewName $NameNew
- }
- Pop-Location
- }
复制代码
回复 4# liaoguinan
作者: liaoguinan 时间: 2024-1-16 22:56
回复 5# newswan
感谢辛苦了完美
作者: qixiaobin0715 时间: 2024-1-17 10:09
本帖最后由 qixiaobin0715 于 2024-1-17 20:29 编辑
用纯P练练手,未测试,可能有误:- @echo off
- for /f "delims=" %%i in ('dir /b /ad') do (
- pushd "%%i"
- setlocal enabledelayedexpansion
- for /f "tokens=2* delims=-" %%a in ('dir /b /a-d *.pdf') do (
- set str=%%b
- set /a n=str
- if !n! gtr 0 (
- if !n! lss 10 (
- set _a_!n!=!str:~1!
- ) else if !n! lss 100 (
- set _b_!n!=!str:~2!
- ) else if !n! lss 1000 (
- set _c_!n!=!str:~3!
- )
- )
- )
- for /f "tokens=2* delims=_=" %%a in ('set _') do (
- set /a m+=1
- ren "%%i-%%a%%b" "%%i-!m!%%b"
- )
- endlocal
- popd
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2024-1-17 20:31
回复 1# liaoguinan
修改第7行,将一对叹号去掉试试,已修改。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |