如何使用Windows批处理脚本从文本文件中删除内容

43

我有一个 demo.txt 文件。我需要使用批处理文件删除该文件内的内容。请告诉我用于删除 demo.txt 文件内容的命令。


4
您想清空demo.txt文件中的内容还是只想删除特定的文本? - Chelseawillrecover
警告,确保您指定了准确的文件,否则如果您指向错误的文件,则可能无法恢复内容,除非您在运行脚本之前备份或创建一个。 - Chelseawillrecover
5个回答

87
break>demo.txt

试试这个。它将在demo.txt的位置上放置一个空文件。由于break是不执行任何操作的内部命令,因此它应该非常快速。此外,break命令只能通过/?参数产生输出,因此这使得此方法非常健壮。


43

命令提示符:

  1. break>c:\'文件目录'\demo.txt

PowerShell:

  1. Clear-Content c:\'文件目录'\demo.txt

9
感谢提供的PowerShell命令!当文件正在被进程使用时,CMD的break>命令无法起作用。因为我当时不能结束该进程,也无法在Notepad ++中打开它以手动清空,因为文件太大了。所以PowerShell的Clear-Content非常方便,并且非常有效,所以再次感谢! - Kevin Cruijssen

8
type nul > demo.txt

这条命令可以在Microsoft CMD.EXE中输出空白,但是在JPSoft的TakeCommand TCC.EXE命令行中会输出"BREAK is ON"。

通常的做法是找到一个不产生任何输出的命令,并将其重定向到文件中使用符号 >。


1
这个方法可以运行,但似乎比“Break>”命令慢。你有什么想法为什么会这样吗? - dgo

2

如果该文件被另一个应用程序使用,则命令提示符重定向可能会失败(因为它需要比必要更多的文件访问)。在这种情况下,您可以使用PowerShell:

PS> Set-Content file.txt $null

注意:不要期望它能够访问独占打开的文件。

2

这对我来说似乎最直观:

copy /y nul demo.txt

注意:不幸的是,像这里提供的其他方法一样,如果demo.txt当前正在被另一个进程使用,则此方法将失败。在这种情况下,有时可以在文本编辑器中打开该文件并删除所有内容,即使该文件正在使用中。我不知道是否有办法从命令行中执行此操作。


这完全不起作用。它会将“1 file(s) copied.”的回显输出到文件中。 - dgo
2
它应该显示输出“1个文件已复制”,但生成的文件长度应为0。对我来说有效,我刚刚检查过。确保您没有重定向输出。 - yoyo
1
你说得对 - 我之前把它重定向了。我按照你的方法再次尝试(正确地),结果成功了。非常有创意的解决方案。谢谢。 - dgo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接