有人能记得在MSDOS中使用BAT文件创建空文件的命令吗?
copy NUL EmptyFile.txt
DOS有一些特殊文件(实际上是设备),它们存在于每个目录中,NUL
是UNIX的/dev/null
的等价物:它是一个神奇的文件,总是为空,并且会丢弃任何你写入它的东西。这里是一份其他一些特殊文件列表,CON
也偶尔有用。
为了避免任何输出,你可以使用:
copy /y NUL EmptyFile.txt >NUL
/y
防止copy
在输出到NUL
时询问你看不见的问题。
copy /Y NUL
命令时,它可能会擦除现有内容。如果您习惯于Unix的touch
命令,则这可能与您的期望完全不同。在这方面,使用type NUL >> emptyfile.txt
更安全。 - eckesCON
是控制台,详见 https://en.wikipedia.org/wiki/Device_file#DOS,_TOS,_OS/2,_and_Windows。 - ephemientecho. 2>EmptyFile.txt
这将重定向输出流2 (stderr
) 到一个文件。命令echo
不会输出任何东西到stderr
,所以文件变成空的。
普通的echo
也可以工作,但是echo.
更好,因为它不会打印无用和可能混淆的消息ECHO is on.
echo.
中要有 .
?这个 .
是为了指定命令的执行路径。在Windows系统中,执行一个命令时,系统会按照一定的顺序搜索当前目录以及系统环境变量中定义的路径来查找该命令的可执行文件。如果直接输入 echo
,系统会首先在当前目录中查找是否存在 echo.exe
文件,如果没有找到,则继续在环境变量中定义的路径中查找。而如果输入的是 echo.
,则表示明确指定了当前目录作为执行路径,因此系统会直接在当前目录中查找 echo.exe
文件并执行。 - Ninh Phamecho 2
而没有加上.
,控制台将显示“ECHO关闭”。使用echo. 2
可以通过仅显示换行符来有效地静音控制台输出。 - OneManBandtype NUL > EmptyFile.txt
在阅读了前两篇文章之后,我得出了这两者的结合。它看起来更加简洁。不需要像之前的文章那样将“1 file(s) copied.”消息重定向到NUL
,并且它与通常会在批处理文件中跟随的ECHO OutputLineFromLoop >> Emptyfile.txt
很搭配。
type nul >EmptyFile.txt
REM. >EmptyFile.txt
通过思路来源: 约翰内斯
第三种方式的0字节文件,看起来也是向后兼容的:
echo. 2>EmptyFile.txt
通过:TheSmurf 的想法
一种系统化的零字节文件可能自Windows 2000以来就可用:
fsutil file createnew EmptyFile.txt 0
通过Emm的想法:
覆盖只读文件的0字节文件
ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL
通过想法:copyitright
单个换行符(2个字节:0x0D 0x0A
的十六进制表示, 或者写成\r\n
):
echo.>AlmostEmptyFile.txt
echo
、.
和>
之间不要有空格。
灵感来自:如何在批处理文件中回显换行符?
TheInvisibleFeature <nul >EmptyFile.txt
%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt
*>EmptyFile.txt
break > file.txt
type nul ...
,而不是 type <nul ...
。 - Andriy MNonExistentCommand <nul >EmptyFile.txt
,它发挥了作用。 - n611x007*>EmptyFile.txt
或任何包含高度不可能成为名称一部分的字符的“命令”。尽管我承认,未来总会存在微小的风险,它变成一个有效的命令。 - Andriy M>>
(就像Unix的touch
命令一样)。 - eckesREM. > empty.file
REM.
,cmd 将响应 "'rem.' 不是内部或外部命令,也不是可运行的程序或批处理文件。" - DodgyCodeExceptionrem/
代替rem.
可以解决这个问题... - aschipfl如果写入的文件可能已经存在且为只读状态,请使用以下代码:
ATTRIB -R filename.ext
CD .>filename.ext
如果文件不存在,只需执行以下操作:CD .>filename.ext
(根据DodgyCodeException的评论更新/更改了代码)
为了抑制可能出现的任何错误:
ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL
CD .
(在点之前加上空格),它将正常工作。 - DodgyCodeException又来一本书——打字简短而简单。
break>file.txt
break>"file with spaces in name.txt"
fsutil file createnew file.cmd 0
有无数种方法。
不输出任何内容的命令:
break
cls
color
goto
pushd
popd
prompt
title
CD.
REM.
@echo off
cmd /c
START >FILE
print
命令会产生一个空文件:print /d:EMPTY_TEXT_FILE nul
TYPE
命令代替COPY
命令。请尝试以下操作:TYPE File1.txt>File2.txt
当 File1.txt
为空时。
type NUL>File2.txt
。 - Danny Beckett
cmd.exe
吧? - user unknownSet-Content "your_file.txt" .gitignore -Encoding utf8
,这是区分大小写的,并强制使用UTF8编码!(我还将其发布为答案)。 - Wolfpack'08