ho capito la tua domanda sia: Come passare più argomenti per avviare un processo in cui uno degli argomenti ha spazi?
Sto assumendo l'equivalente in un file batch di Windows sarebbe qualcosa di simile:
"%setupFilePath%" -a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss"
dove le virgolette consentono il processo di ricezione (setupFilePath in questo caso) per ricevere tre argomenti:
-a
-s
-f1"d:\some directory\with blanks in a path\fileVCCS.iss"
per raggiungere questo obiettivo con il frammento di codice nella sua domanda vorrei usare di nuovo le zecche (alla sinistra del 1 e sotto il tasto Esc, da non confondere con una sola offerta; aka Grave-accento) per sfuggire le virgolette doppie interne come questo:
$process = [System.Diagnostics.Process]::Start("$setupFilePath", "-a -s -f1`"d:\some directory\with blanks in a path\fileVCCS.iss`"")
$process.WaitForExit()
Si noti che oltre a utilizzare di nuovo le zecche Ho cambiato anche le virgolette singole intorno alla vostra lista di argomenti a doppi apici. Ciò era necessario perché le virgolette singole non consentono le fughe di cui abbiamo bisogno qui (http://ss64.com/ps/syntax-esc.html).
Aaron's answer dovrebbe funzionare bene. In caso contrario, suppongo che setupFilePath non interpreti -f1"d:\space here\file.ext"
come previsto.
PARERE ALERT L'unica cosa che vorrei aggiungere alla sua risposta è di suggerire utilizzando i doppi apici e zecche di nuovo, al fine di consentire l'utilizzo di una variabile all'interno del percorso per la discussione -f1
:
Start-Process -FilePath $setupFilePath -ArgumentList '-a','-s',"-f1`"$pathToVCCS`"" |
Wait-Process
In questo modo si non avrà un percorso assoluto e codificato nel mezzo di una lunga linea.
Provare a utilizzare il cmdlet 'Start-Process'. 'Start-Process -FilePath" yourPath "-ArgumentList" arg1 arg2 "' – Naigel
triyng ma senza successo. Puoi fare un esempio? – vklu4itesvet