Wie kann ich eine Batchdatei zum Schreiben in eine Textdatei verwenden?


191

Ich muss ein Skript erstellen, das eine Textzeile in eine Textdatei im selben Verzeichnis wie die Batchdatei schreiben kann.

Antworten:


307

Sie können echodie Ausgabe verwenden und in eine Textdatei umleiten (siehe Hinweise unten):

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

Ausgabe:

D: \ Temp> WriteText

D: \ Temp> Geben Sie test.txt ein
Dies ist ein Test
123
245,67

D: \ Temp>

Anmerkungen:

  • @echo off Deaktiviert das Drucken jedes Befehls auf der Konsole
  • Wenn Sie ihm keinen bestimmten Pfadnamen geben, wird die Umleitung mit >oder >>in das aktuelle Verzeichnis (das Verzeichnis, in dem der Code ausgeführt wird) geschrieben.
  • Der echo This is a test > test.txtverwendet eine >, um alle bereits vorhandenen Dateien mit neuen Inhalten zu überschreiben.
  • Die verbleibenden echoAnweisungen verwenden zwei >>Zeichen, um an die Textdatei anzuhängen (zu ergänzen), anstatt sie zu überschreiben.
  • Das gibt type test.txteinfach die Dateiausgabe in das Befehlsfenster ein.

14
Die letzten drei @Zeichen sind überflüssig, da Sie bereits hatten @echo off. Sie werden nur benötigt, wenn das Echo nicht ausgeschaltet wurde. stackoverflow.com/a/21077142/632951
Pacerier

119

Es ist einfacher, nur einen Codeblock zu verwenden, als dass Sie nur eine Umleitung benötigen.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt

7
OMG so einfach und es macht es halbwegs menschlich, was beeindruckend ist, da Scripting wie das Intro in die jibberische Welt des Programmierens ist
Gregg

Dies hat bei mir nicht funktioniert, aber eine Variation mit der Umleitung vor dem Block `>
filename.txt

2
@willw Ich nehme an, es gibt eine zusätzliche schließende Klammer irgendwo in Ihrem Codeblock. Andernfalls muss es funktionieren, unabhängig davon, ob Sie die Umleitung vor oder nach dem Block setzen
jeb

@jeb Möglicherweise - Ich habe meine ursprüngliche Testdatei nicht mehr und kann mich daher nicht sicher sein. Sicherlich musste ich mich später dem Schließen von Zeichen als ^) entziehen, was Ihre Hypothese eher stützen würde. Zumindest macht unsere Diskussion andere auf eine mögliche Falle aufmerksam.
Willw

23

echo "blahblah"> txt.txt löscht den txt und setzt blahblah an seine Stelle

echo "blahblah">> txt.txt wird blahblah in eine neue Zeile im txt schreiben

Ich denke, dass beide einen neuen txt erstellen, wenn keiner existiert (ich weiß, dass der erste dies tut)

Wenn oben " txt.txt" geschrieben ist, kann bei Bedarf ein Dateipfad eingefügt werden. zB C:\Users\<username>\desktop, was es auf ihren Desktop legt.


2
Ja, das gilt für beide. Leider fügt Ihre Antwort keine zusätzlichen Informationen zu den vorhandenen Antworten hinzu (Erwähnung '%~dp0würde ...)
Stephan

in einen txt im selben ordner schreiben?
Darth Tater

in den Ordner schreiben, in dem sich die Batchdatei befindet (unabhängig von irgendwelchen cdoder pushdBefehlen)
Stephan

14
    @echo off

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

    exit

Die beiden >>bedeuten, dass die zweite Zeile an die Datei angehängt wird (dh die zweite Zeile beginnt nach der letzten Zeile von xy.txt).

So xy.txtsieht das aus:

this is in the first line
this is in the second line

5

@echo off Titelschreiben mit Batch Files Farbe 0a

echo Beispieltext> Dateiname.txt echo Zusätzlicher Text >> Dateiname.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

echo Example Text > Filename.txt
echo Additional Text >> Filename.txt

4
  • Sie können copy con damit einen langen Text schreiben
  • Beispiel:

    C: \ COPY CON [Laufwerk:] [Pfad] [Dateiname]

    .... Inhalt

    F6

    1 Datei (en) wird kopiert


In einer Batchdatei fordert copy den Benutzer auf.
Heringer

3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

hoffe das hilft. Sie sollten die Zeichenfolgennamen (IDK, wie es heißt) und den Dateinamen ändern

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.