Answers:
在这种情况下,单引号不会起作用。您必须在每个路径周围添加引号,并将整个命令括在引号中:
cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
cmd /C
CEEMEA & LATAM.doc
。我该怎么办?"C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
如果双引号不能解决问题,请尝试例如
dir /X ~1 c:\
获取备用文件或目录名称的列表。输出示例:
11/09/2014 12:54 AM 8,065 DEFAUL~1.XML Default Desktop Policy.xml
06/12/2014 03:49 PM <DIR> PROGRA~1 Program Files
10/12/2014 12:46 AM <DIR> PROGRA~2 Program Files (x86)
现在,在命令的第5列中使用简短的8个字符的文件或文件夹名称,例如PROGRA〜1或DEFAUL〜1.XML。例如:
set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45
用双引号将包含空格的路径括起来。
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Rar.exe
实际上是什么。您可能错误地使用了它。也许尝试"D:\Hello 2\"
还是"D:\Hello 2"
代替"D:\Hello 2\*.*"
?
CEEMEA & LATAM.doc
。应该是什么 "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
尝试在双引号中提供复杂的路径名(并在文件末尾添加文件扩展名。)
对于文件:
call "C:\example file.exe"
对于目录:
cd "C:\Users\User Name\New Folder"
CMD将带双引号(“ xyz”)的文本解释为一个字符串,将带单引号('xyz')的文本解释为命令。例如:
FOR %% A在('dir / b / s * .txt')中执行('command')
FOR %% A in('dir / b / s * .txt')do(echo“ %% A”)
一件好事,cmd不像bash一样区分大小写。因此,“ New fiLE.txt”和“ new file.TXT”是相似的。
*注意:以上情况下的%% A变量区分大小写(%% A不等于%% a)。
您应该尝试使用引号。
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
推荐提示中的空格(在VBA Shell命令行中)
我有一个非常类似的问题,当通过VBA自动将命令窗口中的内容转换成文本文件时,最终在命令提示符中出现了空格。这个线程是我遇到的很多方法之一,但并没有为我提供解决方案。
因此,这可能会对其他有类似问题的人有所帮助:由于带引号的语法总是很难正确理解,我认为显示一些特定的示例总是有用的。您通过Shell事情在VBA中使用命令提示符时遇到的另一个问题是,当出现问题时,代码行通常不会出错:实际上,黑色推荐窗口的闪烁会误导您认为已完成某件事。
例如...说我有一个文件夹,其中有一个文本文件,例如
C:\ Alans文件夹\ test1.txt( https://imgur.com/FELSdB6 )
文件夹名称中的空格会出现问题。
假设Folder 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""