我正在寻找一种解决方案,让我可以在包含子字符串的文件夹中重命名除 .bat 文件之外的所有文件,说 APPENDTEXT ,附在最后。 I've tried this before and it worked out great!现在我对如何进一步改进它感到茫然。我希望它能识别已经在文件名中包含子字符串的文件,并跳过重命名这些文件。
在所有my approaches中,我都失败了,最后追加了nonce或双子串。
场景将是一些包含混合文件的文件夹,例如:
EXAMPLEFOLDER
| ---- file1.txt
| ---- file2 APPENDTEXT .txt
| ---- file3 APPENDTEXT .txt
| ---- file4.txt
我希望在运行批处理文件时将此文件夹中的文件重命名为:
EXAMPLEFOLDER
| ---- file1 APPENDTEXT .txt
| ---- file2 APPENDTEXT .txt
| ---- file3 APPENDTEXT .txt
| ---- file4 APPENDTEXT .txt
目前,它们正在被重命名(或根本没有):
EXAMPLEFOLDER
| ---- file1 APPENDTEXT .txt
| ---- file2 APPENDTEXTAPPENDTEXT .txt
| ---- file3 APPENDTEXTAPPENDTEXT .txt
| ---- 文件4的 AppendText通过 .txt的
然后我想通过探索所有子文件夹来进一步改进它。
EXAMPLEFOLDER
| ---- file1 APPENDTEXT .txt
| ---- file2 APPENDTEXT .txt
| ---- file3 APPENDTEXT .txt
| ---- file4 APPENDTEXT .txt
| ---- EXAMPLEFOLDER2
| ---- | ---- file21 APPENDTEXT .txt
| ---- | ---- file22 APPENDTEXT .txt
我还没有完成,因为我仍然无法弄清楚如何停止重命名已包含子字符串 APPENDTEXT 的文件名。如果解决方案建立在this answer之上,那就太棒了。有人能帮助我吗?
答案 0 :(得分:2)
@echo off
setlocal EnableDelayedExpansion
set "var=APPENDTEXT"
for /F "delims=" %%a in ('dir *.* /b /a-d ^| findstr /v /i "\.bat$" ') do (
set "name=%%~Na"
if "!name:%var%=!" equ "!name!" ren "%%a" "%%~na%var%%%~xa"
)
pause