09stephenb
09stephenb

Reputation: 9836

How can I use a batch file to write to a text file?

I need to make a script that can write one line of text to a text file in the same directory as the batch file.

Upvotes: 252

Views: 850590

Answers (8)

Andreas
Andreas

Reputation: 5609

My solution is similar to jeb's brilliant answer, but it requires just one additional line to be added to an existing text file so there's no need to add echo in front of each line.

(for /F "tokens=* skip=1" %%F in ('type %~0') do (echo %%F >> %~n0.txt)) & exit
Line1
Line2
Last Line

When saved as "sometext.bat" this will create a file "sometext.txt" with the content:

Line1
Line2
Last Line

Upvotes: 0

Ken White
Ken White

Reputation: 125747

You can use echo, and redirect the output to a text file (see notes below):

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

Output:

D:\Temp>WriteText

D:\Temp>type test.txt
This is a test
123
245.67

D:\Temp>

Notes:

  • @echo off turns off printing of each command to the console
  • @ at the beginning of the remaining lines stops printing of the echo command itself, but does not suppress echo output. (It allows the rest of the line after @echo to display.
  • Unless you give it a specific path name, redirection with > or >> will write to the current directory (the directory the code is being run in).
  • The @echo This is a test > test.txt uses one > to overwrite any file that already exists with new content.
  • The remaining @echo statements use two >> characters to append to the text file (add to), instead of overwriting it.
  • The type test.txt simply types the file output to the command window.

Upvotes: 405

John Caleb Garon
John Caleb Garon

Reputation: 27

@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

hope this helps. you should change the string names(IDK what its called) and the file name

Upvotes: 1

Darth Tater
Darth Tater

Reputation: 477

echo "blahblah"> txt.txt will erase the txt and put blahblah in it's place

echo "blahblah">> txt.txt will write blahblah on a new line in the txt

I think that both will create a new txt if none exists (I know that the first one does)

Where "txt.txt" is written above, a file path can be inserted if wanted. e.g. C:\Users\<username>\desktop, which will put it on their desktop.

Upvotes: 34

pc43
pc43

Reputation: 447

  • You can use copy con to write a long text
  • Example:

    C:\COPY CON [drive:][path][File name]

    .... Content

    F6

    1 file(s) is copied

Upvotes: 3

jeb
jeb

Reputation: 82420

It's easier to use only one code block, then you only need one redirection.

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

Upvotes: 163

Organ
Organ

Reputation: 163

    @echo off

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

    exit

The two >> means that the second line will be appended to the file (i.e. second line will start after the last line of xy.txt).

this is how the xy.txt looks like:

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

Upvotes: 16

Ace
Ace

Reputation: 59

@echo off Title Writing using Batch Files color 0a

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

@ECHO OFF
Title Writing Using Batch Files
color 0a

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

Upvotes: 5

Related Questions