2009-05-04 49 views
2

我想批量提取某些目錄中某些zip中的某些rar。長話短說,這是我的循環通過RAR文件:批量提取名稱中帶空格的rars

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

unrar x %%r 
) 

問題是,%% - [R可能得到錯誤的值。如果文件名是「file name.rar」,那麼%% r獲得值「文件」 - 它停在文件名的第一個空格處。

如何獲得此循環以使用帶名稱空格的文件文件?

謝謝

回答

1

試試這個:

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

如果您在批處理文件中使用它,請記住你需要加倍百分號逃避它們。

+0

非常感謝。 – Bojan 2009-05-05 13:16:18

0

問題是'for'使用空格作爲默認的分隔符。你可以使用delims = xxx來設置它。查看here的語法。或者你可以使用ForFiles

+0

cmd也不是一個UNIX外殼,它在看到星號的任何地方都會起作用。對於每個rar文件,您將其文件名完全包含在%% r中,而不管它是否有空格。 – Joey 2009-05-05 07:58:19

1

%%r將包含完整的文件名稱,包括空格。這是您撥打unrar時遇到的問題。如果文件名包含空格,則必須用引號將其括起來,否則unrar將不能看到兩個(空格分隔的)參數filename.rar實際上是帶空格的單個文件名。

所以下面的工作:

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

另外,如果你AER好奇的問題所在,它有時非常有用只需更換回聲程序調用:

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

,你會看到%% r包含文件名中的空格,並不會將它們分開。

+0

我想到了,但它仍然不會這樣工作。它接近%%真的有一個錯誤的價值,報價會做很多。 也許我還有別的錯誤......我不知道。 – Bojan 2009-05-05 13:18:50