Posted By: Anonymous
How to create an empty file at the DOS/Windows command-line?
copy nul > file.txt
but it always displays that a file was copied.
Is there any other method in the standard cmd?
It should be a method that does not require the touch command from Cygwin or any other nonstandard commands.
The command needs to run from a script so keystrokes cannot be used.
copy NUL EMptyFile.txt copy /b NUL EmptyFile.txt
"How to create empty text file from a batch file?" (2008) also points to:
type NUL > EmptyFile.txt # also echo. 2>EmptyFile.txt copy nul file.txt > nul # also in qid's answer below REM. > empty.file fsutil file createnew file.cmd 0 # to create a file on a mapped drive
C:UsersVonCprogtests>aaaa > empty_file 'aaaa' is not recognized as an internal or external command, operable program or batch file. C:UsersVonCprogtests>dir Folder C:UsersVonCprogtests 27/11/2013 10:40 <REP> . 27/11/2013 10:40 <REP> .. 27/11/2013 10:40 0 empty_file
the shortest one I use is basically the one by Nomad:
It does give an error:
'.' is not recognized as an internal or external command
But this error is on stderr. And
> only redirects stdout, where nothing have been produced.
Hence the creation of an empty file.
The error message can be disregarded here. Or, as in Rain‘s answer, redirected to
(Original answer, November 2009)
echo "" would actually put "" in the file! And
echo without the ‘.’ would put "
Command ECHO activated" in the file…)
Note: the resulting file is not empty but includes a return line sequence: 2 bytes.
This discussion points to a true batch solution for a real empty file:
<nul (set/p z=) >filename dir filename 11/09/2009 19:45 0 filename 1 file(s) 0 bytes
<nul" pipes a
nulresponse to the
set/pcommand, which will cause the
variable used to remain unchanged. As usual with
set/p, the string to the
right of the equal sign is displayed as a prompt with no CRLF.
Since here the "string to the right of the equal sign" is empty… the result is an empty file.
The difference with
cd. > filename (which is mentioned in Patrick Cuff’s answer and does also produce a 0-byte-length file) is that this "bit of redirection" (the
<nul... trick) can be used to echo lines without any CR:
<nul (set/p z=hello) >out.txt <nul (set/p z= world!) >>out.txt dir out.txt
dircommand should indicate the file size as 11 bytes: "