当前位置:  开发笔记 > 开发工具 > 正文

如何从批处理文件创建空文本文件?

如何解决《如何从批处理文件创建空文本文件?》经验,为你挑选了8个好方法。

有人能记住使用BAT文件在MSDOS中创建空文件的命令是什么?



1> ephemient..:
copy NUL EmptyFile.txt

DOS有一些特殊的文件(实际上是设备),它们存在于每个目录中,NUL相当于UNIX /dev/null:它是一个永远为空的魔术文件,会抛弃你写的任何东西.这是一些其他人的名单 ; CON偶尔也很有用.

为了避免任何输出,您可以使用

copy /y NUL EmptyFile.txt >NUL

/y阻止copy提出输出时无法看到的问题NUL.


+1 - 问题确实表示*empty*文件,因此接受的答案是错误的.
DannySmurf的解决方案确实创建了一个空文件 - 换行符转到stdout,没有任何内容转到stderr(指向新文件).但是非常感谢+1
警告:是的问题是如何创建一个空文件,但通常你想"确保文件存在".使用`copy/Y NUL`命令时,它可能会删除现有内容.如果你已经习惯了Unix的`touch`命令,那么这可能根本不是你想要的.)在这方面使用`type NUL >> emptyfile.txt`更安全.
type nul> EmptyFile.txt是最短的解决方案.仍然你的答案比接受的解决方案更好,因为你的文件真的是空的.+1

2> TheSmurf..:
echo. 2>EmptyFile.txt


这与stdout的换行相呼应,但是......我的回答没有.
要合并ephemient的答案和这个,你可以这样做:"echo.> NUL 2> EmptyFile.txt"来实现相同的结果而不输出换行符
为什么```在`echo
有时它是相关的; 我曾经有过触摸,直到我想到只是为了获取0字节文件而复制NUL(或输入NUL>文件).:-)
@Reegan如果你使用`echo 2`而没有`.`,控制台会显示"ECHO已关闭".使用`echo.2`通过仅显示换行符有效地使控制台输出静音.

3> 小智..:
type NUL > EmptyFile.txt

在阅读了前两篇文章之后,这两者的融合就是我想出来的.看起来有点清洁.无需担心重定向"复制的1个文件".消息NUL,就像上一篇文章一样,它旁边ECHO OutputLineFromLoop >> Emptyfile.txt通常会跟在批处理文件中看起来不错.


+1这是首先想到的自然,而不是与stderr等的设计.
你是对的.此方法避免复制命令上的/ y标志.

4> n611x007..:

我从其他答案收集的技巧:

使0字节文件成为一种非常清晰,向后兼容的方式:

type nul >EmptyFile.txt

想法来自:匿名,Danny Backett,可能是其他人,我自己受到JdeBP工作的启发

另一种方式是0字节文件,它是向后兼容的:

REM. >EmptyFile.txt

想法来自:约翰内斯

一个0字节文件第三种向后兼容的文件:

echo. 2>EmptyFile.txt

想法来自:TheSmurf

自Windows 2000以来可能采用的系统方式的0字节文件:

fsutil file createnew EmptyFile.txt 0

想法来自:嗯

一个0字节的文件覆盖只读文件

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

想法来自:copyitright

单个换行(2个字节:0x0D 0x0A在十六进制表示法,可替代地表示为\r\n):

echo.>AlmostEmptyFile.txt

注意:没有之间的空间echo,.>.

想法通过:如何在批处理文件中回显换行符?


编辑似乎重定向到文件的任何无效命令都会创建一个空文件.嘿,一个功能!兼容性:未知

TheInvisibleFeature EmptyFile.txt

0字节文件:无效命令/具有随机名称(兼容性:未知):

%RANDOM%-%TIME:~6,5% EmptyFile.txt

via:Hung Huynh的随机源代码

编辑2 Andriy M 指出了通过无效命令实现这一目标的最有趣/最令人激动的方法

0字节文件:无效命令/时髦方式(兼容性:未知)

*>EmptyFile.txt

想法来自:Andriy M.

0字节文件第4种方式:

break > file.txt

通过理念:foxidrive感谢评论的双重节!


并且大多数命令可以与`>>`一起使用,如果你需要"必须存在但是如果存在则不应该被截断"(就像Unix`touch`那样)
还有一个:[`break> file.txt`](http://stackoverflow.com/questions/210201/how-to-create-empty-text-file-from-a-batch-file/24822936#24822936) ,道具[foxidrive](http://stackoverflow.com/users/2299431/foxidrive)

5> 小智..:

REM.> empty.file


它看起来不会起作用,但确实如此.惊人.

6> script'n'cod..:

如果要写入的文件可能已存在且只读,请使用以下代码:

ATTRIB -R filename.ext
CD .>filename.ext

如果没有文件,只需执行以下操作:

CD .>filename.ext

(根据DodgyCodeException的评论更新/更改了代码)

要抑制可能出现的任何错误:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL



7> 小智..:
fsutil file createnew file.cmd 0



8> foxidrive..:

还有一个要添加到书中 - 短而甜的打字.

break>file.txt
break>"file with spaces in name.txt"

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有