web-dev-qa-db-fra.com

Commande pour exécuter un fichier .bat

J'essaie de faire en sorte que mon script de génération Visual Studio exécute un fichier .bat qui fait quelque chose d'important.

Voici ce que je veux faire maintenant:

cd "F:\- Big Packets -\kitterengine\Common\" Template.bat

Mais ça ne marche pas.

Je dois le faire pour que cela fonctionne:

cd "F:\- Big Packets -\kitterengine\Common\"
F:
Template.bat

Mais c'est assez difficile à ajouter au script Visual Studio.

Comment puis-je faire cela en une seule ligne?

19
BingBang32

Peut faire référence à ici: https://ss64.com/nt/start.html

start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat
4
jwgan

"F:\- Big Packets -\kitterengine\Common\Template.bat" peut être précédé de call (voir call /?). Ou Cd /d "F:\- Big Packets -\kitterengine\Common\" & Template.bat.


aide-mémoire CMD

  • Cmd.exe

  • Obtenir de l'aide

  • Ponctuation

  • Nommer des fichiers

  • Programmes de démarrage

  • Clés

CMD.exe

La première chose à retenir est une manière de faire fonctionner un ordinateur. C’est comme cela que nous l’avions fait avant que WIMP (Windows, icônes, souris, menus contextuels) ne soit devenu courant. Il doit ses racines à CPM, VMS et Unix. Il a été utilisé pour démarrer des programmes et copier et supprimer des fichiers. Aussi, vous pouvez changer l'heure et la date.

Pour obtenir de l'aide sur le démarrage de CMD, tapez cmd /?. Vous devez le démarrer avec le commutateur /k ou /c, à moins que vous ne souhaitiez simplement le saisir.

obtenir de l'aide

Pour une aide générale. Tapez Help dans l'invite de commande. Pour chaque commande répertoriée, tapez help <command> (par exemple help dir) ou <command> /? (par exemple dir /?).

Certaines commandes ont des sous commandes. Par exemple, schtasks /create /?.

L'aide de la commande NET est inhabituelle. Taper Net Use /? est une aide brève. Tapez net help use pour obtenir une aide complète. La même chose s'applique à la racine - net /? est aussi une aide brève, utilisez net help.

Les références dans l'aide à un nouveau comportement décrivent les modifications apportées par CMD sous OS/2 et Windows NT4 au CMD actuel (Windows 2000 et versions ultérieures).

WMIC est une commande polyvalente. Tapez wmic /?.


ponctuation

&    seperates commands on a line.

&&    executes this command only if previous command's errorlevel is 0.

||    (not used above) executes this command only if previous command's 
errorlevel is NOT 0

>    output to a file

>>    append output to a file

<    input from a file

2> Redirects command error output to the file specified. (0 is StdInput, 1 is StdOutput, and 2 is StdError)

2>&1 Redirects command error output to the same location as command output. 

|    output of one command into the input of another command

^    escapes any of the above, including itself, if needed to be passed 
to a program

"    parameters with spaces must be enclosed in quotes

+ used with copy to concatenate files. E.G. copy file1+file2 newfile

, used with copy to indicate missing parameters. This updates the files 
modified date. E.G. copy /b file1,,

%variablename% a inbuilt or user set environmental variable

!variablename! a user set environmental variable expanded at execution 
time, turned with SelLocal EnableDelayedExpansion command

%<number> (%1) the nth command line parameter passed to a batch file. %0 
is the batchfile's name.

%* (%*) the entire command line.

%CMDCMDLINE% - expands to the original command line that invoked the
Command Processor (from set /?).

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. 
Single % sign at command Prompt and double % sign in a batch file.

\\ (\\servername\sharename\folder\file.ext) access files and folders via UNC naming.

: (win.ini:streamname) accesses an alternative Steam. Also separates drive from rest of path.

. (win.ini) the LAST dot in a file path separates the name from extension

. (dir .\*.txt) the current directory

.. (cd ..) the parent directory


\\?\ (\\?\c:\windows\win.ini) When a file path is prefixed with \\?\ filename checks are turned off. 

Nom des fichiers

< > : " / \ | Reserved characters. May not be used in filenames.



