batch-file
Unterschiede zwischen Batch (Windows) und Terminal (Linux)
Suche…
Einführung
Batch und Bash sind sehr unterschiedlich. Stapelflags werden mit einem
/ , während Bashflags ein - . Die Kapitalisierung ist in bash wichtig, aber (fast) gar nicht in Batch. Batch-Variablennamen können Leerzeichen enthalten, Bash-Variablennamen nicht. Letztendlich sind beide Möglichkeiten, die Befehlszeile zu manipulieren und damit zu interagieren. Es überrascht nicht, dass es zwischen den Fähigkeiten der beiden Systeme eine vernünftige Überlappung gibt.
Bemerkungen
-
bitsadminist zugunsten des PowerShell-Cmdlets BITS veraltet, funktioniert jedoch noch ab Windows 10 Version 1607 -
certutiltrennt Paare hexadezimaler Ziffern durch ein Leerzeichen, sodassmd5sumeinen Beispielwert vond41d8cd98f00b204e9800998ecf8427e, währendcertutildenselben Wert wied4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e - Um zu einem anderen Laufwerk zu
cd(z. B. von C: nach D :) muss das Flag/dverwendet werden -
delkann keine Ordner löschen, verwenden Sie stattdessenrm -
grepist so viel mächtiger alsfindundfindstr, es ist fastfindstr, sie zu vergleichen;findhat keinefindstrundfindstrhat sehr eingeschränktefindstr([az]{2}ist keine gültige Syntax, aber[az][az]ist) -
forSchleifen an der Windows-Eingabeaufforderung können nur einzeilige Variablennamen verwenden. Dies ist die einzige Zeit, in der die Namen der Batch-Variablen die Groß- und Kleinschreibung berücksichtigen - Verwenden Sie
forSchleifen an der Eingabeaufforderung auch die Variable%Aanstelle von%A%forSchleifen in Batch-Skripts verwenden Sie die Variable Form%%A -
mderstellt automatisch alle erforderlichen übergeordneten Verzeichnisse, währendmkdirdas Flag-pbenötigt -
remdarf nicht als Inline-Kommentarzeichen verwendet werden, es sei denn, ihm wird ein&vorangestellt. -
::darf überhaupt nicht als Inline-Kommentar verwendet werden und sollte auch nicht innerhalb eines Codeblocks (Satz von Klammern) verwendet werden
- Beachten Sie, dass einige Windows - Befehl wie
pingnoch verwendet-als Flags
Stapelbefehle und ihre Bash-Äquivalente
| Stapel | Bash | Beschreibung |
|---|---|---|
command /? | man command | Zeigt die Hilfe zum Befehl an |
bitsadmin | wget oder curl | Lädt eine Remote-Datei herunter |
certutil -hashfile file_name MD5 | md5sum file_name | Ruft die MD5-Prüfsumme von Dateiname ab |
cd | pwd | Zeigt das aktuelle Verzeichnis an |
cd directory | cd directory | Ändert das aktuelle Verzeichnis in das angegebene Verzeichnis |
cls | clear | Löscht den Bildschirm |
copy | cp | Kopiert eine oder mehrere Dateien aus einem Quellpfad in einen Zielpfad |
date | date | Zeigt das Datum an oder stellt es basierend auf Benutzereingaben ein |
del | rm | Löscht eine oder mehrere Dateien |
dir | ls | Zeigt eine Liste der Dateien und Verzeichnisse im aktuellen Verzeichnis an |
echo | echo | Zeigt Text auf dem Bildschirm an |
exit | return | Beendet ein Skript oder eine Subroutine |
exit | logout | Schließt die Eingabeaufforderung oder das Terminal |
fc | diff | Vergleicht den Inhalt von zwei Dateien |
find "string" file_name | grep "string" file_name | Durchsucht Dateiname nach Zeichenfolge |
findstr "string" file_name | grep "string" file_name | Durchsucht Dateiname nach Zeichenfolge |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Tun Sie etwas für jede Datei in einer Reihe von Dateien |
for /F %A in ('command') do something | `command` | Gibt die Ausgabe eines Befehls zurück |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Beginnt zuerst und zählt bis zum letzten Schritt |
forfiles | find | Sucht nach Dateien, die bestimmten Kriterien entsprechen |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Vergleicht zwei Werte |
ipconfig | ifconfig | Zeigt IP-Informationen an |
md | mkdir | Erzeugt neue Ordner |
mklink | ln -s | Erzeugt einen symbolischen Link |
more | more | Zeigt jeweils einen Bildschirm der Ausgabe an |
move | mv | Verschiebt eine oder mehrere Dateien aus einem Quellpfad in einen Zielpfad |
pause | read -p "Press any key to continue" | Unterbricht die Skriptausführung, bis der Benutzer eine Taste drückt |
popd | popd | Entfernt den obersten Eintrag aus dem Verzeichnisstapel und wechselt in das neue oberste Verzeichnis |
pushd | pushd | Fügt das aktuelle Verzeichnis dem Verzeichnisstapel hinzu und wechselt zum neuen obersten Verzeichnis |
ren | mv | Benennt Dateien um |
rem oder :: | # | Kommentiert eine Codezeile |
rd | rmdir | Entfernt leere Verzeichnisse |
rd /s | rm -rf | Entfernt Verzeichnisse unabhängig davon, ob sie leer waren oder nicht |
set variable=value | variable=value | Legt den Wert der Variablen auf value fest |
set /a variable=equation | variable=$((equation)) | Führt mathematische Berechnungen durch (Stapel kann nur 32-Bit-Ganzzahlen verwenden) |
set /p variable=promptstring | read -p "promptstring" variable | Ruft die Benutzereingabe ab und speichert sie in einer Variablen |
shift | shift | Verschiebt Argumente um 1 (oder n, wenn angegeben) |
sort | sort | Sortiert die Ausgabe alphabetisch nach Zeile |
tasklist | ps | Zeigt eine Liste der laufenden Prozesse an |
taskkill /PID processid | kill processid | Tötet den Prozess mit PID processid |
time /t | date | Zeigt die aktuelle Uhrzeit an |
type | cat | Zeigt den Inhalt einer Datei an |
where | which | Durchsucht das aktuelle Verzeichnis und den PATH nach einer Datei oder einem Befehl |
whoami | id | Zeigt den Namen und die Gruppe des aktuellen Benutzers an |
Stapelvariablen und ihr Bash-Äquivalent
| Stapel | Bash | Beschreibung |
|---|---|---|
%variable% | $variable | Eine reguläre Variable |
!variable! | $variable | Eine Variable innerhalb eines Codeblocks, wenn setlocal enabledelayedexpansion ist |
%errorlevel% oder ERRORLEVEL | $? | Gibt den Status des vorherigen Befehls zurück: 0 bei Erfolg, 1 (oder etwas anderes), falls nicht |
%1 , %2 , %3 usw. | $1 $2 $3 usw. | Die für ein Skript angegebenen Parameter |
%* | $* | Alle Parameter eines Skripts |
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow