web-dev-qa-db-de.com

Befehl zum Ausführen einer BAT-Datei

Ich versuche, mein Visual Studio-Erstellungsskript dazu zu bringen, eine .bat-Datei auszuführen, die etwas Wichtiges bewirkt.

Folgendes möchte ich jetzt tun:

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

Aber es geht nicht.

Ich muss dies tun, damit es funktioniert:

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

Es ist jedoch ziemlich schwierig, dies zum Visual Studio-Skript hinzuzufügen.

Wie kann ich das in einer einzigen Zeile machen?

19
BingBang32

Kann sich hier beziehen: 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" Wird möglicherweise mit call eingeleitet (siehe call /?). Oder Cd /d "F:\- Big Packets -\kitterengine\Common\" & Template.bat.


CMD Spickzettel

  • Cmd.exe

  • Hilfe bekommen

  • Interpunktion, Unterbrechung, Zeichensetzung

  • Dateien benennen

  • Programme starten

  • Schlüssel

CMD.exe

Denken Sie als erstes daran, wie Sie einen Computer bedienen. So haben wir es gemacht, bevor WIMP (Windows, Icons, Maus, Popup-Menüs)) üblich wurde. Es verdankt seine Wurzeln CPM, VMS und Unix. Es wurde verwendet, um Programme zu starten und zu kopieren Sie können auch die Uhrzeit und das Datum ändern.

Um Hilfe zum Starten von CMD zu erhalten, geben Sie cmd /? Ein. Sie müssen es entweder mit dem Schalter /k Oder /c Starten, es sei denn, Sie möchten es nur eingeben.

Wie Sie Hilfe bekommen

Für allgemeine Hilfe. Geben Sie Help in die Eingabeaufforderung ein. Geben Sie für jeden aufgeführten Befehl help <command> (Z. B. help dir) Oder <command> /? (Z. B. dir /?) Ein.

Einige Befehle haben Unterbefehle. Zum Beispiel schtasks /create /?.

Die Hilfe des Befehls NET ist ungewöhnlich. Die Eingabe von Net Use /? Ist eine kurze Hilfe. Geben Sie net help use Ein, um die vollständige Hilfe zu erhalten. Gleiches gilt für den Root - net /? Ist auch eine kurze Hilfe, benutze net help.

Verweise in der Hilfe auf neues Verhalten beschreiben Änderungen von CMD in OS/2 und Windows NT4 an der aktuellen CMD in Windows 2000 und höher.

WMIC ist ein Mehrzweckbefehl. Geben Sie wmic /? Ein.


Interpunktion

&    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. 

Dateien benennen

< > : " / \ | 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

Programm starten

Weitere Informationen zu allen drei Möglichkeiten finden Sie unter start /? Und call /?.

Es gibt zwei Arten von Windows-Programmen - Konsole oder Nicht-Konsole (diese werden als GUI bezeichnet, auch wenn sie keine haben). Konsolenprogramme werden an die aktuelle Konsole angehängt oder Windows erstellt eine neue Konsole. GUI-Programme müssen explizit eigene Fenster erstellen.

Wenn kein vollständiger Pfad angegeben ist, sucht Windows nach

  1. Das Verzeichnis, aus dem die Anwendung geladen wurde.

  2. Das aktuelle Verzeichnis für den übergeordneten Prozess.

  3. Windows NT/2000/XP: Das 32-Bit-Windows-Systemverzeichnis. Verwenden Sie die GetSystemDirectory-Funktion, um den Pfad dieses Verzeichnisses abzurufen. Der Name dieses Verzeichnisses ist System32.

  4. Windows NT/2000/XP: Das 16-Bit-Windows-Systemverzeichnis. Es gibt keine Funktion, die den Pfad dieses Verzeichnisses ermittelt, aber es wird gesucht. Der Name dieses Verzeichnisses ist System.

  5. Das Windows-Verzeichnis. Verwenden Sie die GetWindowsDirectory-Funktion, um den Pfad dieses Verzeichnisses abzurufen.

  6. Die Verzeichnisse, die in der Umgebungsvariablen PATH aufgeführt sind.