Reserved names. These refer to devices eg, 

copy filename con 

which copies a file to the console window.

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, 

COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, 

LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9

CONIN$, CONOUT$, CONERR$

--------------------------------

Maximum path length              260 characters
Maximum path length (\\?\)      32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length        255 characters

Démarrer un programme

Voir start /? et call /? pour obtenir de l'aide sur les trois méthodes.

Il existe deux types de programmes Windows - console ou non console (ils sont appelés GUI même s'ils n'en ont pas). Les programmes de console attachés à la console actuelle ou Windows crée une nouvelle console. Les programmes graphiques doivent créer explicitement leurs propres fenêtres.

Si aucun chemin complet n'est donné, Windows cherche dans

  1. Le répertoire à partir duquel l'application a été chargée.

  2. Répertoire actuel du processus parent.

  3. Windows NT/2000/XP: Répertoire système Windows 32 bits. Utilisez la fonction GetSystemDirectory pour obtenir le chemin de ce répertoire. Le nom de ce répertoire est System32.

  4. Windows NT/2000/XP: Répertoire système Windows 16 bits. Aucune fonction n'obtient le chemin de ce répertoire, mais la recherche est effectuée. Le nom de ce répertoire est System.

  5. Le répertoire Windows. Utilisez la fonction GetWindowsDirectory pour obtenir le chemin de ce répertoire.

  6. Les répertoires répertoriés dans la variable d'environnement PATH.

Spécifiez un nom de programme

C'est la méthode standard pour démarrer un programme.

c:\windows\notepad.exe

Dans un fichier batch, le lot attendra la fin du programme. Une fois saisie, la commande Invite n’attend pas la fermeture des programmes graphiques.

Si le programme est un fichier de commandes, le contrôle est transféré et le reste du fichier de commandes appelant n'est pas exécuté.

tiliser la commande de démarrage

Start démarre les programmes de manière non standard.

start "" c:\windows\notepad.exe

Start démarre un programme et n'attend pas. Les programmes de console démarrent dans une nouvelle fenêtre. L'utilisation du commutateur /b force les programmes de la console dans la même fenêtre, ce qui annule l'objectif principal de Démarrer.

Démarrer utilise le shell graphique Windows - comme pour la saisie dans WinKey + R (boîte de dialogue Exécuter). Essayer

start Shell:cache

Les noms de programme enregistrés sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths peuvent également être saisis sans spécifier de chemin complet.

Notez également que le premier ensemble de guillemets, le cas échéant, DOIT être le titre de la fenêtre.

tiliser la commande d'appel

Call est utilisé pour démarrer les fichiers de commandes et attendre leur sortie et continuer le fichier de commandes actuel.

Autres noms de fichiers

Taper un nom de fichier autre que le programme revient à double-cliquer sur le fichier.


Touches

Ctrl + C quitte un programme sans quitter la fenêtre de la console.

Pour les autres touches d'édition, tapez Doskey /?.

  •  et  rappeler des commandes

  • ESC efface la ligne de commande

  • F7 affiche l'historique des commandes

  • ALT+F7 efface l'historique des commandes

  • F8 recherche l'historique des commandes

  • F9 sélectionne une commande par numéro

  • ALT+F10 efface les définitions de macro

Aussi non répertorié

  • Ctrl + ou Bouge un mot à la fois

  • Ctrl + Backspace Supprime le mot précédent

  • Home Début de ligne

  • End Fin de ligne

  • Ctrl + End Supprime jusqu'à la fin de la ligne

28
user6017774

Il existe de nombreuses possibilités pour résoudre cette tâche.

1. LANCEZ le fichier de commandes avec le chemin complet

La solution la plus simple consiste à exécuter le fichier de commandes avec chemin complet.

_"F:\- Big Packets -\kitterengine\Common\Template.bat"
_

Une fois que la fin du fichier de commandes _Template.bat_ est atteinte, il n'y a pas de retour au script précédent si la ligne de commande ci-dessus se trouve dans un fichier * .bat ou * .cmd.

