我有一组大约3,000个文件夹,名为XYZ-1到XYZ-3000。在这些文件夹中有一组图像文件和一个描述文本文件。例如:
- Property123_0001.jpg
- Property123_0002.jpg
- Property123_0003.jpg
- ...
- Property123_0085.jpg
- Property123_0086.jpg
- Z_Description.txt
每个文件夹中.jpg
文件的数量不同,但总是有一个描述文件。每个目录的图像文件都有不同的名称,例如`XYZ-1可能包含Property 123,而XYZ-10可能包含Easement 789。
我需要重命名包含.jpg文件的“Property 123”部分之后的文件的文件夹。理想情况下,我会截断尾随数字和下划线,但即使它们保留,也会比XYZ-1名称更好。
我正在处理一个批处理文件来完成这个任务,但是我的文件不能运行,我不知道为什么。
这是我的资料
for /d %%D in (*) do (
set "_dir=%%D"
set /a "_first=1"
cd "%%D"
for %%F in (*) do (
if %_first%==1 set "_name=%%~nF"
set /a "_first=0"
)
cd ..
ren %_dir% %_name%
)
不幸的是,当我运行它时,命令窗口立即关闭。我试着在最后放一个暂停命令,但这并没有保持窗口打开。文件/文件夹没有发生任何变化。
我已经从命令行尝试了我的语法,看起来一切正常。所以我不知道是什么问题。我能得到一点帮助吗?
1条答案
按热度按时间camsedfj1#
试试这个:
这里需要使用setlocal EnableDelayedExpansion,并在for循环中使用!而不是%。
我还添加了set“_name=%%D”,这样如果第二个文件夹不包含文件,它就不会尝试将该文件夹更改为第一个文件夹的名称
编辑:
还考虑下划线部分: