我在 (Result) 文件夹旁边有一个 .bat 文件。
该文件夹包含具有不同名称的 .jpg 文件。
我正在尝试编写一个 .bat 文件,以便它重命名此文件夹中的所有这些文件。
它可以工作,但不完全。这是问题所在:
它仅在文件所在的目录中起作用。
(为了使其正常工作,我需要一个 .bat 文件和一个旁边有文件的文件夹)。
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
答案1
这是解决方案..
您只需输入路径即可进入文件夹cd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
设置本地启用延迟扩展通过符号扩展变量(!)
cd / d 结果进入结果文件夹
设置“计数 = 1000”我在其中标记了零的数量的变量文件-001.jpg
设置a = “*.jpg”变量表示我们正在寻找的文件。
(dir /b /o:-d /tc %a%
)
目录- 显示文件和子目录的列表。接下来,我们进行排序。
/b- 仅显示文件名。
/o:-d- 按相反的顺序对显示的文件列表进行排序(从最新到最旧)。
/tc- 按文件创建时间排序。
%A%- 调用变量。
使用backq设置文件名使用引号的能力喜欢这个> “.
指定执行用反引号括起来的字符串作为命令喜欢这个> `和
单引号中的字符串就像字符串中的命令喜欢这个> ‘。
分隔符 = xxx指定一组分隔符。覆盖默认的空格制表符分隔符集。
答案2
您的问题对我来说不是很清楚(我的英语很差),我不明白它是什么:
它仅在文件所在的目录中起作用。
(为了使其正常工作,我需要一个 .bat 文件和一个旁边有文件的文件夹)。
- 我想您想递归地重命名,这里有一个编辑。
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.进入bat所在文件夹:
cd /d "%~dp0Result"
2.递归列出你的文件dir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
3.增加你的会计师
set /a "_cnt+=1"
4.使用计数器循环重命名文件
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
观察。如果我所寻找的东西与您相距甚远,请告诉我...
- 根据您的回答给出的替代方案
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF
进一步阅读:
[√]命令
[√]For 循环