批量提取名称中带有空格的rars

时间:2009-05-04 22:11:56

标签: file batch-file space

我正在尝试批量提取某些目录中某些zip的rar。长话短说这是我在rar文件中的循环:

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

unrar x %%r
)

问题是%% r得到了错误的值。如果文件名是“file name.rar”,则%% r获取值“file” - 它将停在文件名的第一个空格处。

如何让这个循环处理名称中带空格的文件?

谢谢

3 个答案:

答案 0 :(得分:1)

试试这个:

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

如果您在批处理文件中使用它,请记住您需要将百分号加倍才能逃脱它们。

答案 1 :(得分:1)

%%r将包含完整的文件名,包括空格。这是你对unrar的问题。如果文件名包含空格,则必须用引号将其括起来,否则unrar将无法看到两个(空格分隔的)参数filename.rar实际上是带有空格的单个文件名。

以下内容将起作用:

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

另外,如果你好奇问题所在,那么用echo简单地替换程序调用有时非常有帮助:

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

您将看到%% r包含文件名中的空格,并且不会将它们分开。

答案 2 :(得分:0)

问题是'for'使用space作为默认分隔符。您可以使用delims = xxx进行设置。查看here的语法。或者您可以使用ForFiles