Comment créer un fichier batch sous Windows en utilisant "start" avec un chemin et une commande avec des espaces

StackOverflow https://stackoverflow.com/questions/72671

  •  09-06-2019
  •  | 
  •  

Question

Je dois créer un fichier de commandes qui démarre plusieurs applications de console dans un fichier Windows .cmd. Cela peut être fait en utilisant la commande de démarrage.

Cependant, la commande contient un chemin. J'ai aussi besoin de passer des paramères qui ont aussi des espaces. Comment faire cela?

E.g. fichier batch

start "c:\path with spaces\app.exe" param1 "param with spaces"
Était-ce utile?

La solution

En fait, son exemple ne fonctionnera pas (même si au début, je pensais qu'il en serait de même). En fonction de l'aide pour la commande Démarrer, le premier paramètre est le nom de la fenêtre d'invite de commande nouvellement créée et les deuxième et troisième doivent être le chemin d'accès à l'application et ses paramètres, respectivement. Si vous ajoutez un autre " " avant le chemin de l'application, ça devrait marcher (du moins ça l'a fait pour moi). Utilisez quelque chose comme ceci:

start "" "c:\path with spaces\app.exe" param1 "param with spaces"

Vous pouvez modifier le premier argument pour définir le titre de la nouvelle invite de commande. S'il s'agit d'une application Windows créée, l'invite de commande ne s'affichera pas et le titre n'aura pas d'importance.

Autres conseils

Échapper le chemin avec des apostrophes est correct, mais la commande de démarrage prend un paramètre contenant le titre de la nouvelle fenêtre. Ce paramètre est détecté par les apostrophes environnantes. Votre application n'est donc pas exécutée.

Essayez quelque chose comme ça:

start "Dummy Title" "c:\path with spaces\app.exe" param1 "param with spaces"
start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe"

Lorsque j'ai utilisé la suggestion ci-dessus, j'ai:

  

'c: \ path' n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.

Je pense que le deuxième point de contrôle empêche l'exécution de la commande. Après quelques recherches, la solution ci-dessous sauve ma journée:

start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe"

Fait intéressant, il semble que dans Windows Embedded Compact 7, vous ne pouvez pas spécifier de chaîne de titre. Le premier paramètre doit être la commande ou le programme.

Vous devez utiliser quelque chose comme ceci:

  

Démarrer / d C: \ Windows \ System32 \ calc.exe

     

start / d "C: \ Program Files \ Mozilla

     

Firefox " firefox.exe start / d

     

" C: \ Program Files \ Microsoft

     

Office \ Office12 " EXCEL.EXE

Je vous conseille également d'utiliser un éditeur de fichiers de traitement par lots spécial - Dr.Batcher

.

Entourez le chemin et l'argument avec des espaces entre guillemets, comme vous devriez le faire dans votre exemple. La commande peut avoir besoin de gérer les guillemets lorsque les paramètres lui sont transmis, mais ce n'est généralement pas une grosse affaire.

J'ai effectué des recherches avec succès et cela fonctionne très bien pour moi. Mon exigence est d'envoyer un email en utilisant vbscript qui doit être appelé depuis un fichier batch sous Windows. Voici la commande exacte que j'utilise, sans erreur.

START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top