题
我正在尝试批量提取某些目录中某些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"
如果您在批处理文件中使用它,请记住您需要将百分号加倍才能逃脱它们。
其他提示
%% r
将包含完整的文件名,包括空格。这是你对 unrar
的调用,它有问题。如果文件名包含空格,则必须将其括在引号中,否则 unrar
将无法看到两个(空格分隔的)参数 file
和< code> name.rar 实际上是一个带空格的文件名。
以下内容将起作用:
for %%r in (*.rar) do unrar "%%r"
另外,如果你好奇问题所在,那么用echo简单地替换程序调用有时非常有帮助:
for %%r in (*.rar) do @echo %%r
您将看到%% r包含文件名中的空格,并且不会将它们分开。
不隶属于 StackOverflow