批量重命名:跳过已经重命名的文件
Batch rename: skipping already renamed files
所以在最近的另一个问题中,我需要通过将 .ab 添加到文件名中来找到批量重命名文件的解决方案。我成功地做到了这一点,但现在我面临着一个不同的问题。每次我 运行 批处理文件时,它都会将 .ab 附加到所有文件,即使是那些已经重命名的文件。我尝试通过以下方式解决问题,但不起作用。
rem @echo off
FOR /R "C:\Users\" %%G in (*.txt) DO (
%%G|findstr /i /L ".ab">nul
IF errorlevel 1 (
REN "%%G" "%%~nG.ab.txt"
) ELSE (
skip %%G
)
)
pause
基本上我需要检查文件名中是否已经包含“.ab”,然后根据结果跳过或添加 .ab。如果有任何帮助,我将不胜感激。
使用 For /F
循环,而不是 For /R
。此外,不要使用 Dir
命令及其 /S
选项,(将输出以 .txt*
结尾的项目),使用 Where
与其 /R
选项相反,(将输出以 .txt
结尾的项目).
单行 batch-file 示例,(不包括以 不包含 、.ab
结尾的那些基本名称):
@For /F "Delims=" %%G In ('^""%__AppDir__%where.exe" /R "C:\Users" "*.txt" 2^>NUL^|"%__AppDir__%findstr.exe" /IV "\.ab\.txt$"^"')Do @Ren "%%G" "%%~nG.ab%%~xG"
不要忘记更改 C:\Users
and/or .txt
和 ab
as/if 的两个实例。
所以在最近的另一个问题中,我需要通过将 .ab 添加到文件名中来找到批量重命名文件的解决方案。我成功地做到了这一点,但现在我面临着一个不同的问题。每次我 运行 批处理文件时,它都会将 .ab 附加到所有文件,即使是那些已经重命名的文件。我尝试通过以下方式解决问题,但不起作用。
rem @echo off
FOR /R "C:\Users\" %%G in (*.txt) DO (
%%G|findstr /i /L ".ab">nul
IF errorlevel 1 (
REN "%%G" "%%~nG.ab.txt"
) ELSE (
skip %%G
)
)
pause
基本上我需要检查文件名中是否已经包含“.ab”,然后根据结果跳过或添加 .ab。如果有任何帮助,我将不胜感激。
使用 For /F
循环,而不是 For /R
。此外,不要使用 Dir
命令及其 /S
选项,(将输出以 .txt*
结尾的项目),使用 Where
与其 /R
选项相反,(将输出以 .txt
结尾的项目).
单行 batch-file 示例,(不包括以 不包含 、.ab
结尾的那些基本名称):
@For /F "Delims=" %%G In ('^""%__AppDir__%where.exe" /R "C:\Users" "*.txt" 2^>NUL^|"%__AppDir__%findstr.exe" /IV "\.ab\.txt$"^"')Do @Ren "%%G" "%%~nG.ab%%~xG"
不要忘记更改 C:\Users
and/or .txt
和 ab
as/if 的两个实例。