3

名前にタイムスタンプが含まれる特定のディレクトリにフォルダをコピーする簡単なバックアップスクリプトをRubyで作成しようとしています。私のコードは(簡略化されています):

require 'Fileutils.rb'
time = Time.now
FileUtils.cp_r "C:/somefolder", "D:/somefolder_backup_#{time}" 

しかし、私は取得し続けます

`fu_mkdir': Unknown error - mkdir failed (SystemCallError)

現在の時刻を含むフォルダを作成したい場合も同じです。

FileUtils.mkdir "C:/somefolder_#{time}"

#{time}を省略した場合、特権の問題ではないようです。これは完全に機能します。

アドバイスをいただければ幸いです。

4

2 に答える 2

9

私の推測では、Windowsがディレクトリ名に許可していない文字が時間文字列に含まれています(私のコードは私のUbuntuマシンで正常に機能します)。ちょうど数値になるように時間をフォーマットしてみてください。おそらくうまくいくでしょう。

require 'Fileutils.rb'
time = Time.now.strftime("%Y%m%d%H%M%S")
FileUtils.cp_r "C:/somefolder", "D:/somefolder_backup_#{time}" 
于 2010-10-19T18:34:37.797 に答える
1

によって返される文字列にTime.nowはコロンが含まれていますが、これはディレクトリ名には無効な文字です。

ダニエルのコードを使用して時間をフォーマットします。

于 2010-10-19T18:36:11.700 に答える