2 votes

Supprimer les lignes vides

J'essaie de supprimer les lignes vides d'un fichier texte à l'aide d'un fichier batch Windows.

Fichier original :

Test 1234
Test 12

Test 11

Test 1134

Fichier modifié :

Test 1234
Test 12
Test 11
Test 1134

*Notez que la première ligne du fichier original était également une ligne vide.

J'ai essayé, mais cela ne fait pas grand-chose :

for /F "delims=" %a in (file.txt) do echo %a

1voto

Mofi Points 2690

La solution est simple :

@echo off
if exist "file.txt" %SystemRoot%\System32\findstr.exe /R "^." "file.txt" >"file.tmp"
if exist "file.tmp" for %%I in ("file.tmp") do if %%~zI == 0 (del "file.tmp") else move /Y "file.tmp" "file.txt"

FINDSTR exécute une expression régulière pour trouver les lignes qui ont au moins un caractère au début de la ligne et ainsi de suite. FINDSTR sort toutes les lignes qui ne sont pas vides. La sortie par FINDSTR est redirigé vers un fichier temporaire file.tmp .

Le fichier temporaire créé remplace le fichier d'entrée s'il est créé (le fichier d'entrée existe) et n'est pas vide, ce qui signifie qu'au moins une ligne non vide a été trouvée dans le fichier d'entrée. Le fichier temporaire est supprimé lors de sa création, mais il est vide.

Pour comprendre les commandes utilisées et leur fonctionnement, ouvrez un fichier invite de commande exécutez-y les commandes suivantes, et lisez entièrement toutes les pages d'aide affichées pour chaque commande très attentivement.

  • del /?
  • echo /?
  • findstr /?
  • for /?
  • if /?
  • move /?

Voir également la documentation de Microsoft sur Utilisation des opérateurs de redirection des commandes pour une explication de l'opérateur de redirection > .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X