处理cmd中路径名中的空格

时间:2017-02-08 16:35:01

标签: cmd parameter-passing

includeEnvelopeVoidReason: "true"

当我将IndexWriterConfig更改为C:\Program Files\mu-repo>mu python: can't open file 'C:\Program': [Errno 2] No such file or directory C:\Program Files\mu-repo>cat mu.bat @echo off python %~dp0\mu %* 的绝对路径名时,可以找到批处理文件:

mu.bat

如何继续使用mu.bat,而不用绝对路径名替换它?

感谢。

1 个答案:

答案 0 :(得分:1)

mu.bat更改为以下内容:

@echo off
python "%~dpn0" %*
  • 封闭的"..."可确保将路径识别为单个参数,即使它包含空格。

  • 请注意,我已将n添加到%~dp0,这会添加批处理文件的文件名 root (不带扩展名的文件名) - mu,在这种情况下 - 到结果路径,总体上C:\Program Files\mu-repo\mu

一些旁白:

  • %~dp0等表达式的语法 - 对%0的修改引用,其中包含批处理文件的路径 - 将在您解释时运行help call
    正如aschipfl在对该问题的评论中指出的那样,d部分扩展到目录路径,包括尾随\,因此无需追加一。

  • 双引号%*"%*")传递所有参数,因为这会产生不同的命令行 - 只需使用{{1 as-is(unquoted)。

  • 允许在单个参数中混合双引号和不引用的部分;鉴于%*本身并不需要双引号,mu"%~dp0"mu都可以使用。