• ベストアンサー

copyをしたときの最終更新時間

WindowsXP+cygwinでPerlを使用して、2つのファイルを同期するソフトを練習の為に作っています。ファイルAとファイルBの最終更新時間をstat関数で調べてFile::Copyモジュールのcopy関数でコピーする方法で作っています。ファイルAの方が古い状態で同期を実行すると、その内容がファイルBに上書きされますが、ファイルBの最終更新時間がファイルAと同じ時間ではなくて、copyを実行した時間になってしまいます。copyをした後で、ファイルBの最終更新時間をファイルAと同じにする方法はあるのでしょうか。ご存じの方、いらっしゃいましたらお教えください。よろしくお願いします。

  • kary
  • お礼率95% (82/86)
  • Perl
  • 回答数1
  • ありがとう数1

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

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

ファイルのタイムスタンプを変更します。 Linux なら、touch というコマンドがありますが、 Perl だけでも、utime という関数を使えば可能です。 Windows は確か、アクセス時刻の扱いは微妙だったような気がしますが、 最終変更時刻は問題なく変更できると思います。

参考URL:
http://www.site-cooler.com/cgi-bin/kansuu.cgi?lang=perl&method=utime
kary
質問者

お礼

教えていただきました方法を試してみましたところ、私の行いたいことができました。ありがとうございました。

