質問
いくつかのディレクトリにあるzipにあるrarをバッチ抽出しようとしています。要するに、これはrarファイルのループです:
for %%r in (*.rar) do (
unrar x %%r
)
問題は、%% rが間違った値を取得することです。ファイル名が" file name.rar"の場合%% rは値" file"を取得します-ファイル名の最初のスペースで停止します。
名前にスペースを含むファイルファイルを処理するためにこのループを取得するにはどうすればよいですか
ありがとう
解決
これを試してください:
for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"
バッチファイルで使用している場合は、エスケープするにはパーセント記号を2倍にする必要があることに注意してください。
他のヒント
%% r
には、スペースを含む完全なファイル名が含まれます。問題があるのは unrar
への呼び出しです。ファイル名にスペースが含まれている場合は、引用符で囲む必要があります。そうしないと、 unrar
は、2つの(スペースで区切られた)パラメーター file
および< code> name.rar は、実際にはスペースを含む単一のファイル名です。
次のように動作します:
for %%r in (*.rar) do unrar "%%r"
また、問題のある場所に興味がある場合は、単にプログラム呼び出しをechoに置き換えると非常に役立つ場合があります。
for %%r in (*.rar) do @echo %%r
%% rにはファイル名にスペースが含まれており、それらがバラバラにならないことがわかります。
所属していません StackOverflow