我有以下脚本根据文件opac_one-hit.log中的列表重命名目录中的文件
@ECHO OFF
SETLOCAL enabledelayedexpansion
FOR /F "tokens=1,3 delims=;" %%G IN ( opac_one-hit.log) DO (
ren %%G %%H
)
pause
为了启动我的脚本应该位于opac_one-hit.log所在的同一目录中。如何在我的for循环中构建搜索功能,以便在子文件夹中找到opac_one-hit.log,而不是每次都将脚本复制到该子文件夹。
答案 0 :(得分:1)
未经测试:
@ECHO OFF
SETLOCAL enabledelayedexpansion
for /r %%# in ("opac_one-hit*.log") do (
FOR /F "usebackq tokens=1,3 delims=;" %%G IN ( "%%~f#" ) DO (
ren %%G %%H
)
)
pause
答案 1 :(得分:1)
您可以获取文件所在的文件夹:
for /f %%A in ('dir /s /b "c:\basedir\opac_one-hit.log"') do echo %%~dpA
其中basedir
是开始递归搜索的位置(以避免搜索整个磁盘)。
如果您确定,只有一个文件,请设置变量而不是echo
或使用以下版本。还可以使用以下内容来处理找到的每个 opac_one-hit.log
:
@ECHO OFF
SETLOCAL
for /f "delims=" %%A in ('dir /s /b "c:\basedir\opac_one-hit.log"') do (
FOR /F "usebackq tokens=1,3 delims=;" %%G IN ("%%A") DO (
echo ren "%%G" "%%H"
)
)
pause
当重命名命令正确时,REM删除echo
。