web-dev-qa-db-fra.com

Ajouter une nouvelle ligne dans un fichier texte avec un fichier batch Windows

J'ai un fichier texte qui contient plus de 200 lignes et je veux juste ajouter une nouvelle ligne avant la ligne 4. J'utilise Windows XP.

Exemple de fichier texte avant saisie:

header 1
header 2
header 3
details 1
details 2

Après la sortie:

header 1
header 2
header 3
<----- This is new line ---->
details 1
details 2
21
newbie18

Je pense que vous utilisez le

echo Text >> Example.txt 

une fonction?

Si c'est le cas, la réponse serait simplement d'ajouter un "." (Point) directement après l'écho avec rien d'autre là-bas.

Exemple:

echo Blah
echo Blah 2
echo. #New line is added
echo Next Blah
24
avitex

Vous pouvez utiliser:

type text1.txt >> combine.txt
echo >> combine.txt
type text2.txt >> combine.txt

ou quelque chose comme ça:

echo blah >> combine.txt
echo blah2 >> combine.txt
echo >> combine.txt
echo other >> combine.txt
3
khaled

AVERTISSEMENT: la solution ci-dessous ne conserve pas les onglets de fin.


Si vous connaissez le nombre exact de lignes dans le fichier texte, essayez la méthode suivante:

@ECHO OFF
SET origfile=original file
SET tempfile=temporary file
SET insertbefore=4
SET totallines=200
<%origfile% (FOR /L %%i IN (1,1,%totallines%) DO (
  SETLOCAL EnableDelayedExpansion
  SET /P L=
  IF %%i==%insertbefore% ECHO(
  ECHO(!L!
  ENDLOCAL
)
) >%tempfile%
COPY /Y %tempfile% %origfile% >NUL
DEL %tempfile%

La boucle lit les lignes du fichier d'origine une par une et les sort. La sortie est redirigée vers un fichier temporaire. Lorsqu'une certaine ligne est atteinte, une ligne vide est sortie avant elle.

Après avoir terminé, le fichier d'origine est supprimé et le fichier temporaire reçoit le nom d'origine.


[~ # ~] mise à jour [~ # ~]

Si le nombre de lignes est inconnu au préalable, vous pouvez utiliser la méthode suivante pour l'obtenir:

FOR /F %%C IN ('FIND /C /V "" ^<%origfile%') DO SET totallines=%%C

(Cette ligne remplace simplement le SET totallines=200 ligne dans le script ci-dessus.)

La méthode a un petit défaut: si le fichier se termine par une ligne vide, le résultat sera le nombre réel de lignes moins un. Si vous avez besoin d'une solution de contournement (ou si vous voulez simplement jouer en toute sécurité), vous pouvez utiliser la méthode décrite dans cette réponse .

1
Andriy M