Category Archives: 8-1-1.Windowsコマンド

Windowsでファイルのゼロ埋め

fsutil続きです。setzerodataを使ってみます。
使用法の確認。

C:\Users\takk\tmp>fsutil file setzerodata
使用法 : fsutil file setzerodata offset=<値> length=<値> <ファイル名>
   offset : ファイルのオフセット、ゼロに設定する範囲の開始点
   length : ゼロの範囲の長さ (バイト)
   例 : fsutil file setzerodata offset=100 length=150 C:\Temp\sample.txt

C:\Users\takk\tmp>

変更前データとして7Byteのファイルを作成。

C:\Users\takk\tmp>echo ABCDE>aa.txt

C:\Users\takk\tmp>powershell
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.

PS C:\Users\takk\tmp> gc -encoding byte aa.txt
65
66
67
68
69
13
10
PS C:\Users\takk\tmp>

では、setzerodataコマンドを使ってゼロで埋めてみます。

PS C:\Users\takk\tmp> fsutil file setzerodata offset=2 length=3 aa.txt
ゼロ データが変更されました
PS C:\Users\takk\tmp> gc -encoding byte aa.txt
65
66
0
0
0
13
10
PS C:\Users\takk\tmp>

offset=2を指定して3番目からゼロになったということは、
ファイル先頭からゼロにしたい場合は、offset=0を指定すればよいですね。

PS C:\Users\takk\tmp> fsutil file setzerodata offset=0 length=1 aa.txt
ゼロ データが変更されました
PS C:\Users\takk\tmp> gc -encoding byte aa.txt
0
66
0
0
0
13
10
PS C:\Users\takk\tmp>

0データでファイルを拡張できるでしょうか。offsetでファイルの末尾を指定してみます。

PS C:\Users\takk\tmp> fsutil file setzerodata offset=7 length=3 aa.txt
ゼロ データが変更されました
PS C:\Users\takk\tmp> gc -encoding byte aa.txt
0
66
0
0
0
13
10
PS C:\Users\takk\tmp>

ファイルの長さは変更されませんでした。

PS C:\Users\takk\tmp> dir aa.txt


    ディレクトリ: C:\Users\takk\tmp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2018/06/18     20:49          7 aa.txt


PS C:\Users\takk\tmp>

Get-Content(gc)で見ても、dirで見ても、ファイルサイズは変わってません。
setzerodataではファイルサイズは変えられないようです。