如何在Windows命令行中使用空格?

cmd /C C:\Program Files (x86)\WinRar\Rar.exe a D:\Hello 2\File.rar D:\Hello 2\*.*

当前回答

单引号在这种情况下是不行的。你必须在每个路径周围加上引号,并将整个命令用引号括起来:

cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""

其他回答

我刚刚发现,在路径涉及使用空白字符的情况下,例如,当我需要访问应用程序xyz的位置是:

C:\Program Files\ab cd\xyz.exe

要从windows cmd提示符中运行此命令,您需要使用

C:\"Program Files"\"ab cd"\xyz.exe

or

"C:\Program Files\ab cd\xyz.exe"

单引号在这种情况下是不行的。你必须在每个路径周围加上引号,并将整个命令用引号括起来:

cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""

推荐提示符中的空格(在VBA Shell命令代码行中)

我有一个非常类似的问题,当通过VBA自动化从命令窗口获取内容到文本文件时,在命令提示符中出现了一个空格。这条线索是我在这条路上发现的许多没有给我解决方案的线索之一。

因此,这可能会帮助其他有类似问题的人:由于带引号的语法总是很难正确,我认为展示一些具体的例子总是有用的。 通过Shell使用VBA命令提示符的另一个问题是,当出现错误时,代码行通常不会出错:事实上,黑色推荐窗口的闪烁会误导人们认为已经完成了一些事情。

例如,我有一个文件夹,里面有一个文本文件,比如at

C:\Alans文件夹\test1.txt (https://imgur.com/FELSdB6)

文件夹名称中的空格给出了问题。

假设文件夹AlansFolder存在,类似这样的东西就可以工作

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub

这行不通。(它不会出错)。

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub

在路径周围包含引号将使其工作

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub

(顺便说一下,如果文本文件不存在,那么它将被创建)。

事后来看,我们可以看到我的解决方案确实与一些已经给出的问题大致相关。

将代码行转换为手动给定的命令

ipconfig /all > "C:\Alans Folder\test1.txt"

这似乎有用

这也是可行的

ipconfig /all > C:\AlansFolder\test1.txt

这并不

ipconfig /all > C:\Alans Folder\test1.txt

这个最终的形式也可以工作,并与sacra的解决方案联系在一起....”您必须在每个路径周围添加引号,并将整个命令用引号“.....”括起来

cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""

我更喜欢在()中附上命令,这是有效的批处理,这使得它更容易阅读:

cmd /C ("C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*")

尝试用双引号提供复杂的路径名(并在文件末尾包含文件扩展名)。

的文件:

call "C:\example file.exe"

目录:

cd "C:\Users\User Name\New Folder"

CMD将带有双引号(“xyz”)的文本解释为一个字符串,将带有单引号(“xyz”)的文本解释为一个命令。 例如:

FOR %%A in ('dir /b /s *.txt') do ('command') FOR %%A in ('dir /b /s *.txt') do (echo "%%A")

还有一个好处,cmd不像bash那样区分大小写。所以New fiLE.txt和New fiLE.txt是相似的。

*注:上述大小写中的%%A变量是区分大小写的(%%A不等于%%A)。