我有一个包含照片的文件夹,其中有更多子文件夹,其中包含日期作为名称。
例如,它类似于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
的含义或保留为值,因此欢迎任何指向教程/简短说明的链接。
提前致谢!