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 revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
informatique:windows:batch [2019/03/11 14:31] yahikoinformatique:windows:batch [2022/08/01 09:38] – Ajout IP depuis PING yahiko
Line 1: Line 1:
 ====== Astuces diverses en Batch ====== ====== Astuces diverses en Batch ======
-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 *Insérer l'année en cours* 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 =====
 +==== Passer en UTF-8 ====
 +<codedoc code:batch>
 +CHCP 65001 > NUL
 +</codedoc>
 +
 ==== Menu simple ==== ==== Menu simple ====
 Un menu simple à choix multiples en cas d'erreur pour une mauvaise saisie. Un menu simple à choix multiples en cas d'erreur pour une mauvaise saisie.
Line 20: Line 25:
  
 ==== Afficher la date du jour format AAAAMMJJ ==== ==== Afficher la date du jour format AAAAMMJJ ====
 +Une autre solution pour formater la date au format JJMMAAAA (ou JJ-MM-AAAA) est disponible plus bas : [[informatique:windows:batch#formater_la_date|Formater la date]]
 +
 Par exemple pour la mettre dans un nom de fichier. Par exemple pour la mettre dans un nom de fichier.
 <codedoc code:batch> <codedoc code:batch>
Line 46: Line 53:
 ==== 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 71: Line 78:
 ) )
 </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 ==== 
 +<codedoc code:batch> 
 +WMIC computersystem where caption='%computername%' rename Nouveau_Nom_du_PC 
 +</codedoc>
  
 ==== Changer le nom d'un PC selon une nomenclature ==== ==== Changer le nom d'un PC selon une nomenclature ====
Line 115: Line 126:
 <codedoc code:batch> <codedoc code:batch>
 XCOPY dossier_source dossier\destination /S /Y XCOPY dossier_source dossier\destination /S /Y
 +</codedoc>
 +
 +=== Copie d'un fichier avec xcopy ===
 +<codedoc code:batch>
 +XCOPY fichier_source.machin fichier_destination.machin /Y
 </codedoc> </codedoc>
  
Line 120: Line 136:
 <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>
 +
 +==== Formater la date ====
 +La variable d'environnement %date% renvoie, par défaut, la date au format JJ/MM/AAAA. Si on veut utiliser cette variable pour, par exemple, créer un dossier il faut la formater dans les slash.
 +<codedoc code:batch>
 +%date:/=-%
 +Retourne : JJ-MM-AAAA
 +
 +%date:/=_%
 +Retourne : JJ_MM_AAAA
 +
 +Par exemple
 +mkdir prout\%date:/=-%
 +Retourne un dossier prout\JJ-MM-AAAA
 +</codedoc>
 +
 +Au format ISO 8601 : 
 +<codedoc code:batch>
 +%date:~6,4%-%date:~3,2%-%date:~0,2%
 +</codedoc>
 +
 +==== Récupérer le jour de la semaine ====
 +Source : [[https://itectec.com/superuser/adding-day-of-week-to-file-name-in-batch-file/]]
 +<codedoc code:batch>
 +@ECHO OFF
 +for /F "tokens=2 skip=2 delims=," %%D in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do @set day=%%D
 +IF %day%==1 SET jour=lundi
 +IF %day%==2 SET jour=mardi
 +IF %day%==3 SET jour=mercredi
 +IF %day%==4 SET jour=jeudi
 +IF %day%==5 SET jour=vendredi
 +IF %day%==6 SET jour=samedi
 +IF %day%==7 SET jour=dimanche
 +ECHO Jour : %jour%
 +PAUSE
 +</codedoc>
 +
 +http://brisray.com/computers/batch-volume.htm
 +
 +==== Récupérer une IP depuis un ping ====
 +Source : [[https://stackoverflow.com/questions/9171774/batch-file-getting-ip-from-ping-command]]
 +<codedoc code:batch>
 +FOR /f "tokens=1,3 delims=: " %%A IN ('ping -n 1 fr.wikipedia.org') DO IF %%A==Réponse SET IP=%%B
 +ECHO %IP%
 </codedoc> </codedoc>
informatique/windows/batch.txt · Last modified: 2023/09/14 08:46 by yahiko

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki