239

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.

Mark Amery
  • 143,130
  • 81
  • 406
  • 459
09stephenb
  • 9,358
  • 15
  • 53
  • 91

7 Answers7

385

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
  • 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.
Marco
  • 7,007
  • 2
  • 19
  • 49
Ken White
  • 123,280
  • 14
  • 225
  • 444
150

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

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt
jeb
  • 78,592
  • 17
  • 171
  • 225
  • 12
    OMG so simple & it makes it half-way human which is impressive since scripting is like the intro to the jibberish world of programming – gregg Jul 08 '15 at 21:50
  • This didn't work for me, but a variation with the redirection in front of the block ` > filename.txt ( ` did work. – willw Jun 20 '19 at 10:46
  • 2
    @willw I suppose, there is an additional closing parenthesis somewhere in your code block.Else it must work, regardless if you put the redirection in front or after the block – jeb Jun 20 '19 at 14:49
  • @jeb Possibly - I no longer have my original test file, so can't be sure. Certainly I have subsequently had to escape closing ) characters as ^), which would tend to support your hypothesis. Still, at least our discussion alerts others to a possible trap. – willw Jun 21 '19 at 15:08
  • Change `...` to `echo ...` to make it executable. I don't understand why it doesn't append to an existing file. – flywire May 31 '22 at 08:00
  • @flywire Appending requires `>> filename.txt`, for creating a new file use `> filename.txt` – jeb May 31 '22 at 08:07
  • Of course, thanks. – flywire May 31 '22 at 08:23
32

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.

Darth Tater
  • 457
  • 4
  • 7
  • 2
    yes, it's true for both. Sadly your answer doesn't add additional information to the existing answers.(mentioning `'%~dp0` would...) – Stephan Jul 15 '15 at 07:37
  • to write to a txt in the same folder? – Darth Tater Jul 15 '15 at 21:46
  • to write into the folder, [where the batchfile resides](http://stackoverflow.com/a/10290765/2152082) (independent of any `cd` or `pushd` commands) – Stephan Jul 16 '15 at 06:09
16
    @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
Jay Godse
  • 15,163
  • 16
  • 84
  • 131
Organ
  • 163
  • 3
4

@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
Ace
  • 49
  • 1
  • 1
3
  • 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

pc43
  • 439
  • 1
  • 7
  • 19
  • 1
    In a batch file, copy con prompts the user. – heringer Sep 22 '17 at 20:48
  • `copy con` is useless in a batch file. It also requires user input, whether at the terminal prompt or in a batch file, so it does not do anything the question asked. – Ken White Mar 21 '22 at 02:04
1
@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

Kumar Saurabh
  • 2,297
  • 5
  • 29
  • 43