Le répertoire en cours du fichier de commandes _Template.bat_ est le répertoire en cours du processus en cours. Dans le cas où _Template.bat_ requiert que le répertoire de ce fichier de commandes soit le répertoire actuel, le fichier de commandes _Template.bat_ doit contenir après _@echo off_ en deuxième ligne la ligne de commande suivante:

_cd /D "%~dp0"
_

Exécutez une commande dans la fenêtre Invite _cd /?_ pour afficher l'aide de cette commande expliquant le paramètre _/D_ ... dans le répertoire spécifié, également sur un autre lecteur.

Exécuter dans une fenêtre d'invite de commande _call /?_ pour afficher l'aide de cette commande également utilisée dans les solutions 2., 4. et 5. et expliquer également _%~dp0_ ... lecteur et le chemin de l'argument 0 qui est le nom du fichier batch.

2. APPELER le fichier de commandes avec chemin complet

Une autre solution consiste à appeler le fichier de commandes avec chemin complet.

_call "F:\- Big Packets -\kitterengine\Common\Template.bat"
_

La différence par rapport à la première solution réside dans le fait qu'après la fin du fichier de traitement par lots _Template.bat_, le traitement par traitement par lots continue dans le script de traitement par lots contenant cette ligne de commande.

Pour le répertoire actuel lu ci-dessus.

3. Changer le répertoire et exécuter le fichier de commandes avec une ligne de commande

Trois opérateurs peuvent exécuter plusieurs commandes sur une même ligne de commande: _&_, _&&_ et _||_.
Pour plus de détails, voir la réponse à la question ne seule ligne avec plusieurs commandes utilisant un fichier de commandes Windows

Je suggère pour cette tâche l'opérateur _&&_.

_cd /D "F:\- Big Packets -\kitterengine\Common" && Template.bat
_

Comme dans la première solution, il n’ya pas de retour au script actuel s’il s’agit d’un fichier * .bat ou * .cmd et si le changement de répertoire et la poursuite du traitement par lots sur _Template.bat_ ont abouti.

4. Changer le répertoire et le fichier de commandes APPEL avec une ligne de commande

Cette ligne de commande modifie le répertoire et en cas de succès appelle le fichier de commandes.

_cd /D "F:\- Big Packets -\kitterengine\Common" && call Template.bat
_

La différence par rapport à la troisième solution réside dans le retour au script de lot en cours lors de la fin du traitement de _Template.bat_.

5. Changer le répertoire et le fichier de commandes CALL en conservant l’environnement actuel avec une ligne de commande

Les quatre solutions ci-dessus changent le répertoire en cours et on ignore ce que _Template.bat_ fait en ce qui concerne

  1. répertoire actuel
  2. variables d'environnement
  3. etat des extensions de commande
  4. état d'expansion retardée

Dans le cas où il est important de garder l’environnement du script * .bat ou * .cmd en cours non modifié par les modifications _Template.bat_ sur l’environnement, il est conseillé d’utiliser setlocal et endlocal .

Exécuter dans une fenêtre d'invite de commande _setlocal /?_ et _endlocal /?_ pour afficher l'aide de ces deux commandes. Et lisez la réponse sur commande du répertoire de changement cd .. ne fonctionne pas dans un fichier de commandes après l’installation de npm expliquant plus en détail le rôle de ces deux commandes.

_setlocal & cd /D "F:\- Big Packets -\kitterengine\Common" & call Template.bat & endlocal
_

Désormais, seul _&_ au lieu de _&&_ est utilisé, car il est important ici qu'après l'exécution de setlocal, la commande endlocal soit également exécutée.


UNE PLUS DE NOTE

Si le fichier de commandes _Template.bat_ contient la commande exit sans le paramètre _/B_ et que cette commande est réellement exécutée, le processus de commande est toujours quitté indépendamment de la hiérarchie des appels. Assurez-vous donc que _Template.bat_ contient _exit /B_ ou _goto :EOF_ au lieu de simplement exit s'il y a exit utilisé dans ce fichier de commandes.

4
Mofi

Vous pouvez utiliser la commande Cmd pour exécuter le fichier de commandes.

Voici ma façon =>

cmd /c ""Full_Path_Of_Batch_Here.cmd" "

Plus d'informations => cmd /?

0
scientist_7