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?

JosephStyons
la source

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.

Tim Farley
la source
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.

Ferruccio
la source
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.

ghostdog21
la source
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

JustAnotherMikhail
la source
@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.

BitDreamer
la source
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

Mack
la source
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

Mustafa Kemal
la source
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

Mrbios
la source
-1

/b paramètre

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
T.Todua
la source
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"

?

albertein
la source
-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"
Mark Allen
la source
-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.

Rafael Pereira
la source
1
Que se passe-t-il si le logiciel est mis à jour? Soudain, vous avez un virtualpc.exe orphelin.
Michael Beck