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


494

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

我试过了:

copy nul > file.txt

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

标准cmd中还有其他方法吗?

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


刚发现一个真正的批处理命令导致一个空文件(0字节):我已经更新了答案。
VonC

3
复制:stackoverflow.com/questions/210201,“如何从批处理文件创建空文本文件?”。(但是恕我直言,这里的答案更好。)
Peter Mortensen 2010年

是的,创建的命令copy nul> file.txt具有文本“ 1个文件已复制”。未创建空文件。
Ripon Al Wasim 2015年

5
这对我来说只是证明了MS-DOS是垃圾,如果您不能使用一个命令创建一个普通的空文件。
Kolob峡谷

2
@KolobCanyon:当然,您可以根据已经发布的答案进行操作。但是,您真的认为快速创建一个空文件的能力应该是针对最终用户并需要在16K RAM中运行的操作系统的优先级吗?毕竟,这并不是一件特别有用的事情,除了少数罕见情况。
哈里·约翰斯顿

Answers:


571

如果没有重定向,吕克·武埃里克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

游牧民族提到一个原始的

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,而没有产生任何结果
因此,创建一个文件。错误消息可以在这里忽略。


(原始答案,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”通过管道nul传递对set/p命令的响应,这将导致所使用的变量保持不变。与一样set/p,等号右边的字符串作为提示显示,没有CRLF。

由于此处的“等号右边的字符串”为空,因此结果为空文件。


与的区别cd. > filename(在Patrick Cuff的答案中提到,并且还会产生一个0字节长的文件),这种“重定向的位”(<nul...技巧)可以用于回显没有任何CR的行

<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt

dir命令应将文件大小指示为11个字节:“ helloworld!”。


2
您真正想要的,echo.>filename因为它将包含空格以及换行符。
Agent_9191

1
使用该rem命令可避免创建其中带有空行的文件。
格雷格·希吉尔

@ Agent_9191:是的,我已经更新了答案。@Greg:不确定您的意思:rem>filename产生相同的结果(2个字节)
VonC

3
努法尔·易卜拉欣:不要让这个愚弄你。请看下一个答案,它有一个更容易且均等的解决方案。在第一种情况下,这里所做的部分错误(不是空的,但包含换行符),而在第二种情况下则过于复杂。
乔伊

1
@barlop是:重点是:它会在stderr上触发一些错误消息,但在stdout上什么都没有(空字符串)。并且>将stdout只out.txt。因此,创建一个空文件。您可以在这种情况下忽略错误消息。
VonC


106

这是另一种方式:

cd. > filename

11
cd. > filename不是为我工作,而是为cd > filename 工作!
NaveenDA '17年

3
“ cd> filename”将创建一个空文件,否则将使用“ cd> filename”命令在新创建的文件中打印文件路径。
niketan '17

6
使用此方法:表示cd . > filename.extension您需要在cd.
AI

77

如果您确实想要一个完全空的文件,而没有任何输出到stdout,则可以作弊:

copy nul file.txt > nul

只需将stdout重定向到nul,复制的输出就会消失。


1
如果file.txt存在,则失败。
Grendler,2009年

6
据我所知,如果文件存在则失败是一种良好的行为。
wallyk

32
+1。令人惊讶的是,被接受的答案是半错误半混淆的结果,而显然正确的答案却几乎没有功劳。要补充一点:type nul>file将是另一种方式。
乔伊(Joey)2010年

@Joey被接受的人有很多解决方案,可以创建一个空的0字节文件。
barlop

2
@barlop:作为参考,在撰写评论时,是可接受的答案。每当我在评论中引用答案时,我都不会收到通知。
乔伊(Joey)

48

打开文件 :

type file.txt

新文件 :

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>

编辑内容:

notepad file.txt

复制

copy file1.txt file1Copy.txt

改名

rename file1.txt file1_rename.txt

删除文件 :

del file.txt

cmd命令的概述
KargWare

32

阅读我帖子上的评论时,我不得不承认我没有正确地阅读问题。

在Windows命令行上,一种方法是使用fsutil

fsutil file createnew <filename> <size>

一个例子:

fsutil file createnew myEmptyFile.txt 0

下面是* nix命令行。

touch filename

该命令更改文件的修改日期,如果找不到文件,则创建该日期。


不幸的是,该问题专门指出:“没有Cygwin的触摸命令。”
qid

3
存在touch命令的非Cygwin实现:unxutils.sourceforge.net是好的。
格雷格·休吉尔

在* nix中,我个人偏向于simple > filename,它也可以用于截断现有文件。
Frank Farmer

fsutil需要管理权限。仅创建一个空文件就需要很多...
Joey

@Joey不是所有这些命令都可以创建一个空文件吗?当您习惯触摸时,即使下面的120点也很多。
约翰尼

29
echo "" > filename

我相信这可以在Windows / DOS上使用,但是我最近一次亲身体验都是很久以前的事。我确实知道,它基本上可以在任何符合POSIX的操作系统上运行。


2
显然,VonC的答案比我的要好,因此请反对。
克里斯2009年

3
不幸的是:echo“”显示双引号,并且在流重定向到文件时将它们写入文件。只是发生了同样的情况:echo> filename,因为它还将ECHO也写到文件中。
Grendler

也许您可以在创建文件之前将“ @echo off”放在行上来规避该问题?
克里斯2009年

27
call>file.txt

这是我所知道的最干净的方法。


这是什么“干净的”?
GreenAsJade '16

4
它不输出任何文件,同时易于记忆和使用。
nephi12

这是最简单有效的解决方案,并且最容易记住。
nhershy

12
cd > filename.cfg 

在无法直接创建文件的C:/ Program Files中创建文件时起作用。


11

您可以编写自己的风格。

//touch.cpp
#include <fstream>
#include <iostream>

int main(int argc, char ** argv;)
{
  if(argc !=2)
  {
    std::cerr << "Must supply a filename as argument" << endl;
    return 1;
  }
  std::ofstream foo(argv[1]);
  foo.close();
  return 0;
}

6

复制con SomeFile.txt Enter

Ctrl-Z Enter


我提出了一个问题,该命令将从脚本运行,因此不幸的是,任何键盘交互均不起作用。还是要谢谢你。
Grendler,2009年

6

创建零字节文件的另一种方法:

break > "file.txt"

6

因此您可以使用创建一个空文件

'' > newfile.txt

导航到目录,然后在PowerShell窗口中键入上面的命令。

请注意,这在Windows命令提示符下将不起作用。


5

试试这个:abc > myFile.txt 首先,它将myFile.txt在当前工作目录(在命令提示符下)中创建一个具有名称的文件。然后它将运行abc不是有效命令的命令。这样,您得到了一个名为的新空文件myFile.txt


2
如果abc位于路径中,这可能是非常错误的,并且是格式化除安装目录以外的所有驱动器的便捷功能。
2013年

5

type nul>filename 将创建一个新的空文件。

对不起,我来晚了。

更新copy nul filename无需重定向也可以工作(更明显的解决方案)。



4

您还可以使用:

echo. 2>foo

的调试输出echo.几乎肯定为空。


4

我读了很多线程,但这不是最短的方法。

请使用命令:

>copy /b NUL empty_file.txt



4

要创建任何类型的文件,您可以使用以下代码

输入nul>(文件名)。(文件类型)

例如。如果要创建文本文件,则

键入nul> demo.txt

如果要创建一个javascript文件,则

输入nul> demo.js


3

这对我有用

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”。您现在应该在该文件中看到错误消息。
布伦特·里滕豪斯


3

在Windows上, 我尝试这样做

echo off > fff1.txt

然后创建了一个名为fff1.txt的文件,文件大小为0kb

除此以外,我没有找到其他可以创建空文件的命令。

注意:您必须位于要创建文件的目录中。


如果需要,请不要忘记在创建文件后回显。
QMaster

单击ENTER后,此命令将冻结cmd。
Kavin Raju S

我不确定为什么这样做,但是我想您应该在输入上述命令后执行“ echo on”。
Omkar Agrawal


2

我只是在Windows中尝试过

copy con file.txt

然后Enter按键,然后按Ctrl+Z Enter

它为我工作。

对于Ubuntu,通常我使用VI命令创建文件

vi file.txt

它将打开文件,然后ESC按键,然后输入:wp然后enter按键。它将创建一个包含空数据的新文件。


2
  • 用内容创建一个bat文件echo '' > %1。(将文件命名为touch.bat)
  • 将文件夹添加到PATH变量。
  • 您可以使用触摸创建文件。(例如:touch temp.txt创建temp.txt文件)

检查文章以获取更多信息。


1

今天我发现了一个新的:)

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

title > file.txt

1

在管理员模式下运行CMD并输入以下命令:

NUL > file_name.extention

或者你输入这个

echo .> file_name.extention

1

这是另一种方式:

rem/ > file.ext

斜杠/是强制性的;没有它,重定向部分由注释掉rem


0

首先创建文件,使其存在:

echo . > myfile.txt

然后使用以下copy命令用空版本覆盖创建的文件:

copy /y nul myfile.txt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.