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

m_p*_*tor 231 cmd dos batch-file

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

eph*_*ent 348

copy NUL EmptyFile.txt

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

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

copy /y NUL EmptyFile.txt >NUL

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

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

The*_*urf 227

echo. 2>EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

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

小智 177

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

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

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

n61*_*007 60

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

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

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

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

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

REM. >EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

想法来自:约翰内斯

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

echo. 2>EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

想法来自:TheSmurf

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

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

想法来自:

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

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL
Run Code Online (Sandbox Code Playgroud)

想法来自:copyitright

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

echo.>AlmostEmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

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

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


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

TheInvisibleFeature <nul >EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

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

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

via:Hung Huynh的随机源代码

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

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

*>EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

想法来自:Andriy M.

0字节文件第4种方式:

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

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

  • 并且大多数命令可以与`>>`一起使用,如果你需要"必须存在但是如果存在则不应该被截断"(就像Unix`touch`那样) (3认同)
  • 还有一个:[`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) (2认同)

小智 25

REM.> empty.file

  • 它看起来不会起作用,但确实如此.惊人. (6认同)

scr*_*ode 8

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

ATTRIB -R filename.ext
CD .>filename.ext
Run Code Online (Sandbox Code Playgroud)

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

CD .>filename.ext
Run Code Online (Sandbox Code Playgroud)

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

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

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL
Run Code Online (Sandbox Code Playgroud)


小智 7

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


fox*_*ive 7

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

break>file.txt
break>"file with spaces in name.txt"
Run Code Online (Sandbox Code Playgroud)