Liens
Astuces
|
@echo off
pause
cls
set variable="valeur"
set /a resultat = 10 - 5
cmd /K ma_commande
where xsd
|
 |
Les fichiers BATCH ont l'extension *.bat |
Variables d'environnement
|
%CD%
%AppData%
%UserProfile%
%ProgramFiles%
%ProgramFiles(x86)%
%SystemRoot% ou %WinDir%
%tmp% ou %temp%
|
File / Folder / Path
|
dir /x
md MonDossier
rd /s MonDossier
del MonFichier
del MonFichier1 MonFichier2 *.txt
|
ShortNamePath.cmd
|
@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1
|
|
ShortNamePath.cmd 'C:\Program Files (x86)\'
|
Lancer un sous-script batch
|
call deuxiemeScript.bat
|
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
|
echo %0 REM nom du fichier de script avec son chemin tel qu'il a été appelé : avec ou sans l'extension
echo %1 REM argument 1
echo %~1 REM argument 1 sans les guillemets
echo %* REM liste des tous les arguments
echo %~d0 REM C: (Drive)
echo %~dp0 REM C:\Dossier\ (Drive + Path)
echo %~dpn0 REM C:\Dossier\Fichier (Drive + Path + Name)
echo %~dpnx0 REM C:\Dossier\Fichier.bat (Drive + Path + Name + Extension)
echo %~x0 REM .bat
echo %~n0 REM Fichier
|
For
|
for %variable in (ensemble) do (
commande1
commande2
)
|
Résultat d'une commande
|
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
|
for /f ["options"] %variable in (ensemble)
for /f "delims=" %%a in (fichier.txt) do echo %%a
for /D %%i in ("élément1", "élément2") do echo %%i
|
Nombre de lignes d'un fichier
|
for /f "tokens=3" %%f in ('find /c /v "" fichier.txt') do set nbLines=%%f
|
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
|
for /f "tokens=3" %%f in ('find /c /v "" fichier.txt') do set nbLines=%%f
set /a nbSkippedLines=%nbLines%-13
for /f "skip=%nbSkippedLines% delims=" %%d in (fichier.txt) do echo %%d
|
Goto et label
|
:label
commande
goto label
goto :eof
|
|
if [not] test commande else commande
if [not] test (
commande1
commande2
) else (
commande1
commande2
)
|
Tests booléen
|
"%var1%"=="ma variable"
[%var1%]==[ma variable]
"%str%"==""
"%~1"==""
if /i z==Z
|
Test l'existence d'un fichier
|
if exist "C:\dossier\fichier.txt" commande
|
FINDSTR
GREP like
|
commande | findstr /C:"phrase à chercher"
|
Expressions rationnelles
|
findstr /r "expression" fichier
findstr /r "\[assembly:.AssemblyVersion(\"[0-9\.]*\")\];" AssemblyInfo.cs
|
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%
)
|
|
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
|
|
assoc .csx=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.
|
msg * Message
start %comspec% /c "mode 40,10&color 0a&title Mon Titre&echo.Message&pause>NUL"
|
|
: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
|
 |
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 $*
|
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
|
%windir%\System32\shutdown.exe /s /t 0
%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0
%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby
%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate
%windir%\System32\rundll32.exe user32.dll,LockWorkStation
|
Utilisateurs et groupes
|
net user MonUtilisateur /add
net user MonUtilisateur /delete
net user MonUtilisateur MotDePasse
net localgroup MonGroupe MonUtilisateur /add
|
Mail
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 )
|
start mailto:dev@princeps.com?subject=Le%%20suje
^&cc=copie@princeps.com;copie2@princeps.com
^&bcc=copiecachée@princeps.com
^&body=Bonjour,%%0AMon%%20Message
|
FTP
|
if exist ftp_config.txt del ftp_config.txt
echo login>ftp_config.txt
echo password>>ftp_config.txt
echo cd dossier1/dossier2>>ftp_config.txt
echo lcd C:\dossier_local>>ftp_config.txt
echo bin>>ftp_config.txt
echo mput "%fichierAenvoyer%">>ftp_config.txt
echo mget "%fichierArecuperer%">>ftp_config.txt
echo quit>>ftp_config.txt
ftp -i -s:ftp_config.txt ftp.iprinceps.net
if exist ftp_config.txt del ftp_config.txt
|
Tortoise SVN
Ligne de commande
Exemples
|
if [%1] == [] goto usage
if "%2" == "" goto A
if /i %2 == A goto A
if /i %2 == B goto B
goto usage REM si aucune correspondance n'a été trouvée.
:usage
echo Error in script usage. The correct usage is:
echo %0 [file] [option]
echo where [option] is: A ^| B
echo.
echo For example:
echo %0 program.exe A
echo.
pause
goto :eof
|