2 votes

Cmd file met le contenu du fichier dans var avec newline

Je travaille sur un cmd script. Dans ce script, je lis un fichier et je place le résultat dans une variable. Mon fichier ressemble à quelque chose comme ceci :

Première ligne (Ligne vierge) Deuxième ligne (Ligne vierge) Et ça continue comme ça

Dans mon code, j'utilise ceci :

For /f "Tokens=* Delims=" %%x in (temp.txt) do set content=!content!%%x

Par conséquent, tout est sur une seule ligne et je n'ai pas de ligne vierge : Première ligne, deuxième ligne ... Comment puis-je obtenir la ligne vierge ?

1voto

jeb Points 26035

Votre boucle for ne récupère pas la ligne vide, car les lignes vides sont sautées.
Vous avez besoin d'une astuce, comme faire précéder chaque ligne d'un numéro de ligne, avec findstr.
Et pour ajouter des sauts de ligne, vous pouvez définir une variable contenant un seul caractère de saut de ligne (dans le code, la variable \n variable)

@echo off
SETLOCAL EnableDelayedExpansion
(set \n=^
%=do not delete this line=%
)

set "content="
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t7.bat"`) do (
    set "var=%%a"
    set "var=!var:*:=!"
    if defined content (
        set "content=!content!!\n!!var!"
    ) else set "content=!var!"
)

echo(!content!

Ce code a encore quelques problèmes, avec des points d'exclamation, mais pour un simple contenu de fichier il fonctionne

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