例如,我想使用批处理脚本重命名某些文件夹名称,并在其之前添加特定术语
原始文件夹名称:图像、音乐
改为: old_images、old_music
但我不想更改该父目录中的任何文件名
我试着用for
for %%A in (dir /ad *) do (ren %%A old_%%A)
但这东西没有用...
请给出任何解决方案
以及通过你还需要过滤掉其中任何一个已经前缀孩子目录循环old_
,(除非你真的想比如前缀old_old_
和old_old_old_
),并确保已经与任何前缀名称old_
不存在,重命名之前。
以下两个示例处理位于当前目录中的文件,在该行运行时,(请不要假设当前目录是批处理文件所在的目录)。
@For /F "EOL=| Delims=" %%I In ('Dir /B/AD ^| %__AppDir__%findstr.exe /BIV "old_"') Do @If Not Exist "old_%%I" Ren "%%I" "old_%%I"
或者,您可以省略该If
命令,如果发生重命名冲突,只需重定向任何错误消息。
@For /F "EOL=| Delims=" %%I In ('Dir /B/AD ^| %__AppDir__%findstr.exe /BIV "old_"') Do @Ren "%%I" "old_%%I" 2>NUL
@For /F "EOL=| Delims=" %%I In ('Dir /B/AD "C:\My Location" 2^>NUL ^| %__AppDir__%findstr.exe /BIV "old_"') Do @If Not Exist "C:\My Location\old_%%I" Ren "C:\My Location\%%I" "old_%%I"
尽管在这种情况下,您最好将该位置定义为变量,以使您的代码更易于修改和重用为模板。
@Set "var=C:\My Location"
@For /F "EOL=| Delims=" %%I In ('Dir /B/AD "%var%" 2^>NUL ^| %__AppDir__%findstr.exe /BIV "old_"') Do @If Not Exist "%var%\old_%%I" Ren "%var%\%%I" "old_%%I"
您可能会注意到2>NUL
此版本中的附加内容。如果目标目录不存在,这是为了防止任何错误消息通过管道( |
)。在当前目录版本中,这不是必需的,因为当前目录始终存在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句