我正在尝试批量提取某些目录中某些 zip 中的一些 rar。长话短说,这是我通过 rar 文件的循环:
for %%r in (*.rar) do (
unrar x %%r
)
问题是 %%r 得到了错误的值。如果文件名为“file name.rar”,则 %%r 获取值“file” - 它在文件名的第一个空格处停止。
如何让这个循环处理名称中带有空格的文件文件?
谢谢
我正在尝试批量提取某些目录中某些 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
,name.rar
并且实际上是带有空格的单个文件名。
所以以下将起作用:
for %%r in (*.rar) do unrar "%%r"
此外,如果您对问题出在哪里感到好奇,有时将程序调用简单地替换为 echo 会很有帮助:
for %%r in (*.rar) do @echo %%r
您将在其中看到 %%r 在文件名中包含空格并且不会将它们分开。