Can somebody remember what was the command to create an empty file in MSDOS using BAT file?
13 Answers
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 list 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.
9 Comments
copy /Y NUL command it might erase existing content. If you are used to Unix' touch command, this might not at all be what you expect .) Using type NUL >> emptyfile.txt is safer in this regard.CON, aside from that linked in this answer. Could someone share some light reading?echo. 2>EmptyFile.txt
This redirects output stream 2 (stderr) to a file. The command echo doesn't output anything to stderr, so the file becomes empty.
Plain echo would work too, but echo. is better because it doesn't print the useless and potentially confusing message ECHO is on.
12 Comments
. in echo.echo 2 without the ., the console would read "ECHO is off." Using echo. 2 effectively silences console output by only displaying a newline.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.
4 Comments
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: 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!
7 Comments
type nul ..., not type <nul ..., actually.NonExistentCommand <nul >EmptyFile.txt and it workedbreak > file.txt, props foxidrive>> if you need "must exist but should not be truncated if exist" (like Unix touch does)REM. > empty.file
4 Comments
REM., cmd will respond with "'rem.' is not recognized as an internal or external command, operable program or batch file."rem/ instead of rem. solves that problem...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
1 Comment
CD (no extension) in the current directory, and you type CD., cmd will respond with "'CD.' is not recognized as an internal or external command, operable program or batch file." If you instead type CD . (with a space before the dot) it will work.One more to add to the books - short and sweet to type.
break>file.txt
break>"file with spaces in name.txt"
6 Comments
fsutil file createnew file.cmd 0
2 Comments
You can use a TYPE command instead of COPY. Try this:
TYPE File1.txt>File2.txt
Where File1.txt is empty.
2 Comments
type NUL>File2.txtThe easiest way is:
echo. > Filename.txt
2 Comments
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!
cmd.exe, are you?Set-Content "your_file.txt" .gitignore -Encoding utf8this is case-sensitive and forces utf8 encoding! (I also posted this as an answer).