Comment puis-je utiliser un fichier batch pour écrire dans un fichier texte?

192

J'ai besoin de créer un script capable d'écrire une ligne de texte dans un fichier texte dans le même répertoire que le fichier batch.

09stephenb
la source

Réponses:

309

Vous pouvez utiliser echoet rediriger la sortie vers un fichier texte (voir les notes ci-dessous):

rem Saved in D:\Temp\WriteText.bat
@echo off
echo This is a test> test.txt
echo 123>> test.txt
echo 245.67>> test.txt

Production:

D: \ Temp> WriteText

D: \ Temp> tapez test.txt
C'est un test
123
245,67

D: \ Temp>

Remarques:

  • @echo off désactive l'impression de chaque commande sur la console
  • Sauf si vous lui donnez un nom de chemin spécifique, la redirection avec >ou >>écrira dans le répertoire courant (le répertoire dans lequel le code est exécuté).
  • L' echo This is a test > test.txtutilise >pour écraser tout fichier qui existe déjà avec un nouveau contenu.
  • Les echoinstructions restantes utilisent deux >>caractères à ajouter au fichier texte (ajouter à), au lieu de l'écraser.
  • Le type test.txttype simplement la sortie du fichier dans la fenêtre de commande.
Ken White
la source
14
Les trois derniers @signes sont redondants puisque vous en aviez déjà @echo off. Ils ne sont nécessaires que si l'écho n'a pas été désactivé. stackoverflow.com/a/21077142/632951
Pacerier
119

Il est plus facile d'utiliser un seul bloc de code, alors vous n'avez besoin que d'une seule redirection.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt
jeb
la source
7
OMG si simple et cela le rend à mi-chemin humain, ce qui est impressionnant car le script est comme l'intro du monde jibberish de la programmation
gregg
Cela n'a pas fonctionné pour moi, mais une variante avec la redirection devant le bloc `> filename.txt (` a fonctionné.
willw
2
@willw Je suppose qu'il y a une parenthèse fermante supplémentaire quelque part dans votre bloc de code Sinon, cela doit fonctionner, que vous placiez la redirection devant ou après le bloc
jeb
@jeb Possiblement - Je n'ai plus mon fichier de test d'origine, donc je ne peux pas être sûr. Certes, j'ai dû par la suite échapper aux caractères fermants comme ^), ce qui tendrait à étayer votre hypothèse. Pourtant, au moins notre discussion alerte les autres sur un piège possible.
willw le
23

echo "blahblah"> txt.txt effacera le txt et mettra blahblah à sa place

echo "blahblah">> txt.txt écrira blahblah sur une nouvelle ligne dans le txt

Je pense que les deux créeront un nouveau txt s'il n'en existe pas (je sais que le premier le fait)

Là où " txt.txt" est écrit ci-dessus, un chemin de fichier peut être inséré si vous le souhaitez. par exemple C:\Users\<username>\desktop, qui le mettra sur leur bureau.

Dark Tater
la source
2
oui, c'est vrai pour les deux. Malheureusement, votre réponse n'ajoute pas d'informations supplémentaires aux réponses existantes (en mentionnant '%~dp0serait ...)
Stephan
écrire dans un txt dans le même dossier?
Darth Tater
pour écrire dans le dossier, où réside le fichier batch (indépendamment de toute commande cdou pushd)
Stephan
14
    @echo off

    (echo this is in the first line) > xy.txt
    (echo this is in the second line) >> xy.txt

    exit

Les deux >>signifient que la deuxième ligne sera ajoutée au fichier (c'est-à-dire que la deuxième ligne commencera après la dernière ligne de xy.txt).

voici à quoi xy.txtressemble le:

this is in the first line
this is in the second line
Organe
la source
5

@echo off Ecriture de titre à l'aide des fichiers batch couleur 0a

echo Exemple de texte> Nom de fichier.txt echo Texte supplémentaire >> Nom de fichier.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

echo Example Text > Filename.txt
echo Additional Text >> Filename.txt
As
la source
4
  • Vous pouvez utiliser copy con pour écrire un long texte
  • Exemple:

    C: \ COPY CON [lecteur:] [chemin] [nom de fichier]

    .... Contenu

    F6

    1 fichier (s) est copié

Pham Thanh
la source
Dans un fichier batch, copy con invite l'utilisateur.
heringer
3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

J'espère que cela t'aides. vous devez changer les noms de chaîne (IDK comment il est appelé) et le nom de fichier

John Caleb Garon
la source