2016-08-03 1 views
0

私は、それぞれが異なる名前であるが同じディレクトリにある約100個のフォルダのコピーを作成するプログラムを作成しようとしています。ここで私が持っているコードは、これまでのところです:Ruby FileUtils.mkdirエラー

require 'fileutils' 

filename = "C:/Users/drwat/Desktop/somefolder/accountusernames.txt" 
times = IO.readlines(filename).size 
counter = 0 
password = "changethis" 

originalFolder = "Release/." 

while(counter < times) 
    begin 
     currentusername = IO.readlines(filename)[counter] 

     FileUtils.mkdir currentusername 
     FileUtils.cp_r(originalFolder, "#{currentusername}") 

     #Put username into auth.json file 
     data = File.read("auth.json") 
     filtered_data = data.gsub("aaaa", "#{currentusername}") 
     File.open("auth.json", "w") do |f| 
      f.write(filtered_data) 
     end 

     #Put password into auth.json file 
     data = File.read("auth.json") 
     filtered_data = data.gsub("bbbb", "#{password}") 
     File.open("auth.json", "w") do |f| 
      f.write(filtered_data) 
     end 

     FileUtils.cp "auth.json", "#{currentusername}/Config" 

     #Revert auth.json file back to A's and B's 
     data = File.read("auth.json") 
     filtered_data = data.gsub("#{currentusername}", "aaaa") 
     File.open("auth.json", "w") do |f| 
      f.write(filtered_data) 
     end 
     data = File.read("auth.json") 
     filtered_data = data.gsub("#{password}", bbbb) 
     File.open("auth.json", "w") do |f| 
      f.write(filtered_data) 
     end 

     counter += 1 
    end 
end 

私はプログラムを実行すると、私は取得エラー:

D:/Installed Programs/Ruby200-x64/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir': Invalid argument - twitchypair1 (Errno::EINVAL) 
     from D:/Installed Programs/Ruby200-x64/lib/ruby/2.0.0/fileutils.rb:245:in `fu_mkdir' 
     from D:/Installed Programs/Ruby200-x64/lib/ruby/2.0.0/fileutils.rb:174:in `block in mkdir' 
     from D:/Installed Programs/Ruby200-x64/lib/ruby/2.0.0/fileutils.rb:173:in `each' 
     from D:/Installed Programs/Ruby200-x64/lib/ruby/2.0.0/fileutils.rb:173:in `mkdir' 
     from D:/somefolder/thiscode.rb:14:in `<main>' 

私のコードまたはの私のインストールに問題がある場合、私は知りませんルビーか何か。 FileUtils.mkdir行を削除するなど、いくつかの方法で動作させてみましたが、それを得ることはできません。それだけで別のエラーが表示されます。どんな助けでも大歓迎です。私はRubyで一生懸命やったわけではありませんが、これとは別に使うのはとても簡単です。

また、 "#{currentusername}"とcurrentusernameは全く同じものを返しますか?

+1

'#{x}'と 'x'は、*' ​​x'が文字列値の場合、一般的には同等です。他の人にとっては、 'x.to_s'とおおむね同等です。 – tadman

+1

特定の目的を持っていないため、中間に 'begin ... end'構造がある理由も明確ではありません。 – tadman

+0

作成しようとしているディレクトリの名前のファイルがある可能性はありますか? – tadman

答えて

0

ので、このようなものが動作するはずです:

require 'fileutils' 

filename = "C:/Users/drwat/Desktop/somefolder/accountusernames.txt" 
times = IO.readlines(filename).size 
counter = 0 
password = "changethis" 

originalFolder = "Release/." 

IO.readlines(filename).chomp.each \ 
{|currentusername| 
    FileUtils.mkdir currentusername 
    ... 
} 

私は前に述べたように、それは、ソースデータからそのキャリッジリターン/改行を削除するには、ファイル内()データをムシャムシャ食べることはほとんど常に良い考えです。