2017-08-31 13 views
0

%〜dp0 \ Playlists \%list%フォルダに移動し、そこにある各.mp3ファイルの名前を次の番号に変更するバッチスクリプトを作成したかったのです。 たとえば、先頭ファイルの名前が「1」に変更され、2番目のファイルの名前が「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

あなたは(npocmakaが書いたように)setlocal enabledelayedexpansionが欠落しています

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

関連する問題