【问题标题】:How to pass directory path that have space to windows shell?如何将有空间的目录路径传递给 Windows shell?
【发布时间】:2011-03-02 05:13:12
【问题描述】:

我正在使用 IEcapt.exe 来捕获网站快照。 问题是,它无法处理有空间的路径目录。像这样:

c:\program files\

有什么方法可以传递这样的目录以使其工作吗?

【问题讨论】:

    标签: windows windows-shell


    【解决方案1】:

    通常只使用双引号 Windows 路径即可:

    IEcapt.exe "C:\Program Files\some path"
    

    如果这真的不起作用,您也许可以使用 8.3 filename 或者在程序文件的情况下使用 %programfiles% 变量。

    【讨论】:

    • 更新了来自 Wayback Machine 的链接。
    【解决方案2】:

    见小次郎的回复。但是,如果您真的不能使用空格或长文件名,这里有一个技巧,因为您调用的工具不支持。我用 MS 的一些构建工具遇到过这种情况。

    由于短文件名不允许包含空格,我们可以使用:

    %~sI
    

    ... 其中I 是当前子(或脚本)的参数编号。由于这是一项仅适用于编号参数的功能,因此您可能必须使用间接寻址,例如:

    call :mysub "%ProgramFiles%"
    
    :mysub
    set VARIABLE=%~s0
    goto :eof
    

    【讨论】:

      【解决方案3】:

      小次郎的回答有效。但就我而言,我需要

      IEcapt.exe "%programfiles%\some path"
      

      而不是

      IEcapt.exe %programfiles%\some path
      

      例如,第二个示例使用echo 命令在屏幕上打印整个路径,但我需要第一个示例将其正确传递给我的脚本。

      【讨论】:

        【解决方案4】:

        我希望我可以使用上述方法之一。但是,我只能使用旧的 DOS 短名称。

        超过 8 个字符的 DOS 文件名被截断为文件的 ~number。例如,C:\Program Files 为 c:\progra~1,C:\Program Files (x86) 为 c:\progra~2。

        您可以使用DIR /X 命令找到文件的短名称。

        我特别需要这个来从 Atom 文本编辑器中启动 ConEmu。

        我从 Sachleen 的回答 HERE 中得出这种方法

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-30
          • 2016-12-23
          • 1970-01-01
          • 2020-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-28
          相关资源
          最近更新 更多