2017-08-31 65 views
0

我想制作一个批处理脚本,它将进入%〜dp0 \ Playlists \%list%文件夹并将其中的每个.mp3文件重命名为下一个数字。 例如,顶层文件将被重命名为“1”,而第二个文件将被重命名为“2”。我到处寻找,但我无法找出为什么我的代码不起作用。使用“for”命令批量执行2条命令

set playnmbr=0 
for /f "usebackq delims=|" %%f in (`dir /b "%~dp0\Playlists\%list%"`) do (
rename %~dp0\Playlists\%list%\%%f %playnmbr%.mp3 
set /A playnmbr=%playnmbr%+1 
) 
+4

你需要[延期扩展](https://ss64.com/nt/delayedexpansion.html) – npocmaka

+0

你能告诉我一个精炼版本的代码吗?我在它之前添加了“SETLOCAL EnableDelayedExpansion”,它仍然不起作用。 – GoldenLizardYT

回答

0

你缺少setlocal enabledelayedexpansion(如npocmaka写道):

setlocal enabledelayedexpansion 
set playnmbr=0 
for /f "usebackq delims=|" %%f in (`dir /b "%~dp0\Playlists\%list%"`) do (
    rename %~dp0\Playlists\%list%\%%f !playnmbr!.mp3 
    set /A playnmbr=!playnmbr!+1 
) 

此外,%list%是不是在你的代码中定义。

+0

它工作完美!谢谢! – GoldenLizardYT

+1

只是一个建议:用'set/A playnmbr + = 1'来改变'set/A playnmbr =!playnmbr!+ 1' – Aacini