我有一个安装一些东西的PowerShell脚本。在尝试调用名称中包含空格的路径的.exe文件时出错:
try
{
cmd /c "C:\Program Files\myfile.exe" -i "C:\myconfig.sql"
}
它提供的错误是:
'C:\ Program'未被识别为内部或外部命令, 可操作程序或批处理文件。
当我将路径括在引号中时,为什么它会绊倒文件路径中的空间?
答案 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