有条件地重命名为语句

时间:2017-02-25 16:41:47

标签: batch-file cmd

我正在寻找一种解决方案,让我可以在包含子字符串的文件夹中重命名除 .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之上,那就太棒了。有人能帮助我吗?

1 个答案:

答案 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