- 締切済み
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環境固有のものかと思いますが、なにか対策があるでしょうか?
- 小林 K太郎(@kingfruits)
- お礼率66% (211/319)
- Ruby
- 回答数1
- ありがとう数28
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- koko_u_
- ベストアンサー率18% (459/2509)
バージョンを補足した方がよいでしょう。 私の環境 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
関連するQ&A
- Rubyのスクリプト
Rubyを使って、ディレクトリを順に処理していくスクリプトを作ろうとしています。 下記は、perlのものです。 chdir("C:/data"); opendir(DIR, "./"); @myfolderlist= grep(-d, readdir(DIR)); close(DIR); foreach $myfolder(@myfolderlist){ if(($myfolder ne ".") && ($myfolder ne ".." )){ print "$myfolder\n"; } } これに対応するような、かつRubyらしい(foreachを使う)スクリプトを作りたいと考えます。 Dir.foreach('C:/Data'){|item| item.chomp! print item,"\n" } 上記のRubyスクリプトの問題は、ディレクトリのみならず、そこに存在するファイルまで出してしまいます。 Rubyにおいて、ディレクトリ」のみを持ってくるには、どのようにすれば良いでしょうか? 宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- rubyのforeach構文について
rubyのforeach構文を用いて(foreachにこだわるわけではありませんが) 指定したディレクトリ内の全ファイルに対してプログラムを実行させるようなコードを書きたいのです 以下が書いてみたコードなのですが、これだと一度execを行ったあと動作が終了してしまいます なにか対応策はありますでしょうか よろしくお願いします Dir::foreach(ARGV[0]) {|f| exec("java execute " + ARGV[0]+ "\\#{f}") }
- ベストアンサー
- Ruby
- Rubyにおける変数
Windows2000上で、Rubyを動かしています。 皆様のお陰で、少しずつ進んでおります。しかし、また質問させてください。 変数に、ファイル名を代入して、実行すると、動かなくなりました。 実名を入れた、system('tar zxf test_20070511.tar.gz')では、動きますが、 変数にした、system('tar zxf myFilename')では、動きません。 Rubyスクリプト ---------------------- print Dir.getwd,"\n" Dir.chdir('C:\myData\myData2') print Dir.getwd,"\n" dir = Dir.open('C:\myData\myData2') while myFilename=dir.read do if /.tar.gz/i =~myFilename then puts myFilename system('tar zxf myFilename') end end dir.close ------------------------------------ 宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- Rubyのファイルを実行できません(初心者)
【環境】 デバイス:MacBookAir エディタ:CotEditor ***************** プログラミング初心者です。 MacにてRubyを独学で学ぼうと思い『たった2日でできるRuby』にある puts("Hello,Ruby.") という1行だけ書いたCotEditorで作成した hello.rb というファイルをターミナルで実行するステップで早くもつまづいております。 テキスト通り cd ruby と記述しても -bash: cd: ruby: No such file or directory とでてきてしまいます。 どなたかご教授お願いできますでしょうか? 画像なしですみません、何故か画像がアップできません。 ファイルサイズ全然余裕なんですけどもね・・・。
- 締切済み
- Ruby
- rubyでコマンドプロンプトを使うとき
rubyのスクリプトをコマンドプロンプトで実行する際に、ディレクトリ名を引数に指定したいと思っています。 その場合記述的には「ruby スクリプト名.rb ディレクトリ名」と書けばよろしいのでしょうか? 例えば「temp」というディレクトリがあり、それを指定したい場合は「ruby スクリプト名.rb temp」と書けば指定できてることになるのでしょうか。 低レベルな質問かもしれませんが、ruby超初心者なので教えて頂ければと思います。
- ベストアンサー
- Ruby
- プログラミング ruby について
悩んだ挙句、尋ねる相手もいないため、質問させてください。 テキストエディタに "puts 1+2" として、「calc.rb」と名前をつけて保存。その後コマンド プロンプトで"ruby calc.rb"で実行とすると、"3"と出力するはずのところ、"ruby: No such file or directory -- calc.rb (LoadEroor)"とでます。 何が原因でしょうか? ちなみに、テキストエディタとして、メモ帳 or SciTEを使用。 また、"ruby -v"の実行は、うまく表示されました
- ベストアンサー
- Ruby
- Rubyでpdfファイルを読み込む方法
Rubyでpdfファイルを読み込む方法を探しています。 file = open("sample.pdf", "r") file.each { |f| puts f } というコードを書いて実行すると文字化け?したようになったり、数字ばかりの行が挿入されていたりと、txt形式のファイルを読み込んだ時の様に文字が正しく出力されません。 何かpdfを読み込む正しい方法があるのでしょうか。 また、直接読み込むことはせずにpdftotext.exeを使って予めtxt形式に変換しようと考えたのですが、Rubyのスクリプトの中でpdftotext.exeを使う方法が分かりません。 解決方法をご存じの方がいらっしゃいましたら教えて頂けないでしょうか。 環境はWindowsです。よろしくお願いします。
- ベストアンサー
- Ruby
- ruby : no such file of・・・
ruby-2.2 consoleでコマンドプロンプトを開いて、スクリプトファイルにあるフォルダにcdコマンドで移動して、ファイル名「ruby proto.rb」と入力すると、 ruby: No such file of directory -- proto.rb (LoadError) と出て先に進めません。 ディレクトリもファイルもちゃんとあるのですが……。 回答お願いします。
- 締切済み
- Ruby
- Rubyのpopen3について
はじめまして Rubyをはじめて1か月の初心者です。 popen3を使用するにあたって大変困っております。 popen3で外部コマンドを実行して、実行結果の標準出力をファイルとして格納しようと思っています。 外部コマンドの内容は、SSH接続でサーバへログインし、そこにあるシェルスクリプトを実行させるもので、 呼び出すシェルスクリプトに対して、Rubyから標準入力を渡し、シェルスクリプトが標準入力を受け取り、 それをもとに呼び出したシェルスクリプトがさらに別のシェルスクリプトを呼び出し、実行結果を標準出力としてRubyで受け取ってファイルに格納したいと思っています。 ソースとしては、以下のようにしてますが、標準入力を引き渡す方法が分かりません。 その為、標準入力を引き渡す部分は記述していません。 Open3.popen3('ssh localhost sh test.sh ') do |stdin, stdout, stderr| begin loop do IO.select([stdout,stderr]).flatten.compact.each { |io| if stdout != "" then stdout_lines = stdout puts("stdout_lines = " + stdout_lines) end stderr_lines = stderr if stderr != "" puts("stderr_lines = " + stderr_lines) } break if $stdout.classed? && $stderr.closed? end rescue EOFError end end JRubyの1.6.8なので、Rubyのバージョンは1.8.7相当です。 なにぶん初心者の為、なにをどうすれば良いか分からない状態です。 まず、実現が可能かを知りたいです。 実現可能であれば、標準入力を引き渡す方法を教えていただきたく。 よろしくお願いします。
- 締切済み
- Ruby
- rubyがInternalServerError
こんばんは。 自鯖にて初めてrubyを動かそうとしたところInternalServerError(500エラー)が帰ってきます。 まず、httpd.confに ---------------------- AddHandler cgi-script .cgi .rb ---------------------- と追加しました(このため.htaccessは作成しなくていいと思う)。 コマンドラインにて[which ruby][whereis ruby]を使い、[/usr/bin/ruby]にrubyがあることはわかるのですが、エラーが出てしまいます。 [test.rb] ---------------------- #!/usr/bin/ruby print "Content-type: text/html\n\n" print "test" ---------------------- 上記プログラムには755のパーミッションを与えています。 上記のフォルダにはCGI実行権が与えられています。 上記のフォルダではCGIはしっかりと動きます。 上記のプログラムはコマンドライン上[ruby test.rb]では動きます。 また、他のサイトもいろいろ調べましたが #!/usr/bin/env ruby #!ruby #!/usr/local/bin/ruby どのいパスでもエラーがでました。 解決方法を教えてください。 サーバ ---------------------- CentOS 5.4Final Apache 2.2.3 Ruby 1.8.5 ----------------------
- 締切済み
- ハードウェア・サーバー
お礼
自己解決しました(汗 Dir.foreach('..') do |f| f="../"<<f puts "#{File.ctime(f)} - #{f}" end パスが付いてなかったからです。すみません、お騒がせしました。
補足
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