How can I create an empty file at the DOS/Windows command-line?
I tried:
copy nul > file.txt
But it always displays that a file was copied.
Is there another 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.
From within Windows, right-click in the area you want to create the file. For example, right-click the desktop to create a new text file on the desktop. In the drop-down menu that appears, select New and choose Text Document.
Type mkdir followed by the name of the folder you wish to create, then press “Enter“. Example showing switching to the G drive, then to the test folder and the creation of a folder called “mynewfolder”.
Without redirection, Luc Vu or Erik Konstantopoulos point out to:
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
Nomad mentions an original one:
C:\Users\VonC\prog\tests>aaaa > empty_file 'aaaa' is not recognized as an internal or external command, operable program or batch file. C:\Users\VonC\prog\tests>dir Folder C:\Users\VonC\prog\tests 27/11/2013 10:40 <REP> . 27/11/2013 10:40 <REP> .. 27/11/2013 10:40 0 empty_file
In the same spirit, Samuel suggests in the comments:
the shortest one I use is basically the one by Nomad:
.>out.txt
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 NUL
:
.>out.txt 2>NUL
(Original answer, November 2009)
echo.>filename
(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
The "
<nul
" pipes anul
response to theset/p
command, which will cause the variable used to remain unchanged. As usual withset/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
The
dir
command should indicate the file size as 11 bytes: "helloworld!
".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With