web-dev-qa-db-ja.com

コマンドラインからファイルをゼロにする

Windows 7以降にファイルにゼロ/ NULLバイトを入力するの組み込みコマンドはありますか?

処理はインプレース(つまり、ファイルの実際のディスクセクター/バイトを変更する必要があります)で行われ、新しいファイルは作成されません。

何かのようなもの:

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でそれをしなければなりませんか?

3
Basj

ファイルをゼロ/ NULLバイトで埋めるための組み込みコマンドは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

>

enter image description here


参考文献

5
DavidPostill