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

问题描述 投票:440回答:32

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

我试过了:

copy nul > file.txt

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

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

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

windows file cmd command-line
32个回答
519
投票

没有重定向,Luc VuErik Konstantopoulos point out

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt

How to create empty text file from a batch file?”(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提到an original one

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

同样的精神,Samuel建议in the comments

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

.>out.txt

它确实给出了一个错误:

'.' is not recognized as an internal or external command

但这个错误在stderr上。而>只重定向stdout,没有产生任何东西。 因此创建了一个空文件。这里可以忽略错误消息。


(原始答案,2009年11月)

echo.>filename

echo ""实际上会把“”放在文件中!而没有'。'的echo会把“Command ECHO activated”放在文件中......)

注意:生成的文件不为空,但包含一个返回行序列:2个字节。


这个discussion指向真正的空文件的批处理解决方案:

 <nul (set/p z=) >filename

 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

<nul”管理nulset/p命令的响应,这将导致变量保持不变。与set/p一样,等号右侧的字符串显示为没有CRLF的提示。

因为这里“等号右边的字符串”是空的......结果是一个空文件。


cd. > filename(在Patrick Cuff's answer中提到并且还产生一个0字节长度的文件)的区别在于,这个“重定向位”(<nul...技巧)可用于回送没有任何CR的行:

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

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


8
投票
cd > filename.cfg 

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


6
投票

copy con SomeFile.txt输入

Ctrl-Z输入


5
投票

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


5
投票

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

break > "file.txt"

5
投票

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

P:\excecise> copy > Sample.txt

4
投票

你也可以使用:

echo. 2>foo

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


4
投票

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

Sorry I'm late.

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


4
投票

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

'' > newfile.txt

导航到该目录并在PowerShell窗口中键入以上命令。

请注意,这不适用于Windows命令提示符。


4
投票

您可以使用旧命令

copy con file_name.ext

不要输入任何内容,只需按F6保存即可,但是会打印“文件已复制”,但是当你打开文件时它会被清空


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命令,也会在目录中创建文件。


257
投票

试试这个:

type NUL > 1.txt

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


3
投票

我阅读了许多线程,但这不是最短的方式。

请使用命令:

>copy /b NUL empty_file.txt


3
投票

在Windows上我尝试这样做

echo off > fff1.txt

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

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

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


3
投票

另一种方式:

copy nul 2>empty_file.txt

2
投票

只是我在Windows中尝试过

copy con file.txt

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

它对我有用。

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

vi file.txt

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


2
投票

试试这个:

echo $null >> filename 

见:superUser


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

查看this文章了解更多信息。


2
投票

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

type nul>(file_name)。(file_type)

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

输入nul> demo.txt

如果你想创建一个javascript文件

null type> demo.js


1
投票

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

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

title > file.txt

1
投票

以管理员模式运行CMD并键入:

NUL > file_name.extention

或者你输入这个

echo .> file_name.extention

1
投票

这是另一种方式:

rem/ > file.ext

斜线/是强制性的;没有它,重定向部分被rem注释掉了。


95
投票

这是另一种方式:

cd. > filename

0
投票

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

echo . > myfile.txt

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

copy /y nul myfile.txt

74
投票

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

copy nul file.txt > nul

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


43
投票

打开文件 :

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

32
投票

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

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

fsutil file createnew <filename> <size>

一个例子:

fsutil file createnew myEmptyFile.txt 0

以下是* nix命令行。

touch filename

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


25
投票
echo "" > filename

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


21
投票
call>file.txt

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


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.