batch-file
Différences entre lot (Windows) et terminal (Linux)
Recherche…
Introduction
Lot et bash sont très différents. Les indicateurs de lot sont indiqués par un
/
, alors que les indicateurs bash utilisent un -
. La capitalisation est importante en bash, mais pas du tout en batch. Les noms de variables par lots peuvent contenir des espaces, mais pas les noms de variables bash. En fin de compte, les deux sont des moyens de manipuler et d’interagir avec la ligne de commande. Sans surprise, il existe une quantité raisonnable de chevauchement entre les capacités des deux systèmes.
Remarques
-
bitsadmin
est déconseillé en faveur de l'applet de commande PowerShell BITS mais fonctionne toujours à partir de Windows 10 version 1607 -
certutil
sépare les paires de chiffres hexadécimaux avec un espace, doncmd5sum
renvoie un exemple de valeur ded41d8cd98f00b204e9800998ecf8427e
, alors quecertutil
affiche la même valeur qued4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
-
cd
vers un autre lecteur (par exemple, de C: à D :), le drapeau/d
doit être utilisé -
del
ne peut pas supprimer les dossiers, utilisez plutôtrm
-
grep
est tellement plus puissant quefind
etfindstr
, il n'est pas juste de les comparer;find
n'a aucune capacité d'expression rationnelle etfindstr
possède des capacités d'expression rationnelle extrêmement limitées ([az]{2}
n'est pas une syntaxe valide, mais[az][az]
est) -
for
boucles à l'invite de commande Windows ne peut utiliser que des noms de variable à caractère unique; c'est la seule fois que les noms de variables de lot sont sensibles à la casse -
for
boucles à l'invite de commande, utilisez également la forme de variable%A
au lieu de%A%
-for
boucles dans les scripts de commandes, utilisez la forme de variable%%A
-
md
crée automatiquement tous les répertoires parents nécessaires, alors quemkdir
besoin de l'-p
pour le faire -
rem
ne peut pas être utilisé comme caractère de commentaire en ligne à moins qu’il ne soit précédé par un&
-
::
ne peut pas être utilisé comme un commentaire en ligne du tout, et ne doit pas non plus être utilisé dans un bloc de code (ensemble de parenthèses)
- Notez que certaines commandes Windows comme
ping
utilisent toujours-
comme des indicateurs
Commandes par lots et leurs équivalents Bash
Lot | Frapper | La description |
---|---|---|
command /? | man command | Affiche l'aide pour la commande |
bitsadmin | wget ou curl | Télécharge un fichier distant |
certutil -hashfile file_name MD5 | md5sum file_name | Obtient la somme de contrôle MD5 de nom_fichier |
cd | pwd | Affiche le répertoire actuel |
cd directory | cd directory | Change le répertoire en cours en celui spécifié |
cls | clear | Efface l'écran |
copy | cp | Copie un fichier ou des fichiers d'un chemin source vers un chemin cible |
date | date | Affiche la date ou la définit en fonction de l'entrée de l'utilisateur |
del | rm | Supprime un fichier ou des fichiers |
dir | ls | affiche une liste de fichiers et de répertoires dans le répertoire en cours |
echo | echo | Affiche le texte à l'écran |
exit | return | Quitte un script ou une sous-routine |
exit | logout | Ferme l'invite de commande ou le terminal |
fc | diff | Compare le contenu de deux fichiers |
find "string" file_name | grep "string" file_name | Recherche nom_fichier pour chaîne |
findstr "string" file_name | grep "string" file_name | Recherche nom_fichier pour chaîne |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Faites quelque chose pour chaque fichier dans un ensemble de fichiers |
for /F %A in ('command') do something | `command` | Renvoie la sortie d'une commande |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Commence par le début et compte par incrément jusqu'à ce qu'il atteigne le dernier |
forfiles | find | Recherche des fichiers correspondant à certains critères |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Compare deux valeurs |
ipconfig | ifconfig | Affiche les informations IP |
md | mkdir | Crée de nouveaux dossiers |
mklink | ln -s | Crée un lien symbolique |
more | more | Affiche un écran de sortie à la fois |
move | mv | Déplace un fichier ou des fichiers d'un chemin source vers un chemin cible |
pause | read -p "Press any key to continue" | Suspend l'exécution du script jusqu'à ce que l'utilisateur appuie sur un bouton |
popd | popd | Supprime l'entrée supérieure de la pile de répertoires et accède au nouveau répertoire principal |
pushd | pushd | Ajoute le répertoire en cours à la pile de répertoires et accède au nouveau répertoire principal |
ren | mv | Renomme les fichiers |
rem ou :: | # | Commentaires une ligne de code |
rd | rmdir | Supprime les répertoires vides |
rd /s | rm -rf | Supprime les répertoires, qu'ils soient vides ou non |
set variable=value | variable=value | Définit la valeur de variable à valeur |
set /a variable=equation | variable=$((equation)) | Effectue des calculs (batch ne peut utiliser que des entiers de 32 bits) |
set /p variable=promptstring | read -p "promptstring" variable | Obtient l'entrée utilisateur et la stocke dans une variable |
shift | shift | Décale les arguments de 1 (ou n si fourni) |
sort | sort | Trie la sortie alphabétiquement par ligne |
tasklist | ps | Affiche une liste des processus en cours d'exécution |
taskkill /PID processid | kill processid | Tue le processus avec processid PID |
time /t | date | Affiche l'heure actuelle |
type | cat | Affiche le contenu d'un fichier |
where | which | Recherche dans le répertoire en cours et le PATH pour un fichier ou une commande |
whoami | id | Affiche le nom et le groupe de l'utilisateur actuel |
Variables de lot et leur équivalent Bash
Lot | Frapper | La description |
---|---|---|
%variable% | $variable | Une variable régulière |
!variable! | $variable | Une variable à l'intérieur d'un bloc de code lorsque setlocal enabledelayedexpansion est setlocal enabledelayedexpansion |
%errorlevel% ou ERRORLEVEL | $? | Retourne le statut de la commande précédente: 0 si réussi, 1 (ou autre chose) sinon |
%1 , %2 , %3 , etc. | $1 $2 $3 , etc. | Les paramètres donnés à un script |
%* | $* | Tous les paramètres donnés à un script |
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow