如何在 DOS/Windows 命令行中创建一个空文件?
我试过了:
copy nul > file.txt
但它总是显示一个文件被复制。
标准cmd中有另一种方法吗?
它应该是不需要 Cygwin 中的 touch 命令或任何其他非标准命令的方法。该命令需要从脚本运行,因此不能使用击键。
没有重定向,Luc Vu 或 Erik 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上。并且 >
仅重定向标准输出,其中 没有 已生成。
因此创建了一个 empty 文件。
此处可以忽略错误消息。或者,如 Rain 的 answer,重定向到 NUL
:
.>out.txt 2>NUL
(原始答案,2009 年 11 月)
echo.>filename
(echo ""
实际上会将“”放入文件中!而没有“.”的 echo
会将“Command ECHO activated
”放入文件中...)
注意:生成的文件不是空的,而是包含一个返回行序列:2 个字节。
此 discussion 指向真正的 empty 文件的真正批处理解决方案:
<nul (set/p z=) >filename
dir filename
11/09/2009 19:45 0 filename
1 file(s) 0 bytes
"
因为这里的“等号右边的字符串”是空的......结果是一个空文件。
与
dir 命令应将文件大小指示为 11 个字节:“helloworld!”。
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
尝试这个:
type NUL > 1.txt
这肯定会创建一个空文件。
这是另一种方式:
cd . > filename
cd. > filename
对我不起作用,而不是 cd > filename
起作用!
cd . > filename.extension
表示您需要在 cd
和 .
之间留一个空格
如果你真的想要一个完全空的文件,没有任何输出到标准输出,你可以作弊一点:
copy nul file.txt > nul
只需将 stdout 重定向到 nul,复制的输出就会消失。
type nul>file
将是另一种方式。
打开文件:
type file.txt
新文件:
方式一:输入 nul > file.txt
方式2:echo 这是一个示例文本文件 > sample.txt
方式3:记事本myfile.txt <按Enter>
编辑内容:
notepad file.txt
复制
copy file1.txt file1Copy.txt
改名
rename file1.txt file1_rename.txt
删除文件:
del file.txt
call>file.txt
这是我所知道的最干净的方式。
ZZ
代替 call
(不是说它不那么晦涩)? - 像 Nomad's answer。
call && echo test
或 call || echo test
进行测试。和/或基于前一个命令的错误级别。此外,您引用的答案表明它是一个更好的解决方案,非常危险。正如其他人在对该答案的评论中已经指出的那样,取决于一个不存在的命令是很糟糕的,因为如果它确实存在,你只是在不知道它做什么的情况下运行它,可能拥有比它应该拥有的更多权限。
echo "" > filename
我相信这适用于 Windows/DOS,但我最后一次亲身体验是很久以前的事了。我确实知道它基本上可以在任何符合 POSIX 的操作系统上运行。
在 Windows 命令行上,一种方法是使用 fsutil:
fsutil file createnew <filename> <size>
一个例子:
fsutil file createnew myEmptyFile.txt 0
下面是 *nix 命令行。
touch filename
此命令更改文件的修改日期或在未找到文件时创建它。
> filename
,它也可用于截断现有文件。
fsutil
需要管理权限。简单地创建一个空文件有点要求...
你可以写你自己的触摸。
//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;
}
cd > filename.cfg
在您无权直接创建文件的 C:/Program Files 中创建文件时工作。
要创建任何类型的文件,您可以使用以下代码
type nul > (file_name).(file_type)
例如,如果你想创建一个文本文件,那么
type nul > demo.txt
如果你想创建一个 JavaScript 文件,那么
type nul > demo.js
您可以创建一个空文件
'' > newfile.txt
导航到该目录并在 PowerShell 窗口中键入上述命令。
请注意,这不适用于 Windows 命令提示符。
copy con SomeFile.txt
输入
Ctrl + Z 并回车。
在命令提示符中使用 copy > your_file_name.extension
P:\excecise> copy > Sample.txt
type nul > filename
将创建一个新的空文件。
copy nul filename
也可以在没有重定向的情况下工作(更明显的解决方案)。
您还可以使用:
echo. 2>foo
echo.
的调试输出几乎肯定是空的。
试试这个:abc > myFile.txt
首先,它将在当前工作目录(在命令提示符中)创建一个名为 myFile.txt
的文件。然后它将运行不是有效命令的命令 abc
。这样,您就得到了一个名为 myFile.txt
的新空文件。
abc
在路径中并且是格式化除安装目录之外的所有驱动器的便捷函数,这可能是非常错误的。
这对我有用,
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 命令,该文件也正在目录中创建。
您可以使用旧命令
copy con file_name.ext
不要输入任何内容。只需按 F6 即可保存。但是,它会打印“文件已复制”,但是当您打开文件时,它将是空的。
con
是一些保留的东西吗?你能详细说明吗?请通过 editing your answer 回复,而不是在评论中(没有“编辑:”、“更新:”或类似内容 - 答案应该看起来好像是今天写的)。
. >> file.txt
>> 将标准输出附加到文件中
.将空标准输出传递给 >> 只是一个错误的命令
但是,您会在 CMD
中看到 standard error 的输出:
'。'不被识别为内部或外部命令、可运行程序或批处理文件。
您可以通过将标准错误重定向到 NUL
来禁止显示此错误消息(如果需要)。
. >> file.txt 2> nul
我读了很多线程,但这不是最短的方法。
请使用命令:
>copy /b NUL empty_file.txt
>
是必要的(不是反问)?
在 Windows 上
我试着这样做
echo off > fff1.txt
它创建了一个名为 fff1.txt 的文件,文件大小为 0 KB。
除此以外,我没有找到任何可以创建空文件的命令。
注意:您必须位于要创建文件的目录中。
创建一个内容为 echo '' > %1 的 bat 文件(将文件命名为 touch.bat)。
将文件夹添加到 PATH 环境变量。
您可以使用触摸来创建文件。 (例如:touch temp.txt 创建 temp.txt 文件)
查看 this article 了解更多信息。
还有一种方式:
copy nul 2> empty_file.txt
我刚刚在 Windows 中尝试过:
copy con file.txt
然后按 Enter 键。然后按 Ctrl + Z 并回车。
它对我有用。
对于 Ubuntu,我通常使用 vi
命令创建文件
vi file.txt
它将打开文件。然后按 Esc 键。然后输入 :wp 并按 Enter 键。它将创建一个包含空数据的新文件。
这是另一种方式:
rem/ > file.ext
斜杠 /
是强制性的;没有它,重定向部分将被 rem
注释掉。
echo
会添加换行符,使用 NUL
似乎会无休止地填充文件,如果您尝试执行不存在的命令,DOSBox 会将实际操作系统响应重定向到文本文件。
还有其他简单的方法来创建文件。
例如,您可以从 cmd 创建文件并使用记事本打开它
notepad newFile.txt
这将提示您没有这样的文件以及是否要将其创建为新文件。
您可以像这样创建任何类型的文件。
例如,
notepad newFile.js
或者
notepad newFile.py
不仅记事本,您还可以使用其他应用程序来执行此操作。例如,您可以使用 Visual Studio Code 创建和打开新文件。
例如,
code newFile.py
这将创建一个新的 Python 文件并在 vs code 中打开它(如果您安装了 vs code)。
您也可以使用此方法创建其他类型的文件。
首先创建您的文件,使其存在:
echo . > myfile.txt
然后使用 copy
命令用空版本覆盖创建的文件:
copy /y nul myfile.txt
echo.>filename
因为它将包含空格和换行符。rem
命令可避免创建包含空行的文件。>
仅将标准输出重定向到out.txt
。因此创建了一个空文件。您可以忽略此上下文中的错误消息。