How to create empty text file from a batch file?

Batch FileCmdDos

Batch File Problem Overview


Can somebody remember what was the command to create an empty file in MSDOS using BAT file?

Batch File Solutions


Solution 1 - Batch File

copy NUL EmptyFile.txt
DOS has a few special files (devices, actually) that exist in every directory, NUL being the equivalent of UNIX's /dev/null: it's a magic file that's always empty and throws away anything you write to it. Here's a http://www.pcmag.com/encyclopedia_term/0,2542,t=DOS+device+names&amp;i=41766,00.asp">list</a> of some others; CON is occasionally useful as well.

To avoid having any output at all, you can use

copy /y NUL EmptyFile.txt >NUL
/y prevents copy from asking a question you can't see when output goes to NUL.

Solution 2 - Batch File

echo. 2>EmptyFile.txt

Solution 3 - Batch File

type NUL > EmptyFile.txt

After reading the previous two posts, this blend of the two is what I came up with. It seems a little cleaner. There is no need to worry about redirecting the "1 file(s) copied." message to NUL, like the previous post does, and it looks nice next to the ECHO OutputLineFromLoop >> Emptyfile.txt that will usually follow in a batch file.

Solution 4 - Batch File

Techniques I gathered from other answers:

Makes a 0 byte file a very clear, backward-compatible way:

type nul >EmptyFile.txt

idea via: anonymous, Danny Backett, possibly others, myself inspired by JdeBP's work

A 0 byte file another way, it's backward-compatible-looking:

REM. >EmptyFile.txt

idea via: Johannes

A 0 byte file 3rd way backward-compatible-looking, too:

echo. 2>EmptyFile.txt

idea via: TheSmurf

A 0 byte file the systematic way probably available since Windows 2000:

fsutil file createnew EmptyFile.txt 0

idea via: Emm

A 0 bytes file overwriting readonly files

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

idea via: copyitright

A single newline (2 bytes: 0x0D 0x0A in hex notation, alternatively written as \r\n):

echo.>AlmostEmptyFile.txt

Note: no space between echo, . and >.

idea via: https://stackoverflow.com/questions/132799/how-can-you-echo-a-newline-in-batch-files


edit It seems that any invalid command redirected to a file would create an empty file. heh, a feature! compatibility: uknown

TheInvisibleFeature <nul >EmptyFile.txt

A 0 bytes file: invalid command/ with a random name (compatibility: uknown):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

via: great source for random by Hung Huynh

edit 2 Andriy M points out the probably most amusing/provoking way to achieve this via invalid command

A 0 bytes file: invalid command/ the funky way (compatibility: unknown)

*>EmptyFile.txt

idea via: Andriy M

A 0 bytes file 4th-coming way:

break > file.txt

idea via: foxidrive thanks to comment of Double Gras!

Solution 5 - Batch File

REM. > empty.file

Solution 6 - Batch File

If there's a possibility that the to be written file already exists and is read only, use the following code:

ATTRIB -R filename.ext
CD .>filename.ext

If no file exists, simply do:

CD .>filename.ext

(updated/changed code according to DodgyCodeException's comment)

To supress any errors that may arise:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL

Solution 7 - Batch File

One more to add to the books - short and sweet to type.

break>file.txt
break>"file with spaces in name.txt"

Solution 8 - Batch File

fsutil file createnew file.cmd 0

Solution 9 - Batch File

You can use a TYPE command instead of COPY. Try this:

TYPE File1.txt>File2.txt

Where File1.txt is empty.

Solution 10 - Batch File

You can also use SET to create a null byte file as follows

set x=x > EmptyFile.txt

Or if you don't want to create an extra variable reassign an existing variable like

set PROMPT=%PROMPT% > EmptyFile.txt

or like this:

set "PROMPT=%PROMPT%" > EmptyFile.txt

Solution 11 - Batch File

There are infinite approaches.

Commands that output nothing:

break
cls
color
goto
pushd
popd
prompt
title

Weird Commands:

CD.
REM.
@echo off
cmd /c
START >FILE

The outdated print command produces a blank file:

print /d:EMPTY_TEXT_FILE nul

Solution 12 - Batch File

The easiest way is:

echo. > Filename.txt

Solution 13 - Batch File

IMPORTANT:

If you don't set the encoding, many softwares can break. git is a very popular example.

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 this is case-sensitive and forces utf8 encoding!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionm_pGladiatorView Question on Stackoverflow
Solution 1 - Batch FileephemientView Answer on Stackoverflow
Solution 2 - Batch FileTheSmurfView Answer on Stackoverflow
Solution 3 - Batch FileAnonymousView Answer on Stackoverflow
Solution 4 - Batch Filen611x007View Answer on Stackoverflow
Solution 5 - Batch FileJohannesView Answer on Stackoverflow
Solution 6 - Batch Filescript'n'codeView Answer on Stackoverflow
Solution 7 - Batch FilefoxidriveView Answer on Stackoverflow
Solution 8 - Batch FileEmmView Answer on Stackoverflow
Solution 9 - Batch FileMark FantoView Answer on Stackoverflow
Solution 10 - Batch FilePeterEView Answer on Stackoverflow
Solution 11 - Batch FileHaxAddict1337View Answer on Stackoverflow
Solution 12 - Batch FileBatchmanView Answer on Stackoverflow
Solution 13 - Batch FileWolfpack'08View Answer on Stackoverflow