FAQ Windows Batch
FAQ Windows BatchConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 104, dernière mise à jour : 15 juin 2021
- Comment changer de répertoire courant / se déplacer dans l'arborescence ?
- Comment créer un répertoire ?
- Comment récupérer le chemin du répertoire courant ?
- Comment rechercher un fichier précis dans une arborescence de répertoire ?
- Comment rechercher un fichier précis sur tous les disques durs ?
- Comment renommer une série de fichiers en ajoutent un numéro a chacun ?
- Comment renommer une série de fichiers en ajoutant la date du jour
- Comment partager un répertoire ?
- Comment supprimer un répertoire ?
- Comment afficher une arborescence de répertoires et fichiers dans la console ?
- Comment trier des fichiers par extensions ?
- Comment trier des fichiers par dates de création ?
- Comment afficher le fichier le plus récent dans un répertoire?
- Comment imprimer une arborescence des dossiers et des fichiers
- Comment tester si un répertoire contient des fichiers et compter les fichiers ?
- Comment ajouter une extension à tous les fichiers d'un répertoire ?
Pour changer de répertoire courant dans un fichier batch, il faut utiliser la commande cd (Change Directory).
cd
repertoire
repertoire peut être : * le nom d'un sous-répertoire du répertoire courrant * un chemin complet (sur le même disque).
cd
c:\windows\temp\
* .. (deux points) pour se déplacer dans le répertoire parent.
cd
..
* \ pour se déplacer à la racine du disque
cd
\
* une variable contenant un chemin :
cd
%temp%
Si le répertoire que l'on veut atteindre est situé sur un autre disque (lettre de lecteur différente), il faut utiliser l'option /D.
cd
/d %var%
On utilise la commande Md :
Md nonDuRépertoire
On utilise la variable ?%.
Dans une boucle for on peut utiliser la variable %dp0
for /r "%~dp0\" %%i in (*.txt) do echo %%i
Dans cet exemple on utilise une boucle For avec le commutateur /r pour lister tous les fichiers ".exe" du répertoire racine:
for /r "C:\Répertoire\racine" %%i in (fichier.exe) do echo %%i
On utilise deux boucle For, un première pour détecter tous les disques durs, puis une deuxième pour rechercher le fichier sur chaque disque détecté:
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W ,X,Y,Y,Z) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (fichier.txt) do if exist "%%j" echo %%j
goto :eof
:FinBoucle
Dans cet exemple on renomme toutes les images .jpg du répertoire monRep :
for /r "C:\monRep\" %%j in (*.jpg) do set VrImage=%%j& set /a Compt+=1& call :renamImage
:renamImage
ren "%VrImage%" "image_%Compt%.jpg"
Il suffit de boucler en contaténant la variable date
for /r "C:\MonRep\" %%i in (*.*) do ren "%%i" "?te:~0,2%-?te:~3,2%-?te:~6,4%_%%~nxi"
On utilise la commande Net Share :
Net Share NomDuPartage=C:\chemin\du\répertoire\à\partager
On utilise la commande Rd :
Rd C:\chemin\du\répertoire /s /q
On utilise la commande Tree :
Tree C:\chemin\du\répertoire\source
for /r "%~1\" %%i in (*.*) do set VrChmFch=%%i& set VrExtnsFch=%%~xi& call :triExts
goto finTriExts
:triExts
if not exist "TriExtension\%VrExtnsFch%" mkdir "TriExtension\%VrExtnsFch%"
move "%VrChmFch%" "TriExtension\%VrExtnsFch%"
goto :eof
:finTriExts
for /r "%~1\" %%i in (*.jpg) do set VrNamFch=%%i& set VrDatFch=%%~ti& call :movFch
goto fin
:movFch
set VrDatFch=%VrDatFch:~0,10%
set VrDatFch=%VrDatFch:/=-%
if not exist "MonRep\%VrDatFch%" mkdir "MonRep\%VrDatFch%"
move "%VrNamFch%" "MonRep\%VrDatFch%"
goto :eof
:fin
for /f "tokens=4* delims= " %%i in ('dir /o:d "C:\monRep\*.txt" ^| findstr /i /c:".txt"') do set VrFchRcnt=%%i %%j
echo %VrFchRcnt%
Si l'imprimante est branchée sur le por LTP:
tree "C:\monRep" /f /a > lpt1
Si c'est une imprimante USB:
tree "C:\monRep" /f /a > imprimArborc.txt
print /d:nomImprimante imprimArborc.txt
del imprimArborc.txt
set VrSource=C:\MonRep
For %%a In ("%VrSource%\*.*") Do Set /A Compte+=1
If "%Compte%"=="" Set Compte=Pas de
echo ==^> %Compte% nouveaux fichiers pour [ emule ]
For /f "delims=" %%a in ('dir "%VrSource%" /b') do (
If %%a neq "" echo | & for /R %VrSource% %%i in (*.*) do echo %%~nxi &
)
]Comment ajouter une extension à tous les fichiers d'un répertoire ?
Il n'est pas rare de vouloir ajouter une extension à tous les fichiers d'un répertoire. Il suffit d'utiliser à cet effet une instruction for, comme le montre l'exemple ci-dessous.
Cette commande gardera intact le nom de fichier, ne faisant qu'y ajouter le suffixe désiré.
for
/r "C:\rep" %%i
in
(*
) do
ren
"%%i
" "%%~n
xi.ext"