92

スペースを含むパスで exe を呼び出すと、powershell で問題が発生します。

PS C:\Windows Services> invoke-expression "C:\Windows Services\MyService.exe"

「C:\Windows」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから再試行してください。

「Windows」と「サービス」の間のスペースで分割されているようです。この問題を回避する方法はありますか?

4

15 に答える 15

143

これはあなたが望むことをしますか?:

& "C:\Windows Services\MyService.exe"

受け入れられた回答のように、名前またはパスが引用符で囲まれた文字列に格納されているか、変数を介して参照されているコマンドを呼び出す&には、 call operatorを使用します。Invoke-Expressionこの特定のケースで使用するのは間違ったツールであるだけでなく、一般的に避けるべきです。

于 2013-08-30T16:08:01.863 に答える
31

スペースの前に一重引用符とバッククォートを使用して、スペースをエスケープできます。

$path = 'C:\Windows Services\MyService.exe'
$path -replace ' ', '` '
invoke-expression $path
于 2013-08-30T16:13:16.800 に答える
3

Invoke-Expression がうまく機能するので、私が使用したハックがあります。

現在の場所をスペースを含むパスに設定し、式を呼び出し、以前の場所に戻って続行できます。

$currLocation = Get-Location
Set-Location = "C:\Windows Services\"
Invoke-Expression ".\MyService.exe"
Set-Location $currLocation

これは、exe の名前にスペースが含まれていない場合にのみ機能します。

お役に立てれば

于 2014-11-17T21:04:47.550 に答える
1

次のように、パスを cd の前に二重引用符で囲みます。

cd "C:\Users\MyComputer\Documents\Visual Studio 2019\Projects"

于 2021-01-31T18:08:43.373 に答える