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 écrire dans un fichier.txt ?
- Comment n'afficher qu'une plage de lignes d'un fichier.txt ?
- Comment afficher le contenu d'un fichier.txt dans la console ?
- Comment compter le nombre de ligne d'un fichier.txt ?
- Comment assembler plusieurs fichiers.txt ?
- Comment assembler plusieurs fichiers.txt
- Comment lire un fichier ligne par ligne ?
- Comment découper un fichier.txt ligne par ligne ?
- Comment imprimer un fichier.txt ?
- Comment renommer un fichier ?
- Comment tester si un fichier existe ou pas ?
- Comment copier un ou plusieurs fichier(s) ?
- Comment supprimer un fichier ?
- Comment rechercher une chaîne de caractères dans un fichier ?
- Comment comparer deux fichiers ?
- Comment comparer le contenu de deux fichiers ?
- Comment remplacer les espaces par des _ dans les noms de fichiers ?
- Comment déplacer des fichiers ?
- Comment supprimer toutes les lignes vides d'un fichier.txt ?
- Comment ajouter la date dans un nom de fichier ?
- Comment supprimer les fichiers.txt vides ?
- Comment actualiser la date de dernière modification d'un fichier existant (équivalent touch Linux/Unix) ?
Pour écrire dans un fichier texte on utilise la commande echo et le caractère de sortie >, voici un exemple :
Echo Ce texte sera écrit dans la fichier > fichier.txt
Mais avec un seul > ca effacera ce qu'il y a dans le fichier, pour écrire à la suite on double le >
Echo Se texte sera écrit dans la fichier >> fichier.txt
Dans notre exemple, nous affichons les lignes 10 à 20.
for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . fichier.txt') do if %%i geq 10 if %%i leq 20 echo %%j
On utilise la commande Type :
Type nomDuFichier.txt
On utilise une boucle for, que l'on va coupler avec les commandes Type pour lire le fichier.txt et Set /a pour compter le nombre de retours chariot:
for /f "delims=" %%i in ('type fichier.txt) do set /a Compt+=1
echo %Compt%
Cet exemple va assembler tous les fichiers ".txt" contenu dans le répertoire MonRep :
for /r "C:\MonRep\" %%i in (*.txt) do for /f "delims=" %%j in ('type "%%i"') do echo %%j>> Resultat.txt
for "C:\MonRep\" %%i in (*.txt) do for /f "delims=" %%j in ('type "%%i"') do echo %%j>> Resultat.txt
ou alors
COPY montext1.txt + montexte2.txt montexte.txt
Dans un fichier batch, on utilise une boucle for couplée à la commande type :
for /f "delims=" %%i in ('type fichier.txt') do echo %%i
Chaque fichier.txt portera comme nom le numéro de ligne:
for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . fichier.txt') do echo %%j> %%i.txt
Chaque fichier.txt portera pour nom le premier mot de la ligne:
for /f "tokens=1,* delims= " %%i in ('type fichier.txt') do echo %%i %%j> %%i.txt
Chaque fichier.txt portera comme non les 5 premier caractéres de chaque ligne:
for /f "delims=" %%i in ('type fichier.txt') do set VrLigne=%%i& call :traitLigne
goto fintraitLigne
:traitLigne
echo %VrLigne%> "%VrLigne:~0,5%.txt"
goto :eof
fintraitLigne
Chaque fichier portera pour nom le numéro de ligne + les 5 premiers caractères de la ligne:
for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . fichier.txt') do set VrLigne=%%j& set VrNumbLign=%%i& call :traitLigne
goto fintraitLigne
:traitLigne
echo %VrLigne%> "%VrNumbLign%_%VrLigne:~0,5%.txt"
goto :eof
:fintraitLigne
On utilise la commande Print
Print fichier.txt
On peut utiliser les commandes Ren et Rename:
Ren "C:\répertoire\fichier.exe" "nouveauNom.exe"
If exist "C:\monRépertoire\MonFichier.exe" echo Le fichier exist
If not exist "C:\monRépertoire\MonFichier.exe" echo Le fichier n'exist pas
Pour copier un seul fichier on utilise la commande Copy :
Copy "C:\chemin\du\fichier.exe" "C:\chemin\de\destination"
Pour copier plusieurs fichiers on utilise la commande Xcopy :
xcopy "C:\chemin\du\répertoire\contenant les fichiers\*.*" "C:\Chemin\de\destination"
On utilise la commande Del :
del nomDuFichier.exe /f /q
Dans cet exemple on recherche le mot jul :
for /f "delims=" %%i in ('type "fichier.txt" ^|findstr /i /r "jul"') do echo %%i
On utilise la commande FC :
Fc fichier1.txt fichier2.txt
On utilise la commande Comp
Comp Fichier1.txt fichier2.txt
On fait ça avec une boucle for
for /f "delims=" %%a in ('dir /b') do call :cmd "%%a"
exit
:cmd
set fichierbck=%~1
set fichier=%fichierbck: =%
ren "%fichierbck%" "%fichier%"
On utilise la commande Move
Move "C:\fichier\a\déplacer.exe" "C:\nouvelle\emplacement"
La solution consite a réécrire le fichier en sautant les lignes vides:
FOR /F %%i in ('TYPE fichier.txt') DO IF NOT "%%i"=="" Echo %%i>> fichier2.txt
echo un texte > "?te:~0,2%-?te:~3,2%-?te:~6,4%.txt"
for /r "C:\répertoire\contenant\les\fichier\txt\" %%i in (*.txt) do if %%~zi==0 del "%%i"
Fonction touch, uniquement pour des fichiers existants :
dir
test.txt
copy
/b test.txt +,,
dir
test.txt
Lien : Source : Alex Pinsker