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 anulresponse to theset/pcommand, 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
dircommand 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