私は数百の* .mp3ファイルをc:\ filesに持っています。ファイル名に特殊文字を扱うときのバッチリネームの問題
- milad.mp3(いいな振舞い)
- ちょっとyou.mp3(ファイル名にスペース)
- systemofadown.mp3(長いファイル名)のような存在のすべての想像のファイル名があります
- ハウディ(1) .mp3(ファイル名のかっこ)
と最後の3つの条件の任意の組み合わせ。 ファイルの名前を001-test.mp3、002-mp3、...に変更したいのですが... どのファイルがどの名前になるかは関係ありません。 は、名前を変更するバッチファイルを作成しました。ここに私のコードは、(行番号を追加して)です:
01 rem @echo off
02 cls
03 set _number=%1
04 lfnfor on
05
06 :F1TO10
07 IF NOT EXIST *.mp3. goto end
08 if %_number% gtr 9 goto F10TO100
09 for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 00%_number%-test.mp4
10 set /a _number +=1
11 goto F1TO10
12
13 :F10TO100
14 IF NOT EXIST *.mp3. goto end
15 if %_number% gtr 99 goto F100TO1000
16 for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 0%_number%-test.mp4
17 set /a _number +=1
18 goto F10TO100
19
20 :F100TO1000
21 IF NOT EXIST *.mp3. goto end
22 if %_number% gtr 999 goto end
23 for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 %_number%-test.mp4
24 set /a _number +=1
25 goto F100TO1000
26
27 :end
28 for /f %%a IN ('dir /b *.mp4') do rename %%~na.mp4 %%~na.mp3
29 echo Done
このコードは、良い行動のファイル名(もはや8文字の長より、すなわちスペースなし、なし括弧)のために正常に動作します。しかし、ファイル名が1つでも悪いファイルがあったとしても、スクリプトは中断します(Ctrl-Cで止めるまで無限にループします)。
問題は明らかにファイル名の問題です。どのようにこれを修正することができますか?何か案は?私は大いに助けていただければ幸いです。
良さ、私のああ... Windowsのスクリプトファイルを使用するように決して私を思い出させるん!私はこれを「とても簡単に」と呼ぶつもりはない。 – Arafangion
ありがとうございます。私はこれを使用しようとしましたが、Windowsのスクリプティングホストを起動できませんでした( 'ファイル拡張子 ".js"のスクリプトエンジンはありません)' –
私はヘルパーユーティリティーの機能のほとんどを持っているので、機能は1つの時間だけ使用されている場合は、実際にはさらに小さくなる可能性がありますが、むしろいくつかのコードを表示することができます。 –