Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I create an empty file at the command line in Windows?

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.

like image 955
Grendler Avatar asked Nov 09 '09 18:11

Grendler


People also ask

How do I create a blank file in Windows?

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.

How do you create an empty folder from a Windows command prompt?

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”.


1 Answers

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 a nul response to the set/p command, 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 

The dir command should indicate the file size as 11 bytes: "helloworld!".

like image 71
VonC Avatar answered Oct 07 '22 18:10

VonC