関連するQ&A

  • ファイルの作成時刻と更新時刻

    open(OUT,">>$file"); print OUT "$value\n"; close(OUT); で作成したファイルの $time_stamp_9 = localtime((stat("$file"))[9]); $time_stamp_10 = localtime((stat("$file"))[10]); で取得したとき常に同じ値になるのですが、追加書き込みでもその様になるのでしょうか?よろしくお願い致します。 #(stat($file))[9];#最終更新時刻 #(stat($file))[10];#作成時刻

    • ベストアンサー
    • Perl
  • クラウド「Copy」の同期について

    Copyを利用しているのですが 私は100GBクラスの大容量のファイルなどを Copyに倉庫代わりとして使っています。 しかし、この同期がさすがに100GBクラスになると とんでもない時間が掛かります。 そこで私はクラウドサービスは詳しくないので 分からないのですがCopyに限らず Dropboxなどで同期させる時はパソコンの電源は 付けたままにしておかないと同期は実行されないのでしょうか? 私は普段はパソコンを使用しない時は 休止状態を使っているのですが 同期が進んでいなかったので質問をしています。 もしも電源が入っていないと同期がされないのであれば 大容量のファイルをストレージに同期させる時は 電源は付けっ放しにしておかなければならないという事でしょうか? 何か電源を付けていなくても 同期が出来る方法があるのであれば 教えて頂けると大変ありがたいです。 また、もう1点教えて頂きたいのですが CopyやDropboxで同期をするという事は ファイルをアップロードするという認識で合っていますでしょうか? 教えて頂けると大変ありがたいです。 どうぞよろしくお願い致します。

  • クラウド「Copy」同期が終わらない+されない

    類似の質問を見つけたのですが、すでに質問が締めきられているのと、どうも私の症状とは違うため、質問させていただきます。 私もストレージサービスCopyを利用しています。複数のPCのデスクトップにCopyを導入し、各PCからフォルダにアクセスしています。フォルダはたくさんの小さいフォルダを一つのフォルダにまとめる形で作成しています。 こうした中、同期が全く終わらない時があります(非常に軽いファイルでも)。そればかりか、「同期は終了」と表示されつつ、同期されていないのです。こういうことは何回かありました。 原因を考えているのですが、 1.同期が終わる前にパソコンの電源を切ってしまった? 2.同期が終わる前にネット接続を切ってしまった? 3.(1,2に関連して)小さなフォルダを多数まとめて一つのフォルダにまとめているので、ファイルの更新までに実は時間がかかっていて、自分は同期が終わったつもりでも実は同期が終わってなかった? 4.(このサイトでのCopyに対する回答(2013年10月20日)では「同期させるときはパソコンの電源はつけたままに」との旨、ありました。この意味について)ファイルを同期したPCとは別のPC全て、常時電源なりネット接続なり入っている状態でなければならないということ? 1,2に関しては、いずれもファイルを更新してから、ある程度時間を経て電源およびネット接続を切っています。しかし、3のように実は同期に時間がかかっているとすれば・・・ 4については、私はいったんサーバでファイルを更新すれば、あとはどのPCからでもアクセスできるものと思っていましたのですが、その認識自体が根本的に違うということになってしまいます。 もしかしたらこの質問はCopyだけじゃなく、クラウドサービス全体に関する基礎的な質問に 入るのかもしれません。上記以外の可能性も含め、ご教示いただけると幸いです。

  • 動的ファイルの最終更新日を取得する方法はありませんか

    はじめまして。 静的なファイルであれば、javascript:alert(document.lastModified) や (stat 'ファイル名')[9]で最終更新日の取得ができますが CGIやPHP、サーバから送り出される際自動的に広告が挿入されるHTMLの 最終更新日を読むことは出来ないものなのでしょうか。 (例えば、日付を保持してミラーリングするなど) CGI設置不可・自動広告挿入のとあるWEBスペースに  相当数のHTMLファイルを置いており、 これのファイルリストを作りたいと思っています。 別の、CGI可のサーバに置いたスクリプトから LWP::SimpleやWgetを使ってヘッダ取得を試してみましたが やはり(当たり前といえば当たり前なのですが) タイムスタンプはスクリプトを作動させた日付になってしまいます。 ※今回リスト化したいファイルのあるサーバは、  CGIの置けないサーバですが、もし置ける環境であっても  stat関数では動的なファイルのLastModifiedは読めませんよね? もし何か良い方法をご存じでしたらぜひご教示ください。 何卒宜しくお願いします。

    • ベストアンサー
    • Perl
  • batファイルのcopy機能でファイルを結合

    batファイルのcopy機能でファイルを結合すると、最終行に必ず ■ がついてくるのですが、これを消す方法ご存知ありませんか? A.txtの内容 yahoo B.txtの内容 google test この2つのファイルを結合させてA.txtを見てみると A.txt yahoo google test ■ ↑最終行の■を消したい [コマンド] COPY A.txt + B.txt でファイルを結合 A.txtの最終行に ■ マークが現れる。

  • 最終更新日

    実行中のファイルの最終更新日を取得したいのですが、どうすればよいですか? エクセルのファイル等を開くと、ファイルの更新日には開いた時の日時が一時的に入り、そのファイルを保存せずに終了すれば、開く前に入力されていた更新日に戻りますが、この開く前に入力されて更新日を所得したいのです。 DateLastModified等を使用すると開いた時の日時になってしまいます。 何か方法をご存知でしたら教えて下さい。

  • ファイルの最終更新日をちがうページで取得したい

    ファイルAの最終更新日によって、ファイルBのページに「NEW」アイコンを表示・非表示にさせたいのですが…。 手動で行ってもいいのですが、面倒なので自動でやってみたいと試みているのです。可能でしょうか?? 私の考えでは、ファイルBのページでのファイルA最終更新日を取得し、日付で判断すれがいいのだとは思ったのですが。 SSIを使って、ファイルBのページでファイルAの最終更新日までは取得することができました。判断文をどうかいていいものか…。 もし、わかられる方がいらっしゃれば教えてくださいm(__)m

  • copy() で属性保存

    こんにちは。 copy関数を用いて file1 を file2 にコピーすると、 作成時刻はプログラムの実行時になりますし パーミッションも0644になってしまいます。 それは困るので時刻やパーミッションを保存してコピーすることは 出来ませんでしょうか。 やりたいことは $command = "cp -a file1 file2"; system($command); なんですが、UNIXコマンドをなるべくPHPの中に書きたくないのです。 すっきりしませんし…。

    • 締切済み
    • PHP
  • copy関数について質問です

    こんにちは copy関数について質問です まず、何がしたいのかといいますと、少し長くなるのですが… あるリストをテキストファイルで作成して、内容を読み込んでHTMLに表示 HTMLファイルはPC用、携帯用とあり、PCがEUC 携帯がSJISになっています ファイルの更新プログラムはPCにあわせてEUCで作成しているので PC用のファイル更新・表示も出来ている状態です で、PC用のファイル更新が終わったら、PC用のファイルを携帯用にコピー したいと思ったのですが、文字コードが違うので普通にcopy()を使っても 携帯用のHTMLでは表示出来ないという訳です これまでは、FFFTPを使って EUCで繋いでPC用ファイルをDL→SJISで繋ぎ直して携帯用ファイルをUP ということをしていたのですが、これをPHPで処理出来ないものかと… ↑の処理さえ出来るなら特別copy関数を使う必要はないのですが 何かいい知恵があれば、アドバイス頂けますか??

    • ベストアンサー
    • PHP
  • VBA_マクロ内でマクロ実行

    独学でVBAをやってる初心者です。 よろしくお願いします。 EXCEL2003を使ってます。 例) <A.xlsファイル> Sub File_A () Workbooks.Open Filename:="B" Call File_B Range("A1").Select Selection.Paste End Sub <B.xlsファイル> Sub File_B () Range("A2:T5").Select Selection.Copy End Sub A.xlsファイルを開きマクロFile_Aを実行させると B.xlsファイルのマクロFile_Bを実行することができません。 どうしたらうまく実行できますか? 教えてください。

専門家に質問してみよう