根据文件夹名称批量重命名带有感叹号的文件

时间:2017-06-13 15:26:13

标签: batch-file batch-rename

我有一个包含照片的文件夹,其中有更多子文件夹,其中包含日期作为名称。 例如,它类似于C:\Users\Lorem\Desktop\Photos\22-Dec-98\。 在每个日期文件夹中,我都有包含简短描述的照片,例如Third morning on site.png,但有些可能包含感叹号(!)。

我通过查看其他问题,设法在每个简短描述前面添加日期,例如18-Jun-98-Weekend campfire.png,这就是我想要的,但是当简短的描述带有感叹号时,它就不能这样做。

@echo OFF

SET /P folderPath="Enter full path of the folder which has the files you want to rename: "
PAUSE
SETLOCAL EnableDelayedExpansion
PAUSE
FOR /F "tokens=*" %%G IN ('dir /b %folderPath%') DO (call :subroutine "%%G") 
PAUSE

:subroutine
 set date=%1
 set date=%date:~1,-1%
 set newPath=%folderPath%\%date%\
 FOR /F "tokens=*" %%F IN ('dir /b %folderPath%\%1\') DO (call :rename "%%F")

:rename
 set fileName=%1
 set fileName=%fileName:~1,-1%
 set name=%date%-%fileName%
 set noname=%newPath%%date%
 REN "%noname%" "%name%"

我知道需要输入文件夹位置的方法可能不是最佳选择,但这是我能想到的最好的解决方法。总而言之,我应该更改/添加到我的代码中,以便重命名包含感叹号的文件?如果可能的话,我非常感谢对任何更改的解释,因为我对批处理脚本的知识不是很了解;我只修改了不同问题/答案的代码。另外,我真的无法完全理解%1%%F的含义或保留为值,因此欢迎任何指向教程/简短说明的链接。

提前致谢!

0 个答案:

没有答案