批处理文件重命名文件也尝试重命名目录



下面的批处理文件从txt文件中获取目录和文件名,并根据给定的名称重命名目录中的文件。

SETLOCAL EnableDelayedExpansion
(for /f "tokens=1,2 delims=;" %%A in ('"TYPE C:RENAME-ALL.txt"') do (
echo %%A | find /i "" 
if !errorlevel! equ 1 (
RENAME "D:!mypath!%%A" "%%B" 
) ELSE (
echo "found pattern"
echo %%A
set  mypath=%%A
echo mypath is !mypath!
)
)
) >> C:RENAME-ALL-4.txt 2>&1
endlocal
========== RENAME-ALL.TXT ================
mydirectoryphotos2019  <= this is the directory
IMG_20190729_064619.jpg;IMG_20190825_064619.jpg   <=former name is replaced by the latter name

本例中,批处理文件将mydirectoryphotos2019中的文件IMG_20190729_064619.jpg重命名为IMG_20190825_064619.jpg。

然而,批处理文件还试图将mydirectoryphotos2019重命名为"(这不应该发生。)这能被抑制吗?如何?

SETLOCAL EnableDelayedExpansion
(for /f "tokens=1,2 delims=;" %%A in ('"TYPE C:RENAME-ALL.txt"') do if "%%B"=="" (
echo "found pattern"
echo %%A
set  "mypath=%%A"
echo mypath is !mypath!
) ELSE (
RENAME "D:!mypath!%%A" "%%B" 
)
) >> C:RENAME-ALL-4.txt 2>&1
endlocal

最新更新