Quelle est la différence entre les scripts cmd suivants?


10

J'ai essayé de lancer plusieurs programmes via un fichier batch et j'ai rencontré des problèmes mais c'est dans le passé.

Je suis relativement nouveau dans les scripts et les lignes de commande et ce serait ma question: quelle est la différence entre les scripts cmd suivants?

Celui-ci est accepté

Start Chrome

(Je suppose ici que certains programmes installés sont reconnus par leur titre, même si le répertoire n'est pas là où le programme chrome.exe est toujours lancé, les clés de registre y jouent un rôle?)

celui-ci fonctionne aussi

cd "FOO_DIR"
start FOO.exe

mais ceux-ci ne le font pas

start "FOO_DIR\FOO.exe"

(ouvre une nouvelle fenêtre sans lancer FOO.exe)

start /B "FOO_DIR\FOO.exe"

(réécrit le texte du droit d'auteur et ne fait rien d'autre)

(OS Windows 7 x64)

Réponses:


17
Start Chrome

Celui-ci fonctionne, car l'exécutable de Chrome se trouve dans un dossier qui se trouve dans la PATHvariable d'environnement. startrecherche les programmes dans tous les dossiers de cette variable. La variable d'environnement PATHEXTcontient une liste d'extensions de fichiers à rechercher et comme elle .exeest contenue par défaut, vous n'avez pas besoin d'écrire chrome.exe.


start "FOO_DIR\FOO.exe"

Cela ne fonctionne pas, car startutilisera son premier argument comme titre de la fenêtre s'il est cité. Cela ouvrira donc un nouveau CMD avec "FOO_DIR\FOO.exe"comme titre.

Pour contourner cela, vous pouvez simplement ajouter un argument de titre vide avant votre commande:

start "" "FOO_DIR\FOO.exe"

En outre, AFAIR, le titre est obligatoire lors du lancement d'exécutables avec des commutateurs de ligne de commande
résumé

1
Ce n'est pas startqu'attendre un titre comme premier argument (sinon start chromeça ne marcherait pas), c'est que si son premier argument est cité, il s'attend à ce que ce soit un titre.
jamesdlin

@jamesdlin ah, la documentation à ce sujet est un peu vague, merci. J'ai modifié la réponse en conséquence
crater2150

5

Essayez d'ajouter "title"ou au moins ""après startcomme ceci:

start "title" "FOO_DIR\FOO.exe"

ou

start "title" /B  "FOO_DIR\FOO.exe"

La cause première du problème est que le premier argument entre guillemets "" est interprété comme un titleparamètre pour une nouvelle cmdfenêtre.

Il est également utile de regarder la référence de la commande (lien)


Merci, cela a clarifié la différence. Et avec le premier, je pense que "les fichiers non exécutables peuvent être invoqués via leur association de fichiers simplement en tapant le nom du fichier en tant que commande." est la raison pour laquelle juste le nom suffit ... (pas sûr cependant)
M. Smith

Si vous parlez de votre premier exemple avec start chromeje crois que l'appel de chrome fonctionne, car il a une entrée dans le registre quelque part ici: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths Si vous recherchez chrome.exe, vous aurez très probablement recherchez l'entrée contenant le chemin d'accès complet à l'exécutable.
Art Gertner
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.