質問: バッチファイルを使用して、入力からファイルの名前を順番に変更しますか? 私が働いている会社は請求書を処理しており、データベースに入力されたものと実際の請求書の画像を比較して、これらの請求書の正確性を定期的にチェックする必要があります。処理中にエラーを見つけたときはいつでも、データベースから請求書を削除し、画像をプロセッサに送信して、請求書を正しく再入力する必要があります。ただし、システムでグリッチが頻繁に発生し、請求書をサーバーにアップロードしてプロセッサに送信しようとすると、重複ファイルが存在すると表示されます。この問題を回避するには、各画像の名前を手動で新しい名前に変更する必要があります(制御番号のロールを使用して画像に名前を付けます)。このプロセスを自動化して、これらのファイルの名前を順番にすばやく変更できるようにしたいと思います。バッチファイルに入力を入れて、開始制御番号を入力できるようにしたいのですが、ディレクトリ内の各追加ファイルに+1を入力して、ディレクトリ内の各ファイルの名前を順番に変更します。たとえば、次のようになります。バッチファイルから、コントロール番号の開始を求められます。 6654821に入ります。 bill3210851.pdf名前が6654821に変更されました imagebill654.pdf名前が6654822に変更されました random_name.pdf名前が665482に変更されました billerror.pdf名前が6654824に変更されました sendtomanual.pdf名前が6654825に変更されました ファイルの元の名前はまったく関係ありません。順番に名前が変更される限り、特定の順序のままにする必要はありません。これまでのところ私が持っているのはこれです:@echo off title batch rename color 5f echo hello! i'm the batch pdf renamer. please enter the starting control number: set /p start= ren %userprofile%\desktop\needrenamed\*.pdf "%p%.pdf" pause 明らかに、これはファイルの名前を順番に変更することには対応していません。私はここで立ち往生しています。
回答: @echo off setlocal enableextensions disabledelayedexpansion set /p "number=please enter the starting control number:" || goto :eof for /f "delims=" %%a in ('dir /b *.pdf') do ( setlocal enabledelayedexpansion for %%b in (!number!) do ( endlocal echo ren "%%~fa" %%b ) set /a "number+=1" ) 各.pdf現在のフォルダ内のファイルで、ファイルの名前を現在の番号に変更し、番号を増やします。名前の変更操作は、コンソールにのみエコーされます。出力が正しい場合は、echoコマンドの前にあるrenを削除します。