User Tools

Site Tools


informatique:windows:batch

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
informatique:windows:batch [2019/03/11 16:30]
yahiko
informatique:windows:batch [2020/02/28 10:42] (current)
Line 2: Line 2:
 Nous sommes en 2019 et j'utilise toujours le Batch pour automatiser des choses sous Windows. Pourquoi ? Parce que je suis une quiche en programmation, que je connais relativement pas trop mal les commandes DOS et que ça me permet d'aller vite. Alors oui, Powershell c'est plus mieux mais bon hein voila quoi.  Nous sommes en 2019 et j'utilise toujours le Batch pour automatiser des choses sous Windows. Pourquoi ? Parce que je suis une quiche en programmation, que je connais relativement pas trop mal les commandes DOS et que ça me permet d'aller vite. Alors oui, Powershell c'est plus mieux mais bon hein voila quoi. 
  
-Je vais donc compiler ici des petits bouts de codes qui peuvent servir dans pas mal de cas de figures ou tout simplement simplifier la vie. Malheureusement je n'ai plus la source pour certains que je n'ai pas trouvé par moi même, mais ce doit être de formidables personnes sur Stackoverflow ou sites dérivés (Super User, Server Fault... ).+Je vais donc compiler ici des petits bouts de codes qui peuvent servir dans pas mal de cas de figures ou tout simplement simplifier la vie. Malheureusement je n'ai plus la source pour la plus part que je n'ai pas trouvé par moi même, mais ce doit être de formidables personnes sur Stackoverflow ou sites dérivés (Super User, Server Fault... ).
  
 ===== Code en vrac ===== ===== Code en vrac =====
-==== Afficher les caractères accentués ====+==== Passer en UTF-8 ====
 <codedoc code:batch> <codedoc code:batch>
 CHCP 65001 > NUL CHCP 65001 > NUL
-</code>+</codedoc>
  
 ==== Menu simple ==== ==== Menu simple ====
Line 51: Line 51:
 ==== Paramétrer une imprimante par défaut ==== ==== Paramétrer une imprimante par défaut ====
 <codedoc code:batch> <codedoc code:batch>
-RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "%ImpCDI_Col%"+RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "Nom complet de l'imprimant dans Windows"
 </codedoc> </codedoc>
 Par extension, un petit script pour attribuer un imprimante par défaut selon le nom du poste :  Par extension, un petit script pour attribuer un imprimante par défaut selon le nom du poste : 
Line 76: Line 76:
 ) )
 </codedoc> </codedoc>
-C'est salle mais dans un réseau à la noix, sans domaine, ça +C'est sale mais dans un réseau à la noix, sans domaine, avec juste un script de netlogon ça fonctionne.
 ==== Changer le nom du PC ==== ==== Changer le nom du PC ====
 <codedoc code:batch> <codedoc code:batch>
Line 134: Line 134:
 <codedoc code:batch> <codedoc code:batch>
 RMDIR nom_du_dossier /S /Q RMDIR nom_du_dossier /S /Q
 +</codedoc>
 +
 +==== Faire un tableau ====
 +=== Définir le tableau ===
 +<codedoc code:batch>
 +SETLOCAL enabledelayedexpansion 
 +SET var[0]=Valeur1
 +SET var[1]=Valeur2
 +SET var[2]=Valeur3
 +SET var[3]=Valeur4
 +</codedoc>
 +
 +=== Boucle pour lire le tableau ===
 +<codedoc code:batch>
 +FOR /L %%n in (0,1,%boucle%) DO (
 + ECHO Liste des valeurs : !var[%%n]!
 +)
 +</codedoc>
 +
 +=== Exemple : ===
 +<codedoc code:batch>
 +SETLOCAL enabledelayedexpansion 
 +SET day[0]=MON
 +SET day[1]=TUE
 +SET day[2]=WED
 +SET day[3]=THU
 +SET day[4]=FRI
 +SET day[5]=SAT
 +SET day[6]=SUN
 +
 +FOR /L %%n in (0,1,%boucle%) DO (
 + ECHO !day[%%n]!
 +)
 +</codedoc>
 +
 +==== Supprimer des fichier plus vieux que x jours ====
 +Ce petit bout de code qui va supprimer les fichiers d'un dossier qui sont plus vieux que le nombre défini de jours.
 +
 +Il suffit de modifier la valeur des variables des trois premières lignes pour définir le dossier, le nombre de jour et l'extension des fichiers à supprimer. 
 +<codedoc code:batch>
 +SET folder=C:\DOSSIER\Bidule
 +SET days=15
 +SET ext=zip
 +FORFILES /P "%folder%" /S /M *.%ext% /D -%days% /C "CMD /C del @path
 +
 +ECHO Suppression des fichier %ext% du dossier %folder% de plus de %days% jours...
 +PING localhost -n 5 > NUL
 +</codedoc>
 +
 +Sinon, juste la ligne sans tout le blabla autour. 
 +<codedoc code:batch>
 +FORFILES /P "C:\DOSSIER\Bidule" /S /M *.zip /D -15 /C "CMD /C del @path
 +</codedoc>
 +
 +==== Tuer un processus ====
 +<codedoc code:batch>
 +TASKKILL /F /IM processus.exe
 +</codedoc>
 +
 +Du coup, on peut faire un truc du genre : 
 +
 +<codedoc code:batch>
 +TASKLIST /FI "IMAGENAME eq machin.exe" 2>NUL | find /I /N "machin.exe">NUL
 +IF "%ERRORLEVEL%"=="0" (
 + TASKKILL /F /IM machin.exe > NUL
 +) ELSE (
 + ECHO Machin pas lancé n'est pas lancé.
 +)
 </codedoc> </codedoc>
informatique/windows/batch.1552318210.txt.gz · Last modified: 2020/02/28 10:42 (external edit)