这是 Windows 10 批处理文件问题。我需要根据文件名重命名一系列文件,但我只知道每个文件的部分名称。根据本网站各个页面的指导,我尝试了以下步骤。我尝试了注释的 FOR,但它们不起作用。REN 命令部分起作用,但没有保留整个原始文件名。我希望以下代码能帮助您理解我正在尝试做什么。
::Append 00 as a prefix to the name of whatever filename contains a specific string
::
setlocal
::set fname=
set fname=ADPMasterControl.pdf
::SITE EXAMPLE: for %a in (prefix*.txt) do @(set "fname=%a" & call ren "%fname%" "%fname:*prefix=%")
::for %a in (*ADPMasterControl.pdf) do @(set fname=%a & call ren %fname% "%fname:*prefix=%")
::for %a in (*ADPMasterControl.pdf) do @(set fname=%a & call ren %fname% "00 %fname%")
::for %a in (*ADPMasterControl.pdf) do (set fname=%a & call ren %fname% "00 %fname%")
ren *%fname% "00 *%fname%" <----------this KINDA SORTA works but it's dropping/replacing the first three characters of the original filename instead of just appending "00 " to the beginning
Desired:
ren 1234_###_1_4641_2020-07-30_ADPMasterControl.pdf "00 1234_###_1_4641_2020-07-30_ADPMasterControl.pdf"
What actually happened:
ren 1234_###_1_4641_2020-07-30_ADPMasterControl.pdf "00 4_###_1_4641_2020-07-30_ADPMasterControl.pdf"
echo . > "08 Pays to Non-Actives.txt" <---THIS WORKED FINE
pause
exit
答案1
- 对于 PowerShell,一行:
首先进行测试-WhatIf
Get-item "C:\Folder\Files\*ADPMasterControl.pdf" | Foreach-Object { Rename-Item $_.FullName -NewName ('00 '+$_.Name) -WhatIf }
# Or,... ::
gi "C:\Folder\Files\*ADPMasterControl.pdf" | % { ren $_.fullname -new ('00 '+$_.name) -WhatIf }
如果预测执行的结果是预期的效果,则只需删除-WhatIf
,即可有效地执行:
Get-item "C:\Folder\Files\*ADPMasterControl.pdf" | Foreach-Object { Rename-Item $_.FullName -NewName ('00 '+$_.Name) -WhatIf }
# Or,... ::
gi "C:\Folder\Files\*ADPMasterControl.pdf" | % { ren $_.fullname -new ('00 '+$_.name) -WhatIf }
进一步阅读:
[√]获取物品 | gi
- 对于 cmd/bat/命令行
仅针对实际文件夹:
cd /d "d\your\root\folder\where\files\tree\start\"
for %i in (*ADPMasterControl.pdf)do echo\rename "%~fi" "00 %~nxi"
对于递归:
cd /d "d\your\root\folder\where\files\tree\start\"
for /r %i in (*ADPMasterControl.pdf)do echo\rename "%~fi" "00 %~nxi"
观察:1要在命令行中使用,在 bat 中,必须将变量加倍 %~i
|%%~i
在 for 循环中,你的尝试没有执行/使用这个:
cd /d "d\your\root\folder\where\files\tree\start\"
for %%i in (*ADPMasterControl.pdf)do echo\rename "%%~fi" "00 %%~nxi"
cd /d "d\your\root\folder\where\files\tree\start\"
for /r %%i in (*ADPMasterControl.pdf)do echo\rename "%%~fi" "00 %%~nxi"
观察:2去除echo\
在输出中查看它是否能满足您的需要后:
cd /d "d\your\root\folder\where\files\tree\start\"
for %%i in (*ADPMasterControl.pdf)do echo\rename "%%~fi" "00 %%~nxi"
cd /d "d\your\root\folder\where\files\tree\start\"
for /r %%i in (*ADPMasterControl.pdf)do echo\rename "%%~fi" "00 %%~nxi"
答案2
答案3
这条线有效:
for %%a in (*ADPMasterControl.pdf) do (set fname=%%a & call ren %%fname%% "00 %%fname%%")
非常感谢大家。