powershell - script - cmdlet 이란



공백이있는 경로가 포함 된 args로 프로세스 시작 (2)

PowerShell v3에서는 다음과 같이 작동합니다.

& $setupFilePath -a -s -f1:"d:\some directory\with blanks in a path\fileVCCS.iss"

PSCX echoargs 명령을 사용하면 다음 같이 표시됩니다.

25> echoargs.exe -a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss"
Arg 0 is <-a>
Arg 1 is <-s>
Arg 2 is <-f1d:\some directory\with blanks in a path\fileVCCS.iss>

Command line:
"C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe"  -a -s "-f1d:\some directory\with blanks in a path\fileVCCS.iss"

V2 사용시 - 마지막 큰 따옴표에 백틱을 추가합니다.

PS> echoargs.exe -a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss`"
Arg 0 is <-a>
Arg 1 is <-s>
Arg 2 is <-f1d:\some directory\with blanks in a path\fileVCCS.iss>

Command line:
"C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe"  -a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss"

https://ffff65535.com

PowerShell 스크립트에서 프로세스를 시작하고 그러한 매개 변수를 전달해야합니다. -a -s f1d : \ some directory \ 경로 \ file.iss에 공백이 있으면 다음 코드를 작성합니다.

$process = [System.Diagnostics.Process]::Start("$setupFilePath", '-a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss"') 
$process.WaitForExit()

결과적으로 프로세스가 시작되지만 마지막 인수 인 -f1d : \ some directory \와 경로 \ file.iss의 공백이 올바르게 전달되지 않습니다. 도와주세요


귀하의 질문을 이해 : 여러 인수를 전달하는 인수 중 하나가 공백이있는 프로세스를 시작하는 방법?

윈도우 배치 파일에서 다음과 같은 것을 가정합니다 :

"%setupFilePath%" -a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss"

여기서 큰 따옴표는 수신 프로세스 (이 경우 setupFilePath )가 세 개의 인수를 수신하도록 허용합니다.

  1. -a
  2. -s
  3. -f1"d:\some directory\with blanks in a path\fileVCCS.iss"

귀하의 질문에 코드 스 니펫을 사용하여 이것을 달성하기 위해 나는이 괄호 안의 따옴표를 벗어나기 위해 뒤로 틱 ( 1의 왼쪽과 이스케이프 키 아래, 작은 따옴표와 혼동하지 말 것, 일명 무덤 액센트 )을 사용합니다. :

$process = [System.Diagnostics.Process]::Start("$setupFilePath", "-a -s -f1`"d:\some directory\with blanks in a path\fileVCCS.iss`"") 
$process.WaitForExit()

백 틱을 사용하는 것 외에도 인자 목록 주위의 작은 따옴표를 큰 따옴표로 변경했습니다. 작은 따옴표로 인해 여기에 필요한 이스케이프가 허용되지 않기 때문에이 작업이 필요했습니다 ( http://ss64.com/ps/syntax-esc.html ).

Aaron의 대답 은 잘 작동합니다. 그렇지 않으면 setupFilePath-f1"d:\space here\file.ext" 를 예상대로 해석하지 않는다고 생각합니다.

설명 경고 내가 그의 대답에 추가 할 수있는 유일한 방법은 큰 따옴표와 뒷 틱을 사용하여 경로 내에서 변수 -f1 의 변수를 사용할 수있게하는 것입니다.

Start-Process -FilePath $setupFilePath -ArgumentList '-a','-s',"-f1`"$pathToVCCS`"" |
Wait-Process

이렇게하면 긴 줄의 중간에 하드 코딩 된 절대 경로가 생기지 않습니다.





command-line-arguments