Bonjour,
J'ai un fichier txt, avec des lignes et des lignes renseignés.
Je souhaite un fichier éventuellement exécuter un fichier batch qui supprime les lignes vides.
Quelqu'un connait-il la manipulation ?
Cordialement.
Bonjour,
J'ai un fichier txt, avec des lignes et des lignes renseignés.
Je souhaite un fichier éventuellement exécuter un fichier batch qui supprime les lignes vides.
Quelqu'un connait-il la manipulation ?
Cordialement.
Voici un exemple qui peut supprimer les lignes vides dans le même fichier batch :
Normalement après l’exécution de ce code vous allez obtenir quelque chose comme ça dans un fichier texte
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 @echo off Set "InputFile=%~f0" echo Le fichier d'entree : "%InputFile%" Set "OutputFile=%~dp0%~n0.txt" echo( echo Le fichier de sortie : "%OutputFile%" echo( echo Appuyez sur une touche pour enlever les lignes vides dans ce fichier batch pause>nul Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" Start "" "%OutputFile%" Exit /b ::***************************************************************************** :RemoveEmptyLines <InputFile> <OutputFile> for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" Exit /b ::****************************************************************************
@echo off
Set "InputFile=%~f0"
echo Le fichier d'entree : "%InputFile%"
Set "OutputFile=%~dp0%~n0.txt"
echo(
echo Le fichier de sortie : "%OutputFile%"
echo(
echo Appuyez sur une touche pour enlever les lignes vides dans ce fichier batch
pause>nul
Call:RemoveEmptyLines "%InputFile%" "%OutputFile%"
Start "" "%OutputFile%"
Exit /b
::*****************************************************************************
:RemoveEmptyLines <InputFile> <OutputFile>
for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2"
Exit /b
::*****************************************************************************
Je ne comprends pas tout à fait la manipulation demandé.
Je colle votre code dans un fichier nommé sup_ligne.bat
Et quand je vais exécuter ce fichier cela va enlever les lignes vides de monde fichier test.txt ?
On va simplifier la manip
copier et coller ce code Supp_lignes_Vides.bat
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 @echo off Title Supprimer les lignes vides dans un fichier Rem Ici on définit le chemin du fichier d'entrée Set "InputFile=c:\test\testfile.txt" If Not exist "%InputFile%" color 0c & echo "%InputFile%" not found pause>nul & exit /b Rem Ici on définit le fichier de sortie Set "OutputFile=c:\test\testfile2.txt" Rem ici on appelle notre fonction avec 2 paramètres le fichier d'entrée et le fichier de sortie afin de supprimer les lignes vides Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" Rem on ouvre le fichier de sortie Start "" "%OutputFile%" Exit /b ::***************************************************************************** :RemoveEmptyLines <InputFile> <OutputFile> for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" Exit /b ::*****************************************************************************
Voici une autre version par glisser et déposer le fichier à convertir sur le batch
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 @echo off Mode con cols=80 lines=3 & color 9E Title Supprimer les lignes vides dans un fichier par glisser et deposer Rem Ici on définit le chemin du fichier d'entrée par glisser et déposer If [%1]==[] goto :Error Set "InputFile=%1" Rem Ici on définit le fichier de sortie Set "OutputFile=%InputFile%.txt" echo Traitement du fichier "%InputFile%" Rem ici on appelle notre fonction avec 2 paramètres le fichier d'entrée et le fichier de sortie afin de supprimer les lignes vides Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" Rem on ouvre le fichier de sortie Start "" "%OutputFile%" Exit /b ::***************************************************************************** :RemoveEmptyLines <InputFile> <OutputFile> for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" Exit /b ::***************************************************************************** :Error color 0c & echo( & echo The input file is not found ! Please drag and drop a file to be processed ... pause>nul & exit /b
Je ne comprends pas.
Ce code ne donne rien. J'ai un fichier test.txt avec des sauts de lignes.
J'ai un fichier en .bat avec le code ci-dessous. En quand je fais exécuter le .bat manuellement. J'ai une fenêtre noir qui s'ouvre, je fais entrée mais aucun fichier test2.txt ne se créé.
Je cherche vraiment à ce que çà se fasse automatiquement.
L'idée c'est que j'ai un fichier qui est généré chaque jour depuis une application en .txt avec des saut de lignes, un batch vient enlever ces sauts de lignes avant qu'une autre tâche envoi se fichier ailleurs propre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 @echo off Title Supprimer les lignes vides dans un fichier Rem Ici on définit le chemin du fichier d'entrée Set "InputFile=C:\Nouveau dossier\test.txt" If Not exist "%InputFile%" color 0c & echo "%InputFile%" not found pause>nul & exit /b Rem Ici on définit le fichier de sortie Set "OutputFile=C:\UNouveau dossier\test2.txt" Rem ici on appelle notre fonction avec 2 paramètres le fichier d'entrée et le fichier de sortie afin de supprimer les lignes vides Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" Rem on ouvre le fichier de sortie Start "" "%OutputFile%" Exit /b ::***************************************************************************** :RemoveEmptyLines <InputFile> <OutputFile> for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" Exit /b ::*****************************************************************************
Good luck Mr Hoo !
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
sachadee, pourquoi ce commentaire ?
J'obtiens ceci :
Après je cherche vraiment à ce que la suppression des lignes se fassent en automatique.
Pas en manuel, du coup le glisser je ne sais pas si çà convient.
Comme indiqué dans un message précédent, l'idée, un fichier .txt avec des lignes se dépose dans un dossier à 17h.
A 17h30 la tâche btach supprime les lignes.
A 18h le fichier repart ailleurs.
C'est vraiment cette 2ème étape qu'il me manque, la suppression des lignes en automatique dans le fichier.
Le fichier texte à convertir se trouve toujours dans le même dossier ?
un seul fichier ou bien plusieurs fichiers texte dans le même dossier ?
C'est quoi le chemin de ce dossier ?
Oui
Normalement il y a un voir 2 maximum en même temps.
Pour mon test le dossier se trouve sur mon bureau un dossier nommé "Nouveau dossier"
Existe-t-il la possibilité de vous transmettre un exemple de fichier .txt que je génère et qui doit être modifié ?
Fait un copier coller de ce code et sauve le dans un fichier.bat
ensuite dépose à l'aide de la souris ton fichier test.txt sur ce fichier.bat
et tu auras en sortie un fichier sortie.bat sans ligne vide.
Attention tu dois faire un copier coller siinon le code ne marchera pas il y a un caractère spécial dans la condition if. Il
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @echo off setlocal enabledelayedexpansion (for /f "delims=" %%a in (%1) do ( set "$ligne=%%a" if not "!$ligne!"=="" echo %%a) ) >sortie.txt
apparaîtra lorsque tu faras le coller dans le notepad ou autre.
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
Bonjour,
J'ai bien copié votre code.
J'ai ensuite fait un glisser de mon test.txt vers mon fichier.bat
Cela créé bien un sortie.txt
En revanche dans mon fichier les seuls que j'ai ce n'est pas les données du fichier de base sans les lignes vides mais le chemin d'où est mon fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\Users\MD.FMI.000\Desktop\Nouveau dossier\test.txt
Essaye comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @echo off setlocal enabledelayedexpansion (for /f "delims=" %%a in ('type %1') do ( set "$ligne=%%a" if not "!$ligne!"=="" echo %%a) ) >sortie.txt
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
Ok çà marche.
Dernier point cela demande un glisser (donc une intervention manuelle)
Hors comme expliqué dans un message précédent, l'idée c'était que le fichier txt soit généré dans un dossier.
Avec le batch automatique, qu'il soit remis en forme.
Et qu'avec une autre manipulation que je maîtrise cette fois, soit copié dans une autre dossier.
La partie que je ne maîtrise pas, c'est vraiment, la suppression en automatique des lignes vides du txt. Là j'ai une partie de ma réponse mais cela demande une intervention humaine.
Salut,
D'après une petite recherche il semble que at.exe fasse le boulot.
Exemple:Envoyé par at /?
At accède au planificateur de tâche de Windows, que tu peux retrouver avec Explorer dans le panneau de configuration. A partir de là tu peux également activer, désactiver, ajouter de nouvelles tâches planifiées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\Users\xx>at 17:30 Supp_lignes_Vides.bat
Pour que le fichier de commandes n'attende plus de fichiers par glisser-déposer il faut que tu remplaces les %1 par "lecteur\chemin\fichier.ext" (à adapter au contexte) .
Bon courage.
Tu peux comme proposer par @deathman8683 faire une tâche planifiée et tu peux remplacer %1 dans mon code par le nom du fichier :
Et voilà !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @echo off setlocal enabledelayedexpansion set "$fichier=chemin/vers/ton/fichier.txt" (for /f "delims=" %%a in ('type "%$fichier%"') do ( set "$ligne=%%a" if not "!$ligne!"=="" echo %%a) ) >sortie.txt
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager