小编典典

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

all

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

我试过了:

copy nul > file.txt

但它总是显示一个文件被复制。

标准cmd中有另一种方法吗?

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


阅读 194

收藏
2022-03-08

共1个答案

小编典典

没有 重定向,指出

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

“如何从批处理文件创建空文本文件? ”(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提到了一个原始的:

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

本着同样的建议:

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

.>out.txt

它确实给出了一个错误:

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

但是这个错误在stderr上。并且>只重定向标准输出, 没有 产生任何东西。
因此创建了一个 文件。
此处可以忽略错误消息。或者,重定向到NUL

.>out.txt 2>NUL

(原始答案,2009 年 11 月)

echo.>filename

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

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

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


cd. >filename中提到并且确实生成了一个 0 字节长度的文件)的区别在于,这种“重定向位”(技巧)可用于在 没有任何 CR 的情况下回显行*
<nul...
*

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

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

2022-03-08