ファイル名のリストを処理しようとしていますが、名前にプレーンテキストと特殊文字が含まれているかどうかに関係なく、コマンドラインを "エスケープ"アンパサンド、感嘆符、パーセント記号などの文字。私は名前がある4つのサンプルファイルに(下)私のコードを実行した場合:Windowsバッチファイルの予約文字をエスケープする方法
01 A Test.txt
02 & Test.txt
03 ! Test.txt
04 % Test.txt
出力は次のようになります。
1 "01 A Test.txt"
2 "02 & Test.txt"
"03 COUNT
4 "04Test.txt"
プレーンテキストやアンパサンドを含むファイル名が正しく(限り通過しますそれは引用符で囲まれているためです)、感嘆符とパーセント記号は全く異なる結果をもたらします。変数をサブルーチンに渡すと、4つのケースすべてが同じように処理されます(可能であれば、出力から引用符が削除されます)。ありがとうございました。
:: CODE
:: ----
@echo off
setlocal EnableDelayedExpansion
set /a COUNT=0
for /f "tokens=*" %%g in ('dir /b *.txt') do (
set /a COUNT=!COUNT! + 1
call :LIST "%%g" !COUNT! )
pause > nul
exit
:LIST
echo %2 %1
goto :EOF
カウント出力例の最初のものです。 – Squashman
@スカッシュマン - 右... – npocmaka
ありがとうございます。それは私がやろうとしていることに非常に近いものです。私の唯一の疑問は、今サブルーチンで同じことをする方法です。 –