2

cmd.exePowerShellを使用してコマンドを実行する際に問題が発生しています。問題は、コマンドへのパスにスペースが含まれていることです。PowerShell の一般的な問題のようです。以下は抜粋です。

$base_dir = resolve-path ..\  # this path has spaces in it 
$msdeploy = $base_dir\tools\msdeploy\msdeploy.exe

cmd.exe /c $("""$msdeploy"" -verb:sync -source:....")

msdeployスクリプトは継続的インテグレーション プロセスで使用されるため、変数を介して解決するためのパスが必要です。

スペースがあるため、コマンドは実行されません。コマンドを (引用符) でラップしようとしました""が、まだ運がありません。$msdeployこのインスタンスで変数をフォーマットするにはどうすればよいですか?

4

2 に答える 2

2

コマンドをバックティック "" で囲むと、コマンドが機能するはずです。

cmd.exe /c "`"$msdeploy`" -verb:sync -source:..."
于 2012-08-07T13:19:47.160 に答える
2

次のように $() を使用してすべてを呼び出してみてください。

$base_dir = resolve-path ..\  # this path has spaces in it 
$msdeploy = $($base_dir)\tools\msdeploy\msdeploy.exe

cmd.exe /c $("$($msdeploy) -verb:sync -source:....")

編集: コマンド全体を $msdeploy 変数に移動し、引用符をエスケープして $msdeploy を呼び出しました。同様の問題があるこのリンクを見つけたので、そこで機能するものに合わせてコードを調整しました。

$base_dir = resolve-path ..\
$msdeploy = $("`"" + $base_dir.Path + "\tools\msdeploy\msdeploy.exe`" -verb:sync -source:....")

cmd.exe /c "`"$msdeploy`""
于 2012-08-07T14:57:01.977 に答える