我在PowerShell中使用invoke-expression
来创建存档,但由于exe路径中的空格,它无法正常工作。这些是我的变量:
Set-Variable -name DIRRELEASE -value (Join-Path $env:UserProfile "\Documents\Coding\_Projects\ChickenPing\trunk\Dist\current\")
$srcPath = (Join-Path $DIRRELEASE ("myapp_1.90-src.zip"))
Set-Variable -name WinRarFilter -value "-x*\.svn -x*\.svn\* -x*\nutrition.db3"
Set-Variable -name WinRarOpts -value "-r -s -m5 -inul"
$WinRar = `"C:\Program Files\Winrar\winrar.exe`"
#Then using this to invoke:
Invoke-Expression ($WinRAR + " a " + $srcPath + " " + $WinRARFilter + " * " + $WinRAROpts)
当我运行脚本时,我收到此错误:
术语“a”未被识别为cmdlet函数的名称, 脚本文件或可操作程序。检查名称的拼写,或 如果包含路径,请验证路径是否正确并尝试 再次。在行:1 char:3 + a<<<<< C:\ Users \用户Echilon \文件\ Coding_Projects \ MyApp的\主干\ DIST \ C urrent \ myapp_1.95-src.zip -x * .svn -x * .svn * -x * \ nutrition.db3 * -r -s - m5 -inul + CategoryInfo:ObjectNotFound:(a:String)[],CommandNotFoundEx ception + FullyQualifiedErrorId:CommandNotFoundException
我找不到引号和加号的正确组合。
答案 0 :(得分:4)
通过使用调用运算符&
,您可以更轻松地使用它。
& $WinRAR a $srcPath "-x*\.svn" "-x*\.svn\*" "-x*\nutrition.db3" * -r -s -m5 -inul