如何在DOS/Windows命令行创建一个空文件?
我试着:
copy nul > file.txt
但是它总是显示文件被复制了。
在标准cmd中是否有其他方法?
它应该是一个不需要来自Cygwin或任何其他非标准命令的触摸命令的方法。 该命令需要从脚本运行,因此不能使用击键。
如何在DOS/Windows命令行创建一个空文件?
我试着:
copy nul > file.txt
但是它总是显示文件被复制了。
在标准cmd中是否有其他方法?
它应该是一个不需要来自Cygwin或任何其他非标准命令的触摸命令的方法。 该命令需要从脚本运行,因此不能使用击键。
当前回答
输入nul > filename将创建一个新的空文件。
也复制null文件名工作没有重定向(更明显的解决方案)。
其他回答
如果你真的想要一个完全空的文件,没有任何输出到stdout,你可以欺骗一点:
copy nul file.txt > nul
只需将stdout重定向为nul, copy的输出就会消失。
在管理员模式下运行CMD,输入以下内容:
NUL > file_name.extention
或者输入这个
echo .> file_name.extention
我读了很多文章,但这不是最短的方法。
请使用命令:
>copy /b NUL empty_file.txt
echo "" > filename
我相信这适用于Windows/DOS,但我最后一次使用这两种操作都是很久以前的事了。我确实知道一个事实,它基本上适用于任何POSIX兼容的操作系统。
Luc Vu或Erik Konstantopoulos指出:
copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt
“如何从批处理文件创建空文本文件?”(2008)还指出:
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提到一个原创的例子:
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
本着同样的精神,塞缪尔在评论中建议:
我用的最短的一个基本上是Nomad的:
.>out.txt
它会给出一个错误:
'.' is not recognized as an internal or external command
但是这个错误是在stderr上。>只重定向没有产生任何东西的stdout。 因此会创建一个空文件。 这里可以忽略错误消息。或者,就像Rain的回答一样,重定向到NUL:
.>out.txt 2>NUL
(原答案,2009年11月)
echo.>filename
(echo ""实际上会把""放入文件!echo中没有'。’会把“Command ECHO activated”放在文件中…)
注意:结果文件不是空的,但包含一个返回行序列:2字节。
这个讨论指向一个真正的空文件的真正批处理解决方案:
<nul (set/p z=) >filename
dir filename
11/09/2009 19:45 0 filename
1 file(s) 0 bytes
“<nul”向set/p命令输出一个空响应,这将导致 变量保持不变。与通常的set/p一样,字符串指向 等号的右侧显示为提示符,没有CRLF。
因为这里“等号右边的字符串”是空的……结果是一个空文件。
cd. >文件名的区别(在Patrick Cuff的回答中提到过,也会产生一个0字节长度的文件)是这个“重定向位”(<nul…trick)可以用来回声行没有任何CR:
<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt
dir命令应该指示文件大小为11字节:"helloworld!"。