Geben Sie einen Programmnamen an

Dies ist die Standardmethode zum Starten eines Programms.

c:\windows\notepad.exe

In einer Batch-Datei wartet der Batch darauf, dass das Programm beendet wird. Bei der Eingabe wartet der Befehl Eingabeaufforderung nicht auf das Beenden von Grafikprogrammen.

Wenn das Programm eine Stapeldatei ist, wird die Steuerung übertragen und der Rest der aufrufenden Stapeldatei wird nicht ausgeführt.

Verwenden Sie den Befehl Start

Start startet Programme auf nicht standardmäßige Weise.

start "" c:\windows\notepad.exe

Start startet ein Programm und wartet nicht. Konsolenprogramme werden in einem neuen Fenster gestartet. Mit dem Schalter /b Werden Konsolenprogramme in dasselbe Fenster gezwungen, wodurch der Hauptzweck von Start zunichte gemacht wird.

Start verwendet die grafische Windows-Shell - wie bei der Eingabe in WinKey + R (Dialogfeld "Ausführen"). Versuchen

start Shell:cache

Auch unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths Registrierte Programmnamen können ohne Angabe eines vollständigen Pfades eingegeben werden.

Beachten Sie auch, dass die ersten Anführungszeichen, falls vorhanden, der Fenstertitel sein MÜSSEN.

Aufrufbefehl verwenden

Mit Call werden Batch-Dateien gestartet und gewartet, bis sie beendet sind und die aktuelle Batch-Datei fortgesetzt wird.

Andere Dateinamen

Das Eingeben eines Dateinamens, der kein Programm ist, entspricht dem Doppelklicken auf die Datei.


Schlüssel

Strg + C beendet ein Programm, ohne das Konsolenfenster zu verlassen.

Für andere Bearbeitungstasten geben Sie Doskey /? Ein.

  •  und  Befehle abrufen

  • ESC Löscht die Befehlszeile

  • F7 Zeigt den Befehlsverlauf an

  • ALT+F7 Löscht den Befehlsverlauf

  • F8 Durchsucht den Befehlsverlauf

  • F9 Wählt einen Befehl nach Nummer aus

  • ALT+F10 Löscht Makrodefinitionen

Auch nicht gelistet

  • Ctrl + oder Bewegt ein Wort nach dem anderen

  • Ctrl + Backspace Löscht das vorherige Wort

  • Home Zeilenanfang

  • End Ende der Linie

  • Ctrl + End Löscht bis zum Zeilenende

28
user6017774

Es gibt viele Möglichkeiten, diese Aufgabe zu lösen.

1. Führen Sie die Batch-Datei mit vollem Pfad aus

Die einfachste Lösung ist , die Batch-Datei mit vollem Pfad auszuführen .

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

Sobald das Ende der Batch-Datei Template.bat Erreicht ist, erfolgt keine Rückkehr zum vorherigen Skript, wenn sich die obige Befehlszeile in einer * .bat- oder * .cmd-Datei befindet.

Das aktuelle Verzeichnis für die Batch-Datei Template.bat Ist das aktuelle Verzeichnis des aktuellen Prozesses. Falls Template.bat Erfordert, dass das Verzeichnis dieser Batchdatei das aktuelle Verzeichnis ist, sollte die Batchdatei Template.bat Nach @echo off Als zweite Zeile die folgende Befehlszeile enthalten:

cd /D "%~dp0"

Führen Sie in einem Eingabeaufforderungsfenster cd /? Aus, um die Hilfe dieses Befehls mit der Erläuterung des Parameters /D Anzuzeigen. Wechseln Sie auch auf einem anderen Laufwerk in das angegebene Verzeichnis.

Führen Sie in einem Eingabeaufforderungsfenster call /? Aus, um die Hilfe dieses Befehls anzuzeigen, der auch in der 2., 4. und 5. Lösung verwendet wird, und erklären Sie auch %~dp0 ... Laufwerk und Pfad des Arguments 0 Welches ist der Name der Batch-Datei.

2. RUFEN Sie die Batch-Datei mit dem vollständigen Pfad auf

Eine andere Lösung ist das Aufrufen der Batch-Datei mit vollständigem Pfad.

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

Der Unterschied zur ersten Lösung besteht darin, dass die Stapelverarbeitung nach Erreichen des Endes der Stapeldatei Template.bat In einem Stapelskript fortgesetzt wird, das diese Befehlszeile enthält.

Für das aktuelle Verzeichnis lesen Sie oben.

3. Wechseln Sie das Verzeichnis und die RUN-Batchdatei mit einer Befehlszeile

Es gibt 3 Operatoren, mit denen mehrere Befehle in einer Befehlszeile ausgeführt werden können: &, && Und ||.
Einzelheiten siehe Antwort auf Einzelne Zeile mit mehreren Befehlen unter Verwendung der Windows-Batchdatei

Ich schlage für diese Aufgabe den Operator && Vor.

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

Wie bei der ersten Lösung erfolgt keine Rückkehr zum aktuellen Skript, wenn es sich um eine * .bat- oder * .cmd-Datei handelt und das Ändern des Verzeichnisses und die Fortsetzung der Stapelverarbeitung unter Template.bat Erfolgreich ist.

4. Wechseln Sie das Verzeichnis und die CALL-Batch-Datei mit einer Befehlszeile

Diese Befehlszeile ändert das Verzeichnis und ruft bei Erfolg die Batch-Datei auf .

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

Der Unterschied zur dritten Lösung besteht in der Rückkehr zum aktuellen Batch-Skript, wenn die Verarbeitung von Template.bat Beendet wird.

5. Wechseln Sie das Verzeichnis und die CALL-Batchdatei, wobei Sie die aktuelle Umgebung mit einer Befehlszeile beibehalten

Die vier oben genannten Lösungen ändern das aktuelle Verzeichnis und es ist unbekannt, was Template.bat In Bezug auf tut

  1. aktuelles Verzeichnis
  2. umgebungsvariablen
  3. befehlserweiterungsstatus
  4. verzögerter Expansionszustand

Wenn es wichtig ist, die Umgebung des aktuellen * .bat- oder * .cmd-Skripts nicht zu verändern, und zwar unabhängig davon, was Template.bat An der Umgebung für sich ändert, sollten setlocal und endlocal.

Führen Sie in einem Eingabeaufforderungsfenster setlocal /? Und endlocal /? Aus, um die Hilfe dieser beiden Befehle anzuzeigen. Lesen Sie die Antwort auf Befehl zum Ändern des Verzeichnisses cd .. funktioniert nach der Installation von npm nicht mehr in der Batch-Datei und erläutern Sie die Funktionsweise dieser beiden Befehle.

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

Jetzt wird nur noch & Anstelle von && Verwendet, da hier wichtig ist, dass nach der Ausführung von setlocal endlich auch der Befehl endlocal ausgeführt wird.


EINE WEITERE ANMERKUNG

Wenn die Batch-Datei Template.bat Den Befehl exit ohne Parameter /B Enthält und dieser Befehl wirklich ausgeführt wird, wird der Befehlsprozess unabhängig von der aufrufenden Hierarchie immer beendet. Stellen Sie also sicher, dass Template.batexit /B Oder goto :EOF Anstelle von nur exit enthält, wenn exit überhaupt in dieser Batchdatei verwendet wird.

4
Mofi

Sie können den Befehl Cmd verwenden, um die Stapeldatei auszuführen.

Hier ist mein Weg =>

cmd /c ""Full_Path_Of_Batch_Here.cmd" "

Weitere Informationen => cmd /?

0
scientist_7