• ベストアンサー

Windows inodeに変わるファイル及びディレクトリの一意な情報

Windows環境でinodeに変わるファイル及びディレクトリの一意な情報 はないでしょうか? タイムスタンプの更新、ファイルサイズの変更、ファイル名の変更 などの情報更新後も、UNIXであればinodeが変わらないので、そのファイルが一意である事を認識できるのですが、windows環境ではinodeの概念が無いので、このような事ができません。 windows環境で、このような情報変更後も、一意な情報って無いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#208124
noname#208124
回答No.1

要管理者権限ですが DeviceIoControl(..., FSCTL_GET_OBJECT_ID, ...)で取れるFILE_OBJECTID_BUFFERのObjectIdメンバ ボリュームで一意と書いてあります 他にはGetFileInformationByHandleで取得するBY_HANDLE_FILE_INFORMATIONのnFileIndex{High,Low} ただし再起動やボリュームのアンマウント間では一意ではありません

参考URL:
http://msdn.microsoft.com/en-us/library/aa364570.aspx
kingfruits
質問者

お礼

dummさん ご回答ありがとうございました。 ちょっと敷居が高かそうですが、がんばってみます。

関連するQ&A

  • Windowsのファイル・フォルダのタイムスタンプ

    Windows10ですが、ファイルやフォルダを作成してもすぐに忘れてしまうことがあります。その理由としてあるディレクトリ(フォルダ)\Aのサブのディレクトリ\A\Bを変更したりしても元のフォルダ\Aのタイムスタンプが変更されないということがあるように思います。ディレクトリの深いところで何らかの更新をするとそれが上のディレクトリのタイムスタンプを更新するというような設定はないのでしょうか。 技術的に難しい感じはしないのですが、そうしない理由は何でしょうか。フォルダを作った日にちをいつまでもキープしておきたいということでしょうか。 また、フォルダをコピーするとコピーした日がスタンプされますね。移動はどうなるでしょうか(実験すればすぐですが)。タイムスタンプの考え方とはどのようなことになるでしょうか。また、タイムスタンプの付け方の設定変更はできないでしょうか。

  • FTPでのディレクトリのアップロード方法とタイムスタンプ

    (1)FTPでのディレクトリのアップロード方法 DOS窓から、FTPコマンドで、FTPサーバーにログインし、putやmputでファイルをアップロードする際に、ディレクトリをアップロードする方法をご存知の方がいらっしゃれば教えてください。 サブフォルダ以下すべて、ディレクトリ構成ごとアップロードしたいと考えています。FFFTP等のツールを使わずにコマンドラインからやりたいと思っています。 (2)FTP時のタイムスタンプ WindowsのクライアントPCから、UNIXのサーバーにファイルをアップロードすると、タイムスタンプがファイルをアップロードした時間に置き換わってしまい、もともとのタイムスタンプが書き換えられてしまいます。タイムスタンプをそのままにしてアップロードすることが可能であれば、教えてください。できれば、コマンドラインからがいいですが、不可能ならFFFTP等のツールを使用しようと思っています。 よろしくお願い致します。

  • ディレクトリとファイルを、タイムスタンプを保持したままコピー・移動したい

     Windows95で、タイムスタンプを保持したままディレクトリと ファイルを同時にコピー・移動できるソフトを探しています。 ディレクトリとファイルの2回に分けてやれば出来ないことも ないのですが、ディレクトリだけは普通にやると、 他ドライブへのコピー・移動時はタイムスタンプが変わって しまいます(同ドライブ内へのコピーでも同様)。  Windows95ではディレクトリのタイムスタンプを保持したままの コピーなどは基本的にはできないようですが、何らかの方法で 実現した物が在ればと思います。

  • ディレクトリの作り方について

    初心者の者です。 プログラムでディレクトリ(フォルダ)の作り方をご存知の方教えてください。 fopen("data/○○.dat", "w")で、 dataというディレクトリ(フォルダ)の中に○○.datというファイルを 作ることができるという事は分かったのですが、この方法では あらかじめdataというディレクトリを作らなければなりません。 プログラムを実行させるときにディレクトリを作り、その中にファイルを 作るにはどのようにすればよいでしょうか? また、動作環境はWindowsとUNIXの両方で使いたいのですが, 使い分けなければならないのでしょうか? よろしくお願いします。

  • cshでmakeのようなファイルの時間を見るコマンド

    makeでは2つのファイルのタイムスタンプを比較して更新 されていたらコマンドを実行する 機能がありますが、こ のことをcshスクリプトで実行しようとした場合、何か良い 方法は有りませんでしょうか? 素直にmakeを使用すればよいのですが、既に環境がshell スクリプトベースで構築されてしまっており、 出来ればこれと親和性の良い方法で、多少場当たり的なのは認識しつつも、逃げたく思っています。 より具体的には2つのディレクトリ(CENTER directoryとwork directory)があり、ワークは各々が各人の都合でソースコードを変更します。 ある時点でCENTERディレクトリが更新された場合、その更新されたファイルだけをセンターディレクトリからワークディレクトリへコピーしてくる という事をしたいと思って います。 以上、よろしくお願い致します。

  • 酷似する2つのディレクトリを比較して、違う箇所を検出したい

    ある、とてもよく似た2つのディレクトリがあります。 構造はかなり深く、複雑です。ファイル数も膨大です。 この2つのディレクトリを比較して、 - 片方に存在して、もう片方に存在しないファイルやディレクトリ - タイムスタンプが異なるファイルやディレクトリ を検出するツール、または、方法を探しています。 どなたかご存知の方、お知恵をお貸しください。 環境は、Windows XP Pro SP2 です。 よろしくお願いします。

  • タイムスタンプでファイルを指定する方法

    UNIXコマンドにおいて、ファイル名から日付を判断できないファイルを消す為に、 ファイルのタイムスタンプを指定する方法を教えてください。 やりたいこととしては以下のようになります。 ・4月から7月の間に更新されたファイルを削除したい ・ファイルは同一ディレクトリに1000以上あり、消したいファイルはその内600ほどある

  • カレントディレクトリ内のファイル検索

    Windows2003環境で、カレントディレクトリ下に存在するwmvファイル数をカウントしたい。UNIXでいう[find ./ -name *.wmv |wc -l] 何かよい方法はありませんでしょうか?

  • ディレクトリ内のファイル名取得

    ディレクトリ内にあるすべてのファイルの名前を取得したいのですが、どうすればいいでしょうか? unix系では dirent.h を使ってできるようなのですが windowsなので、dirent.hはないようです。 お願いします。

  • ディレクトリのワイルドカード

    現在、javaでディレクトリの検索を 行って削除をしたいのですが ディレクトリ名がタイムスタンプで作成 されていてワイルドカードでディレクトリを 削除するしかないのですがいろいろ探してみたところ ファイルのワイルドカード検索はありますが ディレクトリも同様にできるのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Java