我正在尝试重命名以字符串
p-01-
开头的所有文件夹中的所有文件。
这是根目录中文件夹和文件结构的简短示例:
P-79-23 - 01. PA
P-79-23 - 02-2. PS
P-79-23 - 02. PK
P-79-23 - 01.PA 目录
01. P-79-23 - 01.PA (IDR)
02. P-79-23 - 01.PA (iIDR)
03. P-79-23 - 01.PA (iiIDR)
P-01-23 - 01.PA-TK.docx
P-01-23 - 01.PA.xlsx
P-01-23 - 01.PA-Txt.docx
P-01-23 - 01.PA-txt.xlsx
更改文件名
P-01-23 - 01.PA-TK.docx --> P-79-23 - 01.PA-TK.docx
我正在使用此脚本的修改版
这是我的版本:
@echo on
chcp 65001 >NUL
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set "ROOT=%~dp0"
set "PATTERN=*p-01-*.*"
set "SEARCH=p-01-"
set "REPLAC=P-99-"
for /R "%ROOT%" %%I in ("%PATTERN%") do (
set "FILENAME=%%~nI"
setlocal EnableDelayedExpansion
set "FILENAME=!FILENAME:%SEARCH%=%REPLAC%!"
rename "%%~fI" "!FILENAME!%~xI"
endlocal
)
endlocal
exit /B
脚本不做任何事情。日志输出:
d:\test>chcp 65001 1>NUL
d:\test>setlocal EnableExtensions DisableDelayedExpansion
d:\test>rem // Define constants here:
d:\test>set "ROOT=d:\test\"
d:\test>set "PATTERN=*p-01-*.*"
d:\test>set "SEARCH=p-01-"
d:\test>set "REPLAC=P-99-"
d:\test> rename "%~fI" "!FILENAME!!%~xI"
我做错了什么?
我不是编程专家,我是业余爱好者,但我正在努力。 我还是不知道原来的代码错误在哪里,我很想知道哪里出错了。 下面是有效的代码,在阅读教程和其他示例之后,与初始代码相比,它已经发生了很大的变化。
@echo off
setlocal enabledelayedexpansion
set "start_folder=%~dp0"
set "search=p-88-"
set "replac=p-55-"
for /r "%start_folder%" %%F in (*) do (
set "filename=%%~nxF"
set "fullpath=%%~dpF"
set "newname=!filename:%search%=%replac%!"
if not "!newname!"=="!filename!" (
ren "!fullpath!!filename!" "!newname!"
)
)
endlocal
代码现在可以运行了。 您可以更改“搜索”和“替换”参数。 我希望这段代码对某人有用。
“知识不是知道的知识,而是给予的知识。”