File 批提取名称中带有空格的RAR
我试图批量提取一些rar的,是在一些zip在一些目录。长话短说这是我对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
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确实有一个错误的值,引号会起到很大作用。也许我还弄错了什么。。。我不知道。