251

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.

1
  • Quick and easy one-liner. echo "some text here" >> myfile.txt Commented Jun 13, 2022 at 7:35

8 Answers 8

407

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.
Sign up to request clarification or add additional context in comments.

Comments

163

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

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

7 Comments

This didn't work for me, but a variation with the redirection in front of the block ` > filename.txt ( ` did work.
@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 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.
Change ... to echo ... to make it executable. I don't understand why it doesn't append to an existing file.
@flywire Appending requires >> filename.txt, for creating a new file use > filename.txt
|
35

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.

3 Comments

yes, it's true for both. Sadly your answer doesn't add additional information to the existing answers.(mentioning '%~dp0 would...)
to write to a txt in the same folder?
to write into the folder, where the batchfile resides (independent of any cd or pushd commands)
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

Comments

5

@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

Comments

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

2 Comments

In a batch file, copy con prompts the user.
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.
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

Comments

0

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.