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

Gre*_*ler 465 windows command-line cmd file

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

我试过了:

copy nul > file.txt
Run Code Online (Sandbox Code Playgroud)

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

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

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

Von*_*onC 538

如果没有重定向,吕克·武埃里克Konstantopoulos 出来到:

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

" 如何从批处理文件创建空文本文件? "(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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Samuel以同样的精神在评论中建议:

我使用的最短的基本上是Nomad的那个:

.>out.txt
Run Code Online (Sandbox Code Playgroud)

它确实给出了一个错误:

'.' is not recognized as an internal or external command
Run Code Online (Sandbox Code Playgroud)

但这个错误在stderr上.并且>只重定向stdout,没有生成任何内容.
因此创建了一个文件.这里可以忽略错误消息.


(原始答案,2009年11月)

echo.>filename
Run Code Online (Sandbox Code Playgroud)

(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
Run Code Online (Sandbox Code Playgroud)

" <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
Run Code Online (Sandbox Code Playgroud)

dir命令应将文件大小指示为12个字节:" hello world!".

  • +1,但可以看出为什么用DOS编写脚本不受欢迎.:) (8认同)
  • 努法尔·易卜拉欣:不要让这个骗过你; 只看下一个答案,它有一个更容易和同样有效的解决方案.这里做的是第一种情况下的部分错误(非空但包含换行符)并且在第二种情况下过于复杂. (3认同)
  • 你真的想要`echo.> filename`,因为它将包含空格和换行符. (2认同)
  • @barlop 是的:这就是重点:它在 stderr 上触发了一些错误消息,但在 stdout 上触发了 *nothing*(空字符串)。并且 `&gt;` 仅将标准输出重定向到 `out.txt`。因此创建了一个空文件。您可以忽略此上下文中的错误消息。 (2认同)

小智 261

试试这个:

type NUL > 1.txt
Run Code Online (Sandbox Code Playgroud)

这肯定会创建一个空文件.


Pat*_*uff 100

这是另一种方式:

cd. > filename
Run Code Online (Sandbox Code Playgroud)

  • `CD.> filename`对我来说不起作用而不是`cd> filename`有效! (10认同)
  • 使用这个:`cd.> filename.extension`意思是你需要在`cd`和`.`之间留一个空格 (4认同)
  • “ cd。&gt; filename”创建空文件,否则您将使用“ cd&gt; filename”命令在新创建的文件中打印文件路径。 (3认同)

qid*_*qid 74

如果你真的想要一个完全空的文件,没有任何输出到stdout,你可以作弊:

copy nul file.txt > nul
Run Code Online (Sandbox Code Playgroud)

只需将stdout重定向到nul,副本的输出就会消失.

  • +1.令人惊讶的是,接受的答案是错误的和半复杂的,而明显正确的答案几乎没有信用.要添加到这个:`type nul> file`将是另一种方式. (30认同)
  • 如果文件存在则失败是一个很好的行为,因为我理解这个问题. (6认同)
  • 如果 file.txt 存在,则失败。 (2认同)
  • @barlop:作为参考,[this](https://stackoverflow.com/revisions/1702790/5) 是撰写评论时已接受的答案。每次我在评论中引用的答案发生变化时,我都不会收到通知。 (2认同)

iCr*_*est 43

打开文件 :

type file.txt
Run Code Online (Sandbox Code Playgroud)

新文件 :

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>
Run Code Online (Sandbox Code Playgroud)

编辑内容:

notepad file.txt
Run Code Online (Sandbox Code Playgroud)

复制

copy file1.txt file1Copy.txt
Run Code Online (Sandbox Code Playgroud)

改名

rename file1.txt file1_rename.txt
Run Code Online (Sandbox Code Playgroud)

删除文件 :

del file.txt
Run Code Online (Sandbox Code Playgroud)


nas*_*ash 32

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

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

fsutil file createnew <filename> <size>
Run Code Online (Sandbox Code Playgroud)

一个例子:

fsutil file createnew myEmptyFile.txt 0
Run Code Online (Sandbox Code Playgroud)

以下是*nix命令行.

touch filename
Run Code Online (Sandbox Code Playgroud)

此命令会更改文件的修改日期,或者在找不到文件时创建它.

  • 存在touch命令的非Cygwin实现:http://unxutils.sourceforge.net/是好的. (3认同)

Kri*_*ris 28

echo "" > filename
Run Code Online (Sandbox Code Playgroud)

我相信这适用于Windows/DOS,但我最近的实践经验是很久以前的.我确实知道它基本上适用于所有符合POSIX标准的操作系统.

  • 不幸的是:echo""显示双引号,当流被重定向到它时它们被写入文件.只有:echo> filename才会发生同样的情况,因为它也会将ECHO写入文件中. (3认同)
  • 显然,VonC的答案比我的好,所以请相反. (2认同)

nep*_*i12 22

call>file.txt
Run Code Online (Sandbox Code Playgroud)

这是我所知道的最干净的方式.

  • 它易于记忆和使用,不会向文件输出任何内容. (3认同)
  • 这个“干净”的东西到底是什么? (2认同)

Pau*_*han 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;
}
Run Code Online (Sandbox Code Playgroud)


Hyd*_*irl 9

cd > filename.cfg 
Run Code Online (Sandbox Code Playgroud)

在C:/ Program Files中创建文件时,您无法直接创建文件.


Dar*_*ain 9

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

type nul > (file_name).(file_type)
Run Code Online (Sandbox Code Playgroud)

例如,如果您想创建一个文本文件,那么

type nul > demo.txt
Run Code Online (Sandbox Code Playgroud)

如果你想创建一个 JavaScript 文件,那么

type nul > demo.js
Run Code Online (Sandbox Code Playgroud)


DRa*_*app 6

复制con SomeFile.txt Enter

Ctrl-Z Enter


fox*_*ive 6

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

break > "file.txt"
Run Code Online (Sandbox Code Playgroud)


Ama*_*ino 6

您可以使用旧命令

copy con file_name.ext
Run Code Online (Sandbox Code Playgroud)

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


Fat*_*ror 6

. >> file.txt
Run Code Online (Sandbox Code Playgroud)
  • >>将标准输出附加到文件中
  • .只是将空标准输出传递给的错误命令>>

但是,您将在以下位置看到标准错误的输出CMD

'.' 不被识别为内部或外部命令、可操作程序或批处理文件。

您可以通过将标准错误重定向到NUL.

. >> file.txt 2> nul
Run Code Online (Sandbox Code Playgroud)


小智 5

您还可以使用:

echo. 2>foo
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

  • 如果`abc`在路径中并且是用于格式化除安装目录之外的所有驱动器的便利功能,则这可能是非常错误的. (2认同)

Luc*_*cky 5

这对我有用,

echo > file.extension
Run Code Online (Sandbox Code Playgroud)

这是我今天发现的另一种方法。我从其他答案中得到了一些想法,但它奏效了:

sometext > filename.extension
Run Code Online (Sandbox Code Playgroud)

例如,

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
Run Code Online (Sandbox Code Playgroud)

这将在命令提示符中显示一条错误消息,

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

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


EKo*_*ons 5

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

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


suh*_*399 5

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

请使用命令:

>copy /b NUL empty_file.txt


小智 5

在 Windows 上

我尝试这样做

echo off > fff1.txt
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 如果需要,不要忘记在创建文件后回显。 (3认同)
  • 回复 *“除此之外,我没有找到任何可以创建空文件的命令。”*:所以您没有在这里查看之前 30 多个答案中的任何一个? (2认同)

小智 5

copy > your_file_name.extension在命令提示符中使用

P:\excecise> copy > Sample.txt
Run Code Online (Sandbox Code Playgroud)


Asw*_*054 5

所以你可以用创建一个空文件

'' > newfile.txt
Run Code Online (Sandbox Code Playgroud)

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

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


Pra*_*mar 5

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

查看这篇文章以获取更多信息。


Irf*_*ani 5

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

例如,您可以创建文件并从cmd使用记事本打开它

notepad newFile.txt
Run Code Online (Sandbox Code Playgroud)

这将提示您没有这样的文件,以及是否要将其创建为新文件。

您可以创建任何类型的文件,如下所示。

例如,

notepad newFile.js
Run Code Online (Sandbox Code Playgroud)

或者

notepad newFile.py
Run Code Online (Sandbox Code Playgroud)

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

例如,

code newFile.py
Run Code Online (Sandbox Code Playgroud)

这将创建一个新的 Python 文件并在 VS Code 中打开它(如果您安装了 VS Code)。

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