批量重命名:跳过已重命名的文件

问题描述 投票:0回答:1

所以在另一个最近的问题中,我需要通过在文件名中添加.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-loop batch-file if-statement rename filenames
1个回答
0
投票

使用For /F循环,而不是For /R。另外,不要将Dir命令及其/S选项与(将输出以.txt*结尾的项目] >>一起使用,而应将Where及其/R选项与之配合使用,(将输出以.txt)] ..]结尾的项目。

单行示例,(不包括那些以不包含.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和/或.txtab的两个实例。

© www.soinside.com 2019 - 2024. All rights reserved.