![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
C:\aaa\bbb\ccc.dat というファイルを C:\aaa\ddd に移動したり、eee.dat にリネームした場合に、元の ccc.dat と eee.dat が同一であることを認識したいのですが、バイナリ比較する以外に、パスやファイル名が変わっても不変なIDのようなものはあるのでしょうか?
会社と自宅のPCでディレクトリの同期化を行うツールを作ろうと思っています。ファイル一覧のスナップショットを取っておいて、新規・削除・移動・変更などの差分をフラッシュメモリ等でやり取りする計画なのですが、移動しただけのファイルは「移動した」という情報だけにして、ファイルそのものはフラッシュメモリに入れずにすませたいところです。
パスやファイル名が変わっても不変な、ファイルにとって一意なIDのようなものは無いでしょうか?
Windows2000/XP FAT32/NTFS ツールは.NET/C# で考えています。
ヒントだけでも下されば後は自分で調べますのでよろしくお願いします。
No.4ベストアンサー
- 回答日時:
ファイルのユニークIDは、PlatformSDKで言うところの、
GetFileInformationByHandle で取得する、LPBY_HANDLE_FILE_INFORMATION 構造体の、nFileIndexHigh と nFileIndexLow ですね。
No.3
- 回答日時:
#2です。
>現存する2つのファイルの同一性ではなく、ファイルの所属するディレクトリやファイル名が変わったとしても、C:\aaa\ddd\eee.dat が、前回チェック時のC:\aaa\bbb\ccc.dat であることを認識したいのですが、やはり無理でしょうか・・・
なるほど。そういう意味でしたか。unix/linuxのi-node番号のようなものですね。
gnuwin32のツール(下記URL)のCoreUtilsを使っているのですが、これに含まれる ls.exe コマンドで 「ls -i ファイル名」とすると、ファイル名に対応した数字が表示されますが、NTFSの同一ドライブ内でのmoveコマンドやrenコマンド、またはexploreでの移動・リネームに対しては数字は不変のようです。FAT32だとリネームでは不変だけど、移動は駄目みたいです(数字が変わる)。XPで確認しました。また、テストしてませんが、いくらNTFSでもドライブをまたがった移動では無理でしょう。
NTFSについてはこのツールのソースを調べるかNTFSの仕様を調べるとよいかと思います。FAT32はおそらく無理じゃないかな。
参考URL:http://gnuwin32.sourceforge.net/packages.html
No.2
- 回答日時:
MD5というファイルの同一性の確認に使う手法があります。
ファイルを読み込んで128bitのデータを生成し、それが同一だと同一ファイルだと判断します。参考URL:http://www.vector.co.jp/soft/win95/util/se136327 …
この回答への補足
ありがとうございます。
MD5はファイルの内容全部を読む必要があるんですよね?
現存する2つのファイルの同一性ではなく、ファイルの所属するディレクトリやファイル名が変わったとしても、C:\aaa\ddd\eee.dat が、前回チェック時のC:\aaa\bbb\ccc.dat であることを認識したいのですが、やはり無理でしょうか・・・
ファイル名やディレクトリが変わっても、HDD上の物理位置は変わっていないわけですから、それを認識するにはファイルシステムを迂回してHDDをローレベルで読むしかないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iCloud for Windowsをアンイン...
-
OneDrive必要なものでしょうか
-
VBAにおいて、ファイルの移...
-
[Unity]シーンファイルの中が消...
-
ファイルの同一性を判定するID...
-
Excel: ファイル名になぜ、[...
-
バインダーの作り方
-
batでファイル名を変更したい(...
-
Excelでファイルが開かない
-
彼女の過去の恋愛に嫉妬してし...
-
VBSでフォルダ内の最新のファイ...
-
Googleドライブについて
-
vbsからのExcelマクロ呼び出し...
-
docxをmht形式で保存したファイ...
-
Access VBAから使用したExcelプ...
-
zip.001 zip.002 zip.003といっ...
-
パスワード付きmp3ファイルにつ...
-
macとwindowの互換性の問題から...
-
マウントしたディスクにcpで、...
-
ファイルを「開く」と「編集」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
OneDrive必要なものでしょうか
-
EXCELVBAにて文字列にして「01...
-
vbsからのExcelマクロ呼び出し...
-
複数のExcelファイルにある同名...
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
FTPのgetとputの使いわけ。
-
iCloud for Windowsをアンイン...
-
VBAにおいて、ファイルの移...
-
docxをmht形式で保存したファイ...
-
Excelに貼り付けた画像を圧縮す...
-
5000個のtiffファイルをpdfへ変...
-
[Unity]シーンファイルの中が消...
-
自動で.xlsを閉じて指定フォル...
-
エクセルのファイル:「自分」が...
-
Googleドライブについて
-
htmlファイルを結合して一つの...
-
エクセルの固定範囲にCSVを貼り...
おすすめ情報