ループ変数は%%f
最初の行にありますが、使用する場所に割り当てfilename
ます%%j
。
コードは次のようになります。
@ECHO OFF
setlocal enabledelayedexpansion
FOR %%f IN (%*) DO (
rem corrected-begin
set filename=%%~nf
rem corrected-end
set filename=!filename:.=_!
set filename=!filename: =_!
if not "!filename!"=="%%~nf" RENAME "%%f" "!filename!%%~xf"
)
また、最終的な引用符を一貫して削除することを確認することもできます. つまり、ループの最後の行は次のようになります。
if not "!filename!"=="%%~nf" RENAME "%%~f" "!filename!%%~xf"
次に、移動中のファイルのディレクトリ部分を抑制しないでください。
if not "!filename!"=="%%~nf" RENAME "%%~dpnxf" "!filename!%%~xf"
コードを解放する前に、最後の行を次のように置き換えてください。
if not "!filename!"=="%%~nf" ECHO RENAME "%%~f" "!filename!%%~xf" >> "%TEMP%\test.txt"
次に、ドラッグ アンド ドロップ操作の後、"%TEMP%\test.txt" を調べて、操作が含まれているかどうか、および期待どおりのファイルが含まれているかどうかを確認します。
参考までに、すべての変更後の完全なファイルを次に示します。
@ECHO OFF
setlocal enabledelayedexpansion
FOR %%f IN (%*) DO (
set filename=%%~nf
set filename=!filename:.=_!
set filename=!filename: =_!
rem uncomment for debugging.
rem if not "!filename!"=="%%~nf" ECHO RENAME "%%~dpnxf" "!filename!%%~xf" >> "%TEMP%\test.txt"
rem comment for debugging.
if not "!filename!"=="%%~nf" RENAME "%%~dpnxf" "!filename!%%~xf"
)