環境
- windows 10 1809 (64bit)
- fciv 2.05 (互換モードは使用しない)
File Checksum Integrity Verifier ユーティリティの概要と入手方法
https://support.microsoft.com/ja-jp/help/841290/availability-and-description-of-the-file-checksum-integrity-verifier-u
概要
fcivはWindowsでファイルのハッシュ値を計算するためのコマンド。
環境のせいか、動作に怪しいところがある。
Windows XP時代のプログラムのなので、仕方がない気もする。
怪しいのは 「-exc」 オプション。
ヘルプを見ると以下のように書いてある。
-exc file: list of directories that should not be computed.
exc はおそらく exclude の略で、ハッシュ値を計算しないファイルを指定するオプション。
これが効かない、というか2バイト文字を含むファイルを弾くだけになってしまう。
サンプル
「Document」 フォルダの中に2つのファイルがあるとする。
>dir Document
2019/07/26 20:19 <DIR> .
2019/07/26 20:19 <DIR> ..
2019/07/26 19:33 6 test.txt
2019/07/26 19:34 5 テスト.txt
まず 何も指定せずにfcivを実行。
2ファイルのハッシュ値が出力されることが確認できる。
>fciv Document
//
// File Checksum Integrity Verifier version 2.05.
//
27c01ca43abd2e05ca08cf95d1a549cd document\test.txt
0cdaa4e38f4475534f739edd5bee4b2c document\テスト.txt
次に 「-exc」で
テスト.txt 指定して実行すると、
テスト.txtが除外された結果が出力される。
これは上手くいっているように見える。
>fciv Document -exc document\テスト.txt
//
// File Checksum Integrity Verifier version 2.05.
//
27c01ca43abd2e05ca08cf95d1a549cd document\test.txt
(※ここでファイル名のみだとエラーになるので、相対パスを指定する。)
>fciv Document -exc テスト.txt
//
// File Checksum Integrity Verifier version 2.05.
//
Error opening Exception file テスト.txt
Error msg : 指定されたファイルが見つかりません。
Error code : 2
27c01ca43abd2e05ca08cf95d1a549cd document\test.txt
0cdaa4e38f4475534f739edd5bee4b2c document\テスト.txt
次に test.txtを指定してみる。
すると結果は上記と同じになってしまい、「-exc」が機能していないように見える。
>fciv Document -exc document\test.txt
//
// File Checksum Integrity Verifier version 2.05.
//
27c01ca43abd2e05ca08cf95d1a549cd document\test.txt
上記のような状況なので、Windows 10 で fciv は使わない方がいいと思われる。
ハッシュ値を計算する代替手段としては Powershell の GetHashCode() 等がある。
外部参考サイト
-
String.GetHashCode Method
Microsoft の Powershell GetHashCode に関するドキュメント
https://docs.microsoft.com/dotnet/api/system.string.gethashcode?view=netframework-4.8