ファイル名を FOR ループ パラメータとして別のバッチ ファイルに渡そうとしています。問題は、ファイル名に特殊文字 (特に %) が含まれている場合、呼び出されたスクリプトにパラメーターが渡されないことです。EG -
は次のFIRST_SCRIPT.bat
とおりです -
cd "C:\theFolder"
for /R %%a in (*.*) do call SECOND_SCRIPT "%%~a"
は次のSECOND_SCRIPT.bat
とおりです -
ECHO %1
ファイル名に % が含まれている場合。「% of STATS.txt」、出力は最終的に
of STATS.txt
これは間違っています。使用してみSetlocal DisableDelayedExpansion
ましたが、ほとんど成功しませんでした
Setlocal DisableDelayedExpansion
for /R %%a in (*.*) do (
SET "var=%%~a"
Setlocal EnableDelayedExpansion
call TEST_UPGRADE "%var%" "%%~a"
)
他のスタックオーバーフローの回答がありますが、それらはすべて % 文字を事前に知る必要があります。ファイル名は私たちの管理下にないため、これらのソリューションは機能しません。これを処理する方法はありますか?
ありがとう!
プラットフォーム: Windows XP の場合は cmd.exe