从命令行清零文件

Bas*_*asj 5 windows command-line secure-erase wipe

Windows 7 或更高版本中是否有内置命令可以用零/NULL 字节填充文件

处理应该就地发生(即它应该修改文件的实际磁盘扇区/字节),而不是创建新文件。

就像是:

zero c:\temp\*.*
Run Code Online (Sandbox Code Playgroud)

或者

zero hello.bin
Run Code Online (Sandbox Code Playgroud)

这样做:

Before: hello.bin (500 MB)
5D 1A CB FF FF C0 ... AA CD 0F FF


After: hello.bin (500 MB)
00 00 00 00 00 00 ... 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

如果没有任何内置的东西,还有什么其他的解决方案?或者我必须用C来做吗?

Dav*_*ill 8

Windows 中是否有内置命令可以用零/空字节填充文件?

是的。您可以fsutil为此使用:

> fsutil file setzerodata /?
Usage : fsutil file setzerodata offset=<val> length=<val> <filename>
   offset : File offset, the start of the range to set to zeroes
   length : Byte length of the zeroed range
   Eg : fsutil file setzerodata offset=100 length=150 C:\Temp\sample.txt
Run Code Online (Sandbox Code Playgroud)

要零填充一个完整的文件,您需要使用 的偏移量,0并且您需要知道文件长度。


我们可以使用自动计算大小的批处理文件吗?

当然。

使用以下批处理文件 (zero.cmd):

@echo off
setlocal enabledelayedexpansion
for %%a in (%1) do (
  fsutil file setzerodata offset=0 length=%%~za %%a
)
endlocal
Run Code Online (Sandbox Code Playgroud)

用法:

  • 您可以将单个文件名作为参数传递:zero test.txt或通配符:zero *.txt

例子:

> type test.txt
abc
foo$
foo
bar

> zero test.txt
Zero data is changed

> type test.txt

>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


进一步阅读