Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 批提取名称中带有空格的RAR_File_Batch File_Space - Fatal编程技术网

File 批提取名称中带有空格的RAR

File 批提取名称中带有空格的RAR,file,batch-file,space,File,Batch File,Space,我试图批量提取一些rar的,是在一些zip在一些目录。长话短说这是我对rar文件的循环: for %%r in (*.rar) do ( unrar x %%r ) 问题是%%r获取的值错误。如果文件名为“file name.rar”,则%%r将获得值“file”-它将在文件名的第一个空格处停止 如何使此循环在名称中包含空格的文件中工作 谢谢问题是“for”使用空格作为默认分隔符。您可以使用delims=xxx来设置。查找语法。或者您可以使用。试试这个: for /f "usebackq d

我试图批量提取一些rar的,是在一些zip在一些目录。长话短说这是我对rar文件的循环:

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

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

如何使此循环在名称中包含空格的文件中工作


谢谢

问题是“for”使用空格作为默认分隔符。您可以使用delims=xxx来设置。查找语法。或者您可以使用。

试试这个:

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

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

%%r
将包含包含空格的完整文件名。是您呼叫
unrr
出现问题。如果文件名包含空格,则必须将其括在引号中,否则
unrr
将无法看到两个(空格分隔的)参数
file
name.rar
实际上是一个带空格的文件名

因此,以下措施将起作用:

for %%r in (*.rar) do unrar "%%r"
此外,如果您想知道问题出在哪里,有时简单地用echo替换程序调用是非常有帮助的:

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

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

cmd也不是一个UNIX shell,它在任何看到星号的地方都会进行全局搜索。对于每个rar文件,您都会将其文件名完全包含在%%r中,不管它是否有空格。我想到了这一点,但它仍然不会这样工作。有人认为%%r确实有一个错误的值,引号会起到很大作用。也许我还弄错了什么。。。我不知道。