batch-file
Verschillen tussen Batch (Windows) en Terminal (Linux)
Zoeken…
Invoering
Batch en bash zijn heel verschillend. Batchvlaggen worden aangegeven met een
/
, terwijl bash-vlaggen een -
. Kapitalisatie is belangrijk in bash, maar (bijna) helemaal niet in batch. Batch-variabelenamen kunnen spaties bevatten, bash-variabelenamen niet. Uiteindelijk zijn beide manieren om de opdrachtregel te manipuleren en ermee te communiceren. Vanzelfsprekend is er een redelijk grote hoeveelheid overlap tussen de mogelijkheden van de twee systemen.
Opmerkingen
-
bitsadmin
is verouderd ten gunste van de PowerShell-cmdlet BITS maar werkt nog steeds vanaf Windows 10 versie 1607 -
certutil
scheidt paren van hexadecimale cijfers met een spatie, dusmd5sum
retourneert een voorbeeldwaarde vand41d8cd98f00b204e9800998ecf8427e
, terwijlcertutil
dezelfde waarde weergeeft alsd4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
- Om naar een ander station te
cd
(bijvoorbeeld van C: naar D :) moet de vlag/d
worden gebruikt -
del
kan mappen niet verwijderen, gebruik in plaats daarvanrm
-
grep
is zoveel krachtiger danfind
enfindstr
, het is bijna niet eerlijk om ze te vergelijken;find
heeft geen regex-mogelijkheden enfindstr
heeft extreem beperkte regex-mogelijkheden ([az]{2}
is geen geldige syntax, maar[az][az]
is) -
for
lussen op de Windows-opdrachtprompt kunnen alleen variabelenamen met één teken worden gebruikt; dit is de enige keer dat de namen van batchvariabelen hoofdlettergevoelig zijn -
for
lussen op de opdrachtprompt gebruikt u ook de variabele vorm%A
plaats van%A%
-for
lussen in batch-scripts gebruikt u de variabele vorm%%A
-
md
automatisch alle benodigde bovenliggende mappen, terwijlmkdir
de vlag-p
nodig heeft -
rem
mag niet worden gebruikt als inline-commentaar, tenzij dit wordt voorafgegaan door een&
-
::
mag helemaal niet als inline commentaar worden gebruikt en mag ook niet binnen een codeblok worden gebruikt (set haakjes)
- Merk op dat sommige Windows-commando's zoals
ping
nog steeds-
als vlaggen gebruiken
Batchopdrachten en hun Bash-equivalenten
Partij | Bash | Beschrijving |
---|---|---|
command /? | man command | Toont de hulp voor opdracht |
bitsadmin | wget of curl | Downloadt een extern bestand |
certutil -hashfile file_name MD5 | md5sum file_name | Hiermee wordt de MD5-controlesom van bestandsnaam opgehaald |
cd | pwd | Toont de huidige map |
cd directory | cd directory | Wijzigt de huidige map naar de opgegeven map |
cls | clear | Wist het scherm |
copy | cp | Kopieert een bestand of bestanden van een bronpad naar een doelpad |
date | date | Toont de datum of stelt deze in op basis van gebruikersinvoer |
del | rm | Wist een bestand of bestanden |
dir | ls | geeft een lijst met bestanden en mappen in de huidige map weer |
echo | echo | Geeft tekst op het scherm weer |
exit | return | Sluit een script of subroutine af |
exit | logout | Sluit de opdrachtprompt of terminal |
fc | diff | Vergelijkt de inhoud van twee bestanden |
find "string" file_name | grep "string" file_name | Zoekt naar bestandsnaam op tekenreeks |
findstr "string" file_name | grep "string" file_name | Zoekt naar bestandsnaam op tekenreeks |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Doe iets voor elk bestand in een set bestanden |
for /F %A in ('command') do something | `command` | Retourneert de uitvoer van een opdracht |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Begint eerst en telt in stappen totdat deze als laatste is bereikt |
forfiles | find | Zoekt naar bestanden die aan bepaalde criteria voldoen |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Vergelijkt twee waarden |
ipconfig | ifconfig | Toont IP-informatie |
md | mkdir | Maakt nieuwe mappen |
mklink | ln -s | Creëert een symbolische link |
more | more | Geeft één uitvoerscherm tegelijk weer |
move | mv | Verplaatst een bestand of bestanden van een bronpad naar een doelpad |
pause | read -p "Press any key to continue" | Pauzeert de scriptuitvoering totdat de gebruiker op een knop drukt |
popd | popd | Verwijdert het bovenste item uit de mapstapel en gaat naar de nieuwe bovenste map |
pushd | pushd | Voegt de huidige map toe aan de mapstapel en gaat naar de nieuwe bovenste map |
ren | mv | Hernoemt bestanden |
rem of :: | # | Geeft commentaar op een coderegel |
rd | rmdir | Verwijdert lege mappen |
rd /s | rm -rf | Verwijdert mappen ongeacht of ze leeg waren of niet |
set variable=value | variable=value | Stelt de waarde van variabele in op waarde |
set /a variable=equation | variable=$((equation)) | Voert wiskunde uit (batch kan alleen 32-bits gehele getallen gebruiken) |
set /p variable=promptstring | read -p "promptstring" variable | Krijgt gebruikersinvoer en slaat deze op in variabele |
shift | shift | Verschuift argumenten met 1 (of n indien opgegeven) |
sort | sort | Sorteert uitvoer alfabetisch op regel |
tasklist | ps | Toont een lijst met actieve processen |
taskkill /PID processid | kill processid | Doodt het proces met PID processid |
time /t | date | Toont de huidige tijd |
type | cat | Toont de inhoud van een bestand |
where | which | Zoekt in de huidige map en de PATH naar een bestand of opdracht |
whoami | id | Toont de naam en groep van de huidige gebruiker |
Batchvariabelen en hun Bash-equivalent
Partij | Bash | Beschrijving |
---|---|---|
%variable% | $variable | Een normale variabele |
!variable! | $variable | Een variabele binnen een codeblok wanneer setlocal enabledelayedexpansion is ingeschakeld |
%errorlevel% of ERRORLEVEL | $? | Retourneert de status van de vorige opdracht: 0 indien succesvol, 1 (of iets anders) indien niet |
%1 , %2 , %3 , enz. | $1 , $2 , $3 , etc. | De parameters die aan een script worden gegeven |
%* | $* | Alle parameters die aan een script worden gegeven |
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow