Windowsコマンド(fsutil file setZeroData)(その2)


アニメ『レイトン ミステリー探偵社』
レイトン教授の娘の、カトリーが主人公なんですね。って、レイトン教授を知らないので、よく分かってませんが。でも、このアニメを見ていると、アドベンチャーゲームをプレイしているような気分になります。もちろんアニメなので、クリックしなくてもストーリーが進むのでゲームより楽です。

今回もsetZeroDataを使います。
fsutil file setZeroDataのパラメータは、offset、length、ファイル名でした。
offsetは0始まりでしたが、マイナスや、ファイルより長い数値を指定するとどうなるでしょうか。

C:\Users\takk2\tmp>echo HELLO>test.txt

C:\Users\takk2\tmp>

HELLOという文字列が5Byte、改行に2Byteですので、7Byteのファイルです。

C:\Users\takk2\tmp>dir test.txt
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 6C92-6118 です

 C:\Users\takk2\tmp のディレクトリ

2019/02/17  21:53                 7 test.txt
               1 個のファイル                   7 バイト
               0 個のディレクトリ  160,654,786,560 バイトの空き領域

C:\Users\takk2\tmp>

dirで見ても、7Byteですね。
offsetのマイナス指定の前に、offsetオプションを省略したらどうなるか確認してみます。

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

ヘルプが表示されました。
では、setZeroDataをマイナスのoffsetを指定して実行してみます。

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

C:\Users\takk2\tmp>

オプション省略した時と同じく、ヘルプが出てしまいました。やはりコマンドが正しく指定されたないとヘルプ表示になるんですね。おそらく、ファイルの長さ以上の値をoffsetに指定しても同じ結果でしょう。
やってみます。

C:\Users\takk2\tmp>fsutil file setzerodata offset=7 length=2 test.txt
ゼロ データが変更されました

C:\Users\takk2\tmp>

あれ? 成功してしまいました。どういうことでしょうか。
ファイルの長さを確認してみます。

 C:\Users\takk2\tmp のディレクトリ

2019/02/17  21:53                 7 test.txt
               1 個のファイル                   7 バイト
               0 個のディレクトリ  160,638,099,456 バイトの空き領域

C:\Users\takk2\tmp>

7Byteのままです。
PowerShellのGetContentを使って内容も見てみましょう。

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

PS C:\Users\takk2\tmp> gc -encoding byte test.txt
72
69
76
76
79
13
10
PS C:\Users\takk2\tmp>

どこにもゼロは入ってません。謎です。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA