使用 Start-Process 的 ArgumentList 参数时路径中的空格引发错误
Spaces in path throwing error when using ArgumentList parameter of Start-Process
在我的个人资料中,我有以下功能:
function Start-VS {
param ([string]$sln, [switch]$UseNineteen )
if ($UseNineteen) {
$vs = "c:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\devenv.exe"
$vsWorkDir = "c:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\"
}
else {
$vs = "C:\Program Files\Microsoft Visual Studio22\Preview\Common7\IDE\devenv.exe"
$vsWorkDir = "C:\Program Files\Microsoft Visual Studio22\Preview\Common7\IDE\"
}
if (-Not ([string]::IsNullOrEmpty($sln))) {
$TestP = (Test-Path $sln)
if ( $TestP -eq $True) {
$FullPath = Convert-Path $sln
Start-Process $vs -WorkingDirectory $vsWorkDir -ArgumentList $FullPath
}
else {
Write-Output $FullPath
Write-Output "Please use a correct pathway to a solution file"
}
}
else {
Start-Process $vs -WorkingDirectory $vsWorkDir
}
}
要从 PS 提示符调用它,我正在执行以下操作:
start-vs -sln "C:\demos\m02 arrays\Example.sln"
Visual studio 打开但抱怨找不到文件 - 我知道这是因为 m02 数组 中的 space - 我该如何改变函数,以便它可以处理 spaces?
改变
Start-Process $vs -WorkingDirectory $vsWorkDir -ArgumentList $FullPath
至
Start-Process $vs -WorkingDirectory $vsWorkDir -ArgumentList "`"$FullPath`""
注意 $FullPath
周围的转义 "。这将包括周围的引号,作为包含空格的路径(或其他字符串)所需的参数的一部分发送
在我的个人资料中,我有以下功能:
function Start-VS {
param ([string]$sln, [switch]$UseNineteen )
if ($UseNineteen) {
$vs = "c:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\devenv.exe"
$vsWorkDir = "c:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\"
}
else {
$vs = "C:\Program Files\Microsoft Visual Studio22\Preview\Common7\IDE\devenv.exe"
$vsWorkDir = "C:\Program Files\Microsoft Visual Studio22\Preview\Common7\IDE\"
}
if (-Not ([string]::IsNullOrEmpty($sln))) {
$TestP = (Test-Path $sln)
if ( $TestP -eq $True) {
$FullPath = Convert-Path $sln
Start-Process $vs -WorkingDirectory $vsWorkDir -ArgumentList $FullPath
}
else {
Write-Output $FullPath
Write-Output "Please use a correct pathway to a solution file"
}
}
else {
Start-Process $vs -WorkingDirectory $vsWorkDir
}
}
要从 PS 提示符调用它,我正在执行以下操作:
start-vs -sln "C:\demos\m02 arrays\Example.sln"
Visual studio 打开但抱怨找不到文件 - 我知道这是因为 m02 数组 中的 space - 我该如何改变函数,以便它可以处理 spaces?
改变
Start-Process $vs -WorkingDirectory $vsWorkDir -ArgumentList $FullPath
至
Start-Process $vs -WorkingDirectory $vsWorkDir -ArgumentList "`"$FullPath`""
注意 $FullPath
周围的转义 "。这将包括周围的引号,作为包含空格的路径(或其他字符串)所需的参数的一部分发送