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 回答