• 締切済み

Ruby Win環境 .(ドット)から始まるファイルのctime

カレントディレクトリにある全てのファイル及びディレクトリの変更時刻を取得したいです。 Dir.foreach('.') do |file| puts File.ctime(file) end そこで、上記Rubyスクリプトを作成し実行しました。 しかし、カレントに.(ドット)から始まるファイルを置いて上記rubyスクリプトを実行すると、 `ctime': No such file or directory - .htaccess (Errno::ENOENT)のエラーになってしまいます。(.htaccessをカレントに置いた例) Win環境固有のものかと思いますが、なにか対策があるでしょうか?

みんなの回答

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

バージョンを補足した方がよいでしょう。 私の環境 C:\test>ruby -ve "Dir.foreach('.') {|f| puts \"#{File.ctime(f)} - #{f}\" }" ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] Fri Dec 05 20:59:57 +0900 2008 - . Thu Jan 01 09:00:00 +0900 1970 - .. Fri Dec 05 21:00:06 +0900 2008 - .test

kingfruits
質問者

お礼

自己解決しました(汗 Dir.foreach('..') do |f| f="../"<<f puts "#{File.ctime(f)} - #{f}" end パスが付いてなかったからです。すみません、お騒がせしました。

kingfruits
質問者

補足

koko_u_さん ご回答ありがとうございます。 まず最初に質問に誤りがありました。すみません。 以下の様に試してみましてみると、問題なく動作しました。 C:\test>ruby -ve "Dir.foreach('.') {|f| puts \"#{File.ctime(f)} - #{f}\" }" ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] Fri Dec 05 21:30:49 +0900 2008 - . Thu Jan 01 09:00:00 +0900 1970 - .. Fri Dec 05 21:47:35 +0900 2008 - .test 実は、ファイル”.test”はカレントでなく、一つ上のディレクトリに置いていました。(質問する際の問題事象の切り分けを怠けてしまった。) 以下の様にオペレーションを続けると問題事象が発生しました。 C:\test>mkdir test2 C:\test>cd test2 C:\test\test2>ruby -ve "Dir.foreach('..') {|f| puts \"#{File.ctime(f)} - #{f}\" }" ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] Sat Dec 06 18:44:43 +0900 2008 - . Fri Dec 05 21:30:49 +0900 2008 - .. -e:1:in `ctime': No such file or directory - .test (Errno::ENOENT) from -e:1 from -e:1:in `foreach' from -e:1

関連するQ&A