« Batch » : différence entre les versions
Ligne 175 : | Ligne 175 : | ||
|} | |} | ||
==Substitution== | == Substitution == | ||
Après le do, %%i peut être substitué : | Après le {{boxx|do}}, {{boxx|%%i}} peut être substitué : | ||
{| | {| class="wikitable wtp wtmono1" | ||
| | | %%~i || supprimes les guillemets (") au début et à la fin | ||
|- | |- | ||
| | | %%~fi || fully qualified path name | ||
|- | |- | ||
| | | %%~di || drive letter only | ||
|- | |- | ||
| | | %%~pi || path only | ||
|- | |- | ||
| | | %%~ni || file name only | ||
|- | |- | ||
| | | %%~xi || file extension only | ||
|- | |- | ||
| | | %%~$PATH:i | ||
|searches the directories listed in the PATH environment variable and expands %i to the fully qualified name of the first one found.<br/>If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string. | | searches the directories listed in the PATH environment variable and expands %i to the fully qualified name of the first one found.<br/>If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string. | ||
|} | |} | ||
Version du 20 mars 2020 à 15:55
Liens
- http://1100f.free.fr/Batchs/index.htm
- http://www.dostips.com/DtTipsStringManipulation.php
- Quelques exemples de fichiers Batch
Astuces
REM désactive l’affichage des commandes pour tous le script @echo off REM Mettre en pause le programme pause REM Effacer la console cls REM Stocker une valeur dans une variable REM Attention pas d'espace avant et après le = set variable="valeur" REM Calculer une opéeration set /a resultat = 10 - 5 REM Garder la console ouverte après l’exécution d'une commande cmd /K ma_commande REM localiser un fichier. Équivalent de which where xsd |
Les fichiers BATCH ont l'extension *.bat |
Variable d’environnement
Création / Suppression de dossiers / fichiers
Les caractères accentués
Ils ne s'affichent pas correctement dans la console.
Pour les afficher, il faut éditer le fichier *.bat via la commande edit depuis la console, et les ré-écrire.
Encodage
Utilisez l'encode ANSI pour écrire vos scripts batch.
Arguments passés au script
For
for %variable in (ensemble) do ( commande1 commande2 ) REM utilisez %%variable au lieu de %variable pour l'utiliser dans commande |
Résultat d'une commande
REM stocke la dernière ligne retournée par commande dans variable for /f "delims=" %%i in ('commande') do set variable=%%i |
Générer une suite de chiffres
for /L %variable in (début, pas, fin) for /L %i in (1, 1, 5) REM 1 2 3 4 5 for /L %i in (5, -1, 1) REM 5 4 3 2 1 |
Splitter
Nombre de lignes d'un fichier
for /f "tokens=3" %%f in ('find /c /v "" fichier.txt') do set nbLines=%%f REM selection du 3eme elements de la sortie REM ---------- fichier.txt: 18 |
Substitution
Après le do, %%i peut être substitué :
%%~i | supprimes les guillemets (") au début et à la fin |
%%~fi | fully qualified path name |
%%~di | drive letter only |
%%~pi | path only |
%%~ni | file name only |
%%~xi | file extension only |
%%~$PATH:i | searches the directories listed in the PATH environment variable and expands %i to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string. |
Tail
Goto et label
:label commande goto label REM permet de se rendre directement à la fin du script goto :eof |
If
http://www.robvanderwoude.com/if.php
if [not] test commande else commande if [not] test ( commande1 commande2 ) else ( commande1 commande2 ) |
Tests booléen
Test l'existence d'un fichier
if exist "C:\dossier\fichier.txt" commande |
FINDSTR
GREP like
commande | findstr /C:"phrase à chercher" |
Expressions rationnelles
Lire les entrées du clavier
echo question ? set /p variable= |
Code de retour
echo %errorlevel% commande.exe if errorlevel 1 ( echo Failure Reason Given is %errorlevel% exit /b %errorlevel% ) |
Lancer un sous-script batch
call deuxiemeScript.bat |
Manipulation de string
set X=123456789 echo %X:~2% REM 3456789. Sous-string sans les 2 premiers caractères echo %X:~2,5% REM 34567. Sous-string à partir du 3ème caractère et d'une longueur de 5 echo %X:~-3% REM 789. Sous-string des 3 derniers caractères echo %X:~-3,2% REM 78. Sous-string à partir du 3ème caractère en partant de la fin et d'une longueur de 2 echo %X:~1,-1% REM 2345678. Sous-string à partir du 2ème caractère et jusqu'à l'avant dernier echo %X:5=6% REM 123466789. Remplace tous les 5 par des 6 echo %X%%X% REM 123456789123456789. Concaténation de variables |
Associer une extension à un programme
REM créé l'entrée HKLM\SOFTWARE\Classes\.csx assoc .csx=csscript REM créé l'entrée HKLM\SOFTWARE\Classes\csscript ftype csscript=`"%APPDATA%\Code\User\cs-script.user\cscs.exe`" `"%1`" |
Ne semble pas fonctionner. |
L'association extension fichier est enregistrée dans HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
MessageBox
Il n'existe pas de MessageBox à proprement parler, mais il existe des astuces.
Menu
:menu cls echo. echo Menu echo Choix 1 echo Choix 1 echo. choice /C:12 if errorlevel 2 goto 2 if errorlevel 1 goto 1 goto menu |
Attention CHOICE ne fonctionne pas sous XP.
:menu cls echo. echo Menu echo Choix 1 echo Choix 2 echo. set choice= set /p choice=Votre choix? if "%choice%"=="1" goto 1 if "%choice%"=="2" goto 2 goto menu |
Définir des Alias comme dans bash
@echo off @doskey py=C:\Python27\python.exe $* @doskey py3=C:\Python32\python.exe $* REM $* permet le passage d'arguments de l'alias vers la cible |
Pour que les alias soient effectifs dès le démarrage de la console, il faut modifier le registre :
HKEY_CURRENT_USER\Software\Microsoft\Command Processor → Nouvelle Valeur chaîne : « autorun » → Données = chemin_vers_alias.bat
Shutdown, restart, sleep
REM éteint immédiatement le pc (%windir% = C:\Windows) %windir%\System32\shutdown.exe /s /t 0 REM /s → shutdown REM /r → restart REM /h → hibernate REM /l → logoff REM /t → attente en secondes REM sleep %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0 REM standby %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby REM hibernate %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate REM lock %windir%\System32\rundll32.exe user32.dll,LockWorkStation |
Utilisateurs et groupes
Ouvrir le client mail par défaut.
Start permet d'ouvrir le nouveau mail dans un autre processus. Le code continue donc à s'exécuter.
Pour annuler le caractère % il faut en mettre un deuxième. (Rappel : %20=espace %0A=\n )
REM sur la même ligne start mailto:dev@princeps.com?subject=Le%%20suje ^&cc=copie@princeps.com;copie2@princeps.com ^&bcc=copiecachée@princeps.com ^&body=Bonjour,%%0AMon%%20Message |