如何在命令提示符中使用空格?

时间:2011-06-16 17:33:06

标签: windows cmd escaping

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

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

11 个答案:

答案 0 :(得分:216)

在这种情况下,单引号不起作用。您必须在每个路径周围添加引号,并将整个命令括在引号中:

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

答案 1 :(得分:64)

我刚才发现,对于路径涉及使用空格字符的情况,例如,当我需要访问应用xyz时,该位置是:

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

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

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

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

答案 2 :(得分:18)

如果双引号无法解决问题,请尝试例如。

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 

答案 3 :(得分:9)

用包含双引号的空格包含空格。

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

答案 4 :(得分:8)

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

对于文件:

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

目录:

public class CORSPreflightModule : IHttpModule
    {
        private const string OPTIONSMETHOD = "OPTIONS";
        private const string ORIGINHEADER = "ORIGIN";
        private const string ALLOWEDORIGIN = "https://yourspodomain.sharepoint.com";
        void IHttpModule.Dispose()
        {

        }
        void IHttpModule.Init(HttpApplication context)
        {                 
            context.PreSendRequestHeaders += (sender, e) =>
            {
                var response = context.Response;

                if (context.Request.Headers[ORIGINHEADER] == ALLOWEDORIGIN)
                {
                    response.Headers.Add("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");                    
                    response.Headers.Add("Access-Control-Allow-Headers", "Content-Type");                                        
                }
                if (context.Request.HttpMethod.ToUpperInvariant() == OPTIONSMETHOD && context.Request.Headers[ORIGINHEADER] == ALLOWEDORIGIN)
                {
                    response.Headers.Clear();
                    response.Headers.Add("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
                    response.Headers.Add("Access-Control-Allow-Origin", "https://yourspodomain.sharepoint.com");
                    response.Headers.Add("Access-Control-Allow-Credentials", "true");
                    response.Headers.Add("Access-Control-Allow-Headers", "Content-Type");
                    response.Clear();
                    response.StatusCode = (int)HttpStatusCode.OK;
                }                                                             
            };

        }        

    }

它也适用于所有类似的地址问题。 还有一件好事,cmd不像bash那样区分大小写。所以&#34;新的fiLE.txt&#34;和&#34;新文件.TXT&#34;和它一样。

答案 5 :(得分:7)

我更喜欢将命令括在()中,该命令有效batch,这使得它更容易阅读:

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

答案 6 :(得分:2)

set "CMD=C:\Program Files (x86)\PDFtk\bin\pdftk"
echo cmd /K ""%CMD%" %D% output trimmed.pdf"
start cmd /K ""%CMD%" %D% output trimmed.pdf"

这对我来说是一个批处理文件

答案 7 :(得分:1)

你应该尝试使用引号。

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

答案 8 :(得分:0)

只需添加引号

示例:“ C:\ Users \ User Name”

希望它能解决!

答案 9 :(得分:0)

命令提示符中的空格(在VBA Shell命令行中)

我有一个非常相似的问题,当通过VBA自动将命令窗口中的内容转换为文本文件时,最终在命令提示符中出现了空格。这个线程是我遇到的很多方法之一,并没有完全解决我的问题。

所以这可能会对其他有类似问题的人有所帮助:由于带引号的语法总是很难正确理解,我认为显示一些特定的示例总是有用的。 通过Shell事情在VBA中使用命令提示符时遇到的另一个问题是,当出现问题时,代码行通常不会出错:实际上,黑色的推荐窗口闪烁会误以为事情已经完成。

例如……说我有一个文件夹,其中有一个文本文件,例如

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""

答案 10 :(得分:-3)

它可以通过 cd 命令解决这个问题,这个命令可以理解没有双引号的空格,你可以用这种方式调用任何程序,例如:

C:\ Windows \ system32&gt; cd c:\ Program Files \ MongoDB \ Server \ 3.2 \ bin

c:\ Program Files \ MongoDB \ Server \ 3.2 \ bin&gt; mongo 现在命令提示符调用mongo.exe