3

Есть ли в Windows 7 или выше встроенная команда для заполнения файла нулевыми / пустыми байтами?

Обработка должна происходить на месте (т. Е. Она должна изменять фактические сектора диска / байты файла), а не создавать новый файл.

Что-то вроде:

zero c:\temp\*.*

или же

zero hello.bin

что бы сделать это:

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

Если для этого нет ничего встроенного, какие еще существуют решения? Или я должен был бы сделать это в C?

1 ответ1

5

Есть ли в 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

Чтобы заполнить файл нулем, вам нужно будет использовать смещение 0 и вам нужно знать длину файла.


Можем ли мы использовать пакетный файл, который автоматически вычислит размер?

Конечно.

Используйте следующий пакетный файл (zero.cmd):

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

Использование:

  • Вы можете передать одно имя файла в качестве аргумента: zero test.txt или подстановочный знак: zero *.txt

Пример:

> type test.txt
abc
foo$
foo
bar

> zero test.txt
Zero data is changed

> type test.txt

>


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .