Utilisation de la commande «start» avec des paramètres passés au programme démarré


224

J'ai une machine virtuelle dans Virtual PC 2007.

Pour le démarrer à partir du bureau, j'ai la commande suivante dans un fichier batch:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

Mais cela laisse une invite DOS sur la machine hôte jusqu'à ce que la machine virtuelle s'arrête et que je quitte la console Virtual PC. C'est ennuyeux.

J'ai donc changé ma commande pour utiliser la commande START, à la place:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Mais cela étouffe les paramètres passés dans Virtual PC.

START /?indique que les paramètres vont bien à cet endroit. Quelqu'un a-t-il utilisé START pour lancer un programme avec plusieurs arguments de ligne de commande?

Réponses:


467

START a une particularité impliquant des guillemets doubles autour du premier paramètre. Si le premier paramètre a des guillemets doubles, il l'utilise comme TITRE facultatif pour la nouvelle fenêtre.

Je crois que ce que vous voulez c'est:

start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

En d'autres termes, donnez-lui un titre vide avant le nom du programme pour le simuler.


2
Est-ce obsolète? Dans Win 7, je reçoisStart-Process : Cannot validate argument on parameter 'FilePath'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again
geotheory

1
Qui aurait imaginé. Seul le nombre de votes positifs à votre réponse devrait être une raison suffisante pour que Microsoft corrige cette «particularité».
Piyush Soni

7
@geotheory Je me rends compte que c'est un vieux commentaire, mais dans PowerShell, start est un alias pour Start-Process. Dans cmd.exe (un peu désuet, mais pas obsolète), "start" est différent. Ils sont tous deux destinés à démarrer d'autres processus, mais start est une ancienne commande intégrée dans cmd.
Adam Plocher

Cela m'a causé beaucoup de maux de tête. Merci pour la solution!
uceumern

15

Au lieu d'un fichier de commandes, vous pouvez créer un raccourci sur le bureau.

Définissez la cible sur:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

et vous êtes prêt. Comme vous ne démarrez pas une invite de commande pour le lancer, il n'y aura pas de boîte DOS.


3

Les espaces sont des problèmes DOS / CMD, vous devez donc vous rendre sur le chemin via:

cd "c:\program files\Microsoft Virtual PC"

puis démarrez simplement VPC via:

start Virtual~1.exe -pc MY-PC -launch

~1signifie le premier exeavec "Virtual"au début. Donc, s'il y a un "Virtual PC.exe"et un, "Virtual PC1.exe"le premier serait le Virtual~1.exeet le second Virtual~2.exeet ainsi de suite.

Ou utilisez un client VNC comme VirtualBox.


1
Cela ressemble à une solution de contournement raisonnable, mais cela ne résout pas vraiment le problème sous-jacent, qui est couvert par la réponse acceptée.
Sam

1
cela ne fonctionnera pas si les noms de fichiers courts ne sont pas activés. Je désactive toujours les noms de fichiers 8.3 dans mes systèmes
phuclv

1

Aucune de ces réponses n'a fonctionné pour moi.

Au lieu de cela, j'ai dû utiliser la commande Call:

Call "\\Path To Program\Program.exe" <parameters>

Je ne suis pas sûr que cela attend la fin ... le redistribuable C ++ que j'installais est allé assez vite pour que cela n'ait pas d'importance


@rene merci pour la modification. Si j'ajoute d'autres réponses, je serai sûr d'utiliser le format de bloc de code
JustAnotherMikhail

0

La réponse en "particularité" est correcte et répond directement à la question. Comme TimF a répondu, puisque le premier paramètre est entre guillemets, il est traité comme un titre de fenêtre.

Notez également que les options Virtual PC sont traitées comme des options pour la commande «start» elle-même et ne sont pas valides pour «start». Cela est vrai pour toutes les versions de Windows qui ont la commande «start».

Ce problème avec «commencer» à traiter le paramètre cité comme un titre est encore plus ennuyeux que le problème affiché. Si vous exécutez ceci:

start "some valid command with spaces"

Vous obtenez une nouvelle fenêtre d'invite de commandes, avec le résultat évident pour un titre de fenêtre. Encore plus ennuyeux, cette nouvelle fenêtre n'hérite pas de police, de couleurs ou de taille de fenêtre personnalisées, c'est juste la valeur par défaut pour cmd.exe.


0

Si vous voulez passer le paramètre et votre fichier .exe dans le dossier de test du lecteur c:

start "parameter" "C:\test\test1.exe" -pc My Name-PC -launch

Si vous ne voulez pas passer le paramètre et votre fichier .exe dans le dossier de test du lecteur c:

start "" "C:\test\test1.exe" -pc My Name-PC -launch

Si vous ne voulez pas passer de paramètre et votre fichier .exe dans le dossier de test du lecteur H: (tout autre)

start "" "H:\test\test1.exe" -pc My Name-PC -launch


0

Si vous devez utiliser un guillemet double à n'importe quel paramètre, vous pouvez obtenir l'erreur "'c: \ somepath' n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier de commandes". Je suggère la solution ci-dessous lors de l'utilisation du double point de repère: https://stackoverflow.com/a/43467194/3835640


0

Vous pouvez utiliser des guillemets en utilisant l'utilisation [ /D"Path"] /D uniquement pour spécifier le chemin d'accès et non le programme path +. Il semble que tout le code sur la même ligne qui suit revient à la normale, ce qui signifie que vous n'avez pas besoin de séparer le chemin et le fichier.

    start  /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

ou:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

démarrera IE avec la page Web par défaut.

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE www.bing.com

commence par Bing, mais ne réinitialise pas votre page d'accueil.

/D signifie "répertoire" et l'utilisation de guillemets est OK!

EXEMPLE MAUVAIS:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\IEXPLORE.EXE"

donne:

ERREUR " Le répertoire actuel n'est pas valide. "

/Dne doit être suivi que d'un chemin de répertoire. Ensuite, l'espace et le fichier batch ou le programme que vous souhaitez démarrer / exécuter

Testé et fonctionne sous XP mais Windows Vista / 7/8 peut nécessiter quelques ajustements à l'UAC.

-Mrbios


-1

/b paramètre

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

Que fait ce paramètre?
Azeezah M

3
@AzeezahM / b signifie qu'une nouvelle fenêtre cmd ne sera pas ouverte. Cela ne répond cependant pas à la question de l'op.
aclave1

-4

as-tu essayé:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" "-pc MY-PC -launch"

?


-4

Placez la commande dans un fichier de commandes et appelez-la avec les paramètres.

Avez-vous déjà essayé cela? (Déplacer le guillemet final pour encapsuler les paramètres)

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"

-4

Remplacez le "Virtual PC.exe" par un nom sans espace comme "VirtualPC.exe" dans le dossier. Lorsque vous écrivez start "path"avec "", le CMD ouvre une nouvelle fenêtre cmd avec le chemin comme titre. Changez le nom en un nom sans espace, écrivez ceci sur le Bloc-notes et après cela enregistrez comme Name.cmd ou Name.bat:

CD\
CD Program Files
CD Microsoft Virtual PC
start VirtualPC.exe
timeout 2
exit

Cette commande redirige le CMD vers le dossier, démarre le VirualPC.exe, attend 2 secondes et quitte.


1
Que se passe-t-il si le logiciel est mis à jour? Soudain, vous avez un virtualpc.exe orphelin.
Michael Beck
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.