1. ホーム
  2. スクリプト・コラム
  3. DOS/BAT(ドス・バット

バッチリ名称変更シリーズ ケースコード

2022-01-08 20:07:39

テキスト/ファイル操作のバッチ処理は、実にシンプルでパワフルです! あまり複雑なコードは、唯一のメモ帳プラスシンプルなコードは、テキスト/ファイル操作のほとんどを扱うことができる、私が使用するコードのいくつかの次のレコードは、基本的に私は両方のJianke参照に、友人のコードの一部に答えるためにBaiduにあったが、またメモの役割を果たすことができます 。

ケース I.

あるフォルダの中のすべてのファイルに001,002 ......のような名前を付けたいのですが、名前が変われば順番は関係ありません、どなたか書き方を教えてください。

コードを与えました。

@echo off  
setlocal enabledelayedexpansion   
set var=1000  
for /r "%~dp0" %%i in (*. *) do (   
 set /a var+=1   
 if not "%%~nxi"=="%~nx0" ren "%%i" !var:~-3!%%~xi   
)  
pause>nul  
echo Processing completed, any key to exit...  
exit

簡単に説明します。
1. for /r を使用すると、カレントディレクトリ (%~dp0) 以下のすべてのファイルをトラバースするため、f + dir /s /b よりも効率的です。
2. notステートメントを使用してbatファイル自体を除外する場合、フルパスは%0、batファイル名:%~nx0に展開されます。
3. 変数 1000 を使って蓄積を開始し、毎回 !var:~-3! を使って最後の 3 つ、つまり 001、002、003 を順に取得する...
Ps:ヴァル= 1000、その後999ファイルの名前を変更するには、このスクリプトをアップし、より多くのエラーを上書きするために表示されます、どのように変更するには?それについて考えてみてください、それはコメントであなたのコードを残すことが最善である、ハァッ!?(比較的単純な、エビはレンガを撮影しないでください!)。

ケース2

例えば、X1,, X2...X51 というファイルが入っているフォルダがあり、X15.ass というファイル名で、使用後は以下のように [Yousei-raws] Soul Eater 14 [BDrip 1280x720 x264 FLAC].ass というコードになります:

@echo off  
set a=0  
setlocal EnableDelayedExpansion  
for %%n in (*.ass) do (  
ren "%%n" "[Yousei-raws] Soul Eater !a! [BDrip 1280x720 x264 FLAC].ass" 
set /A a+=1  
)

どうすれば正しい順番になるのでしょうか、ちなみに最後の51は1になります。

私が出したコード

@echo off   
set a=100  
setlocal EnableDelayedExpansion   
for /f "delims=*" %%n in ('dir /b *.ass') do (  
  set /a a+=1  
  ren "%%n" "[Yousei-raws] Soul Eater !a:~-2! [BDrip 1280x720 x264 FLAC].ass"  
)

簡単な説明です。aの値は0に初期化されているので、最初のファイルは0、2番目は1、そして15番目は14です。コードは順番を入れ替え、最初にa+1を与え、名前を変更するときにaの値が1になるようにすることができます。

Ps: ここでは for + dir の方法で、少し効率は落ちますが、エラー率も下がり、分かりやすくなりました! もちろん、for /rを使うこともできます。