2009-05-04 15 views
2

いくつかのディレクトリでいくつかのzipにあるいくつかのrarをバッチ抽出しようとしています。長い話をすると、これはrarファイルのループです。名前に空白を含むバッチ抽出rars

問題は、%% rが間違った値になることです。ファイル名が "file name.rar"の場合、%% rは値 "file"を取得します - ファイル名の最初のスペースで停止します。

このループを名前にスペースを含むファイルファイルにするにはどうすればよいですか?

は問題は「の」の区切りデフォルトでスペースを使用することで、あなたに

答えて

1

これを試してみてください:

for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i" 

バッチファイルでそれを使用している場合は、あなたがそれらをエスケープするためにパーセント記号を2倍にする必要があります覚えておいてください。

+0

ありがとうございました。 – Bojan

0

ありがとうございます。 delims = xxxを使用してこれを設定できます。構文についてはhereを参照してください。または、ForFilesを使用できます。

+0

cmdは、アスタリスクがどこにある場合でもglobbingを実行するUNIXシェルではありません。すべてのrarファイルについて、空白を含んでいるかどうかに関係なく、ファイル名は%% rに完全に含まれます。 – Joey

1

%%rには、スペースを含む完全なファイル名が含まれます。この問題が発生したのはunrarです。ファイル名にスペースが含まれている場合は、引用符で囲む必要があります。unrarは、2つの(スペース区切りの)パラメータfilename.rarが実際には1つのファイル名であることを認識できません。

ので、次は動作します:

for %%r in (*.rar) do unrar "%%r" 

また、どこに問題があるあなたは好奇心AERが、それは単にエコーとプログラム呼び出しを置き換えるために、時には非常に有用だ場合:

for %%r in (*.rar) do @echo %%r 

ます%% rにファイル名のスペースが含まれていることがわかります。

+0

私はそれについて考えましたが、それはまだそれのように動作しませんでした。それは、%% rが本当に間違った値を持っていて、引用符が大したことになることを縫っています。 多分私は何か間違っている...私は知らない。 – Bojan

関連する問題