文件路径中的空间上的PowerShell或CMD错误

时间:2017-09-28 14:50:23

标签: powershell batch-file cmd

我有一个安装一些东西的PowerShell脚本。在尝试调用名称中包含空格的路径的.exe文件时出错:

try
{
    cmd /c "C:\Program Files\myfile.exe" -i "C:\myconfig.sql"
}

它提供的错误是:

  

'C:\ Program'未被识别为内部或外部命令,   可操作程序或批处理文件。

当我将路径括在引号中时,为什么它会绊倒文件路径中的空间?

1 个答案:

答案 0 :(得分:2)

PowerShell将删除外部引号,您可以看到here

这与find.exe doesn't work as expected in PowerShell

的原因相同

您需要在单引号中嵌入双引号,或者使用`backticks`或双引号加倍来转义双引号:

  • cmd /c '"C:\Program Files\myfile.exe"' -i '"C:\myconfig.sql"'
  • cmd /c "`"C:\Program Files\myfile.exe`"" -i "`"C:\myconfig.sql`""
  • cmd /c "`"C:\Program Files\myfile.exe`"" -i `"C:\myconfig.sql`"
  • cmd /c """C:\Program Files\myfile.exe""" -i C:\myconfig.sql
  • ...

您还可以使用PowerShell 3.0's verbatim arguments symbol

cmd /c --% "C:\Program Files\myfile.exe" -i "C:\myconfig.sql"

有关PowerShell中引用规则的更多信息,请here

但是,除非您需要dir for try { "C:\Program Files\myfile.exe" -i "C:\myconfig.sql" } -webkit-font-feature-settings: "liga" 0, "clig" 0; -moz-font-feature-settings: "liga" 0, "clig" 0; font-feature-settings: "liga" 0, "clig" 0; ,否则您应该避免通过cmd调用。只需直接从PowerShell调用该程序:

DialogResult