batch-file
Różnice między Batch (Windows) a Terminalem (Linux)
Szukaj…
Wprowadzenie
Batch i bash są zupełnie inne. Flagi partii są oznaczone za pomocą
/
, podczas gdy flagi bash używają -
. Wielkie litery mają znaczenie w bash, ale (prawie) wcale nie są wsadowe. Nazwy zmiennych wsadowych mogą zawierać spacje, nazwy zmiennych wsadowych nie mogą. Ostatecznie oba są sposobami manipulowania i interakcji z wierszem poleceń. Nic dziwnego, że możliwości obu systemów pokrywają się w rozsądnych rozmiarach.
Uwagi
-
bitsadmin
jest przestarzały na rzecz polecenia cmdlet BITS programu PowerShell, ale nadal działa od wersji systemu Windows 10 1607 -
certutil
oddziela pary cyfr szesnastkowych spacją, więcmd5sum
zwróci przykładową wartośćd41d8cd98f00b204e9800998ecf8427e
, podczas gdycertutil
wyświetla taką samą wartość jakd4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
- Aby
cd
na inny dysk (na przykład od C: do D :), należy użyć flagi/d
-
del
nie może usuwać folderów, zamiast tego użyjrm
-
grep
jest o wiele potężniejszy niżfind
ifindstr
, porównywanie ich jest prawie niesprawiedliwe;find
nie ma możliwości wyrażenia regularnego, afindstr
ma bardzo ograniczone możliwości wyrażenia regularnego ([az]{2}
nie jest poprawną składnią, ale[az][az]
ma wartość) -
for
pętli w wierszu polecenia systemu Windows można używać tylko nazw zmiennych jednoznakowych; to jedyne w nazwach zmiennych wsadowych rozróżniana jest wielkość liter -
for
pętli w wierszu polecenia użyj również zmiennej postaci%A
zamiast%A%
- wfor
pętli w skryptach wsadowych użyj postaci zmiennej%%A
-
md
automatycznie tworzy niezbędne katalogi nadrzędne, podczas gdymkdir
potrzebuje do tego flagi-p
-
rem
nie może być używany jako znak komentarza, chyba że jest poprzedzony znakiem&
-
::
nie może być w ogóle używany jako komentarz wbudowany, a także nie powinien być używany wewnątrz bloku kodu (zestawu nawiasów)
- Zauważ, że niektóre polecenia systemu Windows, takie jak
ping
nadal używają-
jako flagi
Polecenia wsadowe i ich odpowiedniki Bash
Partia | Grzmotnąć | Opis |
---|---|---|
command /? | man command | Pokazuje pomoc dotyczącą polecenia |
bitsadmin | wget lub curl | Pobiera zdalny plik |
certutil -hashfile file_name MD5 | md5sum file_name | Pobiera sumę MD5 nazwa_pliku |
cd | pwd | Wyświetla bieżący katalog |
cd directory | cd directory | Zmienia bieżący katalog na podany |
cls | clear | Czyści ekran |
copy | cp | Kopiuje plik lub pliki ze ścieżki źródłowej do ścieżki docelowej |
date | date | Wyświetla datę lub ustawia ją na podstawie danych wprowadzonych przez użytkownika |
del | rm | Usuwa plik lub pliki |
dir | ls | wyświetla listę plików i katalogów w bieżącym katalogu |
echo | echo | Wyświetla tekst na ekranie |
exit | return | Wychodzi ze skryptu lub podprogramu |
exit | logout | Zamyka wiersz poleceń lub terminal |
fc | diff | Porównuje zawartość dwóch plików |
find "string" file_name | grep "string" file_name | Wyszukiwania nazwa_pliku na ciąg |
findstr "string" file_name | grep "string" file_name | Wyszukiwania nazwa_pliku na ciąg |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Zrób coś dla każdego pliku w zestawie plików |
for /F %A in ('command') do something | `command` | Zwraca wynik polecenia |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Zaczyna się od początku i liczy się stopniowo, aż do końca |
forfiles | find | Wyszukuje pliki spełniające określone kryteria |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Porównuje dwie wartości |
ipconfig | ifconfig | Wyświetla informacje o IP |
md | mkdir | Tworzy nowe foldery |
mklink | ln -s | Tworzy dowiązanie symboliczne |
more | more | Wyświetla jeden ekran wyjścia na raz |
move | mv | Przenosi plik lub pliki ze ścieżki źródłowej do ścieżki docelowej |
pause | read -p "Press any key to continue" | Wstrzymuje wykonywanie skryptu, dopóki użytkownik nie naciśnie przycisku |
popd | popd | Usuwa górny wpis ze stosu katalogów i przechodzi do nowego górnego katalogu |
pushd | pushd | Dodaje bieżący katalog do stosu katalogów i przechodzi do nowego katalogu głównego |
ren | mv | Zmienia nazwy plików |
rem lub :: | # | Komentuje wiersz kodu |
rd | rmdir | Usuwa puste katalogi |
rd /s | rm -rf | Usuwa katalogi bez względu na to, czy były puste |
set variable=value | variable=value | Ustawia wartość zmiennej na wartość |
set /a variable=equation | variable=$((equation)) | Wykonuje matematykę (partia może używać tylko 32-bitowych liczb całkowitych) |
set /p variable=promptstring | read -p "promptstring" variable | Pobiera dane wejściowe użytkownika i przechowuje je w zmiennej |
shift | shift | Przesuwa argumenty o 1 (lub n, jeśli podano) |
sort | sort | Sortuje dane wyjściowe alfabetycznie według linii |
tasklist | ps | Pokazuje listę uruchomionych procesów |
taskkill /PID processid | kill processid | Zabija proces za pomocą PID processid |
time /t | date | Wyświetla bieżącą godzinę |
type | cat | Wyświetla zawartość pliku |
where | which | Przeszukuje bieżący katalog i ŚCIEŻKĘ w poszukiwaniu pliku lub polecenia |
whoami | id | Wyświetla nazwę i grupę bieżącego użytkownika |
Zmienne wsadowe i ich odpowiednik Bash
Partia | Grzmotnąć | Opis |
---|---|---|
%variable% | $variable | Zmienna regularna |
!variable! | $variable | Zmienna wewnątrz bloku kodu, gdy setlocal enabledelayedexpansion jest setlocal enabledelayedexpansion |
%errorlevel% lub ERRORLEVEL | $? | Zwraca status poprzedniego polecenia: 0, jeśli się powiedzie, 1 (lub coś innego), jeśli nie |
%1 , %2 , %3 itd. | $1 $2 $3 itp. | Parametry podane do skryptu |
%* | $* | Wszystkie parametry podane do skryptu |
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow