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?
Kann sich hier beziehen: https://ss64.com/nt/start.html
start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat
"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
Das Verzeichnis, aus dem die Anwendung geladen wurde.
Das aktuelle Verzeichnis für den übergeordneten Prozess.
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.
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.
Das Windows-Verzeichnis. Verwenden Sie die GetWindowsDirectory-Funktion, um den Pfad dieses Verzeichnisses abzurufen.
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
Es gibt viele Möglichkeiten, diese Aufgabe zu lösen.
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.
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.
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.
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.
Die vier oben genannten Lösungen ändern das aktuelle Verzeichnis und es ist unbekannt, was Template.bat
In Bezug auf tut
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.bat
exit /B
Oder goto :EOF
Anstelle von nur exit
enthält, wenn exit
überhaupt in dieser Batchdatei verwendet wird.
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 /?