Zerando um arquivo da linha de comando

2

Existe um comando interno no Windows 7 ou superior para preencher um arquivo com zero / NULL bytes ?

O processamento deve acontecer no local (isto é, deve modificar os setores / bytes do disco real do arquivo) e não criar um novo arquivo.

Algo como:

zero c:\temp\*.*

ou

zero hello.bin

que faria isso:

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

Se não há nada embutido para isso, que outras soluções existem? Ou eu teria que fazer isso em C?

    
por Basj 18.10.2017 / 01:04

1 resposta

5

Is there a built-in command in Windows to fill a file with zero / NULL bytes?

Sim. Você pode usar fsutil para isso:

> 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

Para preencher um arquivo completo, será necessário usar um deslocamento de 0 e você precisará saber o tamanho do arquivo.

Podemos usar arquivos em lote que calculam o tamanho automaticamente?

Claro.

Use o seguinte arquivo de lote (zero.cmd):

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

Uso:

  • Você pode passar um único nome de arquivo como argumento: zero test.txt ou um curinga: zero *.txt

Exemplo:

> type test.txt
abc
foo$
foo
bar

> zero test.txt
Zero data is changed

> type test.txt

>

LeituraAdicional

  • Um índice A-Z da linha de comando do Windows CMD
  • Uma lista categorizada de comandos do Windows CMD
  • fsutil - Comandos específicos de arquivos e volumes, gerenciamento de Hardlink, gerenciamento de cotas, USN, arquivo esparso, identificação de objeto e gerenciamento de ponto de nova análise
  • parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
por 18.10.2017 / 01:51