2010-10-19 145 views
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} - 它完美的工作,它似乎不是一個特權問題。

任何意見,讚賞。

回答

7

我的猜測是你的時間字符串中有一個字符,Windows不允許在目錄名中(你的代碼在我的Ubuntu機器上適合我)。嘗試格式化您的時間,以便它只是數字,這可能會工作:

require 'Fileutils.rb' 
time = Time.now.strftime("%Y%m%d%H%M%S") 
FileUtils.cp_r "C:/somefolder", "D:/somefolder_backup_#{time}" 
+0

呃,很明顯。正如rspeicher所說,冒號就是問題所在。謝謝,你的代碼完美無缺! – Lennart 2010-10-19 18:45:13

1

通過Time.now返回的字符串有冒號在裏面,這是目錄名非法字符。

使用Daniel的代碼來格式化時間。

相關問題