如何在.bat 文件中指定目录路径?

如何在.bat 文件中指定目录路径?

我在 (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

相关内容