Démarrer le processus avec args qui contient un chemin avec des espaces
J'ai besoin de lancer un processus à partir d'un script powershell et transmet ces params :
-a-s f1d:\un répertoire\avec les blancs dans un chemin\fichier.iss
pour ce faire, j'écris le code suivant :
$process = [System.Diagnostics.Process]::Start("$setupFilePath", '-a -s -f1"d:\some directory\with blanks in a path\fileVCCS.iss"')
$process.WaitForExit()
en conséquence, le processus démarre, mais le dernier argument : -f1d:\un répertoire\avec les blancs dans un chemin\fichier.iss
ne passe pas correctement. De l'aide, veuillez
source d'informationauteur vklu4itesvet
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez utiliser
Start-Process
:Je comprends votre question à:
Comment passer plusieurs arguments pour démarrer un processus où l'un des arguments des espaces?
Je suis en supposant que l'équivalent dans un fichier de commandes Windows serait quelque chose comme:
où les guillemets permettent le processus de réception (setupFilePath dans ce cas) pour recevoir trois arguments:
-a
-s
-f1"d:\some directory\with blanks in a path\fileVCCS.iss"
Pour accomplir ceci avec l'extrait de code dans votre question que je voudrais utiliser les tiques (à gauche de la 1 et en dessous de la touche d'échappement, à ne pas confondre avec une apostrophe; aka la Tombe d'accent) pour échapper à l'intérieur des guillemets comme ceci:
Noter qu'en plus de l'aide de retour tiques j'ai aussi changé les guillemets simples autour de votre liste d'arguments pour les guillemets. Cela était nécessaire parce que les guillemets simples ne permettent pas de les évasions dont nous avons besoin ici (http://ss64.com/ps/syntax-esc.html).
Aaron répondre devrait fonctionner parfaitement. Si elle ne fonctionne pas, alors je suppose que setupFilePath n'est pas interpretting
-f1"d:\space here\file.ext"
comme vous l'attendez.AVIS d'ALERTE La seule chose que je voudrais ajouter à sa réponse est de proposer à l'aide de guillemets doubles et à l'arrière tiques afin de permettre l'utilisation d'une variable dans le chemin d'accès pour l'argument
-f1
:De cette façon, vous n'aurez pas codé en dur, le chemin d'accès absolu au milieu d'une longue ligne.
Sur PowerShell v3, cela fonctionne:
À l'aide de la PSCX echoargs commande affiche ceci:
Sur V2 utilisation - notez l'ajout d'un backtick sur la dernière double citation: