如何在Windows命令行中创建一个空文件?

624
在DOS/Windows命令行中如何创建一个空文件?
我尝试了:
copy nul > file.txt

但它始终显示已复制某个文件。

标准cmd中是否有另一种方法?

应该有一种不需要来自Cygwin或任何其他非标准命令的touch命令的方法。 该命令需要从脚本运行,因此不能使用按键。


刚刚发现一个真正的批处理命令导致生成了一个空文件(0字节):我已更新了我的答案。 - VonC
4
请问需要翻译的内容是:"Duplicate: https://dev59.com/wXVC5IYBdhLWcg3wsTbv, "How to create empty text file from a batch file?". (But, IMHO, the answers are better here.)" ? - Peter Mortensen
是的,执行命令copy nul > file.txt会输出文本“1 file(s) copied.” 但并不会创建一个空文件。 - Ripon Al Wasim
6
对我而言,如果你不能用一个命令创建一个空白文件,这只是证明了MS-DOS很垃圾。 - Kellen Stuart
4
@KolobCanyon:当然可以,就像已经发布的答案一样。但是,您真的认为快速创建空文件应该是面向终端用户并需要在16K RAM中运行的操作系统的优先考虑因素吗?毕竟,在很少的一些特殊情况下,这并不是一件特别有用的事情。 - Harry Johnston
显示剩余3条评论
35个回答

5
您可以使用旧命令。
copy con file_name.ext

不要输入任何东西,只需按下F6即可保存。然而,它会打印“文件已复制”,但当您打开文件时,文件将为空。


这是如何工作的?为什么它能工作?con是一些保留的东西吗?你能详细说明一下吗?请通过编辑您的答案来回复,而不是在评论中回复(不要包含“Edit:”,“Update:”或类似的内容 - 答案应该看起来像是今天写的)。 - Peter Mortensen
就像我写的那样,不要输入任何内容,只需按F6键即可。 - Amado Saladino
这是最初的一种方法,因为像Peter问的那样,是的,Con是一个保留字。如果你想测试它,试着把一个目录名改成CON,看看它对你的生活选择不满意。 - easleyfixed

5

这对我有用,

echo > file.extension

今天我找到了另一种方法。我从其他答案中得到了灵感,但它确实有效:

sometext > filename.extension

例如,
xyz > emptyfile.txt  //this would create an empty zero byte text file
abc > filename.mp4   //this would create an zero byte MP4 video media file

这将在命令提示符中显示一个错误消息,内容为:

xyz 不是内部或外部命令,也不是可运行的程序或批处理文件。

但我发现奇怪的是,即使该命令不是标准的Windows命令,文件仍然会被创建在目录中。


1
控制台应用程序可以读/写多个“句柄”。标准的句柄有:(0) STDIN, (1) STDOUT和 (2) STDERR。我相信你这里的技巧之所以有效是因为所有的输出都被发送到错误句柄,但你只将STDOUT定向到文件中。尝试执行:“xyz> emptyfile.txt 2>&1”,将STDERR重定向到STDOUT正在使用的位置,它恰好要重定向到“emptyfile.txt”。现在您应该在该文件内看到错误消息。 - Brent Rittenhouse
1
第一个不会导致空文件。它将包含13个字符(11个普通字符+CR + LF):“ECHO is on.” - Peter Mortensen

4
尝试这个:abc > myFile.txt 首先,它会在当前工作目录(在命令提示符中)中创建一个名为myFile.txt的文件。然后运行命令abc,但是这不是有效的命令。通过这种方式,你已经获得了一个新的空文件,名称为myFile.txt

5
如果abc在路径中并且是一个格式化除安装目录外所有驱动器的便捷函数,那么这可能是非常错误的。 - Bleeding Fingers

4

4

在Windows系统上

我尝试过执行以下操作:

echo off > fff1.txt

它创建了一个名为 fff1.txt 的文件,文件大小为0KB。

我没有发现除此之外还有其他能创建空文件的命令。

注意:你必须在你想创建文件的目录中。


2
如果需要,请在创建文件后打开回显。 - QMaster
我不确定为什么会这样,但我猜测在输入上述命令后应该执行“echo on”。 - OMKAR AGRAWAL
1
那么你没有看过这里之前的30多个答案吗?关于“我没有找到除此之外可以创建空文件的命令”的问题。 - Peter Mortensen

3

还有其他简单的方法可以创建文件。

例如,您可以使用命令提示符(cmd)创建文件并用记事本(notepad)打开它。

notepad newFile.txt

这将提示您没有这样的文件,如果您想创建一个新文件。您可以像这样创建任何类型的文件。例如:
notepad newFile.js

或者

notepad newFile.py

不仅可以使用记事本,您还可以使用其他应用程序来完成此操作。例如,您可以使用Visual Studio Code创建和打开新文件。

例如,

code newFile.py

这将创建一个新的Python文件,并在vs code中打开它(如果您已经安装了vs code)。

您也可以使用此方法创建其他类型的文件。


已经多次提到过,但每次被丢弃,因为它需要用户干预。 - Stephan

3

我刚在Windows上尝试了一下:

copy con file.txt

然后按下Enter键。接着按下Ctrl + ZEnter

这个方法对我起作用了。

对于Ubuntu系统,通常我使用vi命令来创建文件。

vi file.txt

这将会打开文件。然后按下 Esc 键。然后输入 :wp 并按下 Enter 键。这将创建一个新的空数据文件。


问题中说:“该命令需要从脚本中运行,因此无法使用按键输入。” - Peter Mortensen

3
另一种方法:
copy nul 2> empty_file.txt

为什么它能工作?它的操作原理是什么? - Peter Mortensen

2
这里有另一种方法:
rem/ > file.ext

斜杠/是必须的;没有它,重定向部分将被rem注释掉。


这个方法实际上可以在DOSBox上运行,而不像其他很多解决方案。尝试将'echo'的输出写入空文件会添加一个换行符,使用'NUL'则似乎会无限地填充一个文件;而如果你尝试执行一个不存在的命令,DOSBox会将实际的操作系统响应重定向到文本文件中。 - Nyerguds

1

这将更改命令行窗口的标题,但也会创建一个空文件。

title > file.txt

悬念重重!它会将命令行窗口标题更改为什么? - Peter Mortensen
没有标题? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接