使用当前时间作为名称创建文件夹

时间:2010-10-19 18:30:04

标签: ruby windows directory mkdir

我正在尝试在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} -thing它完美无缺的话,它似乎不是特权问题。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:8)

我的猜测是你的时间字符串中有一个字符,Windows不允许在目录名中(你的代码在我的Ubuntu机器上运行正常)。尝试格式化你的时间,使它只是数字,这可能会起作用:

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

答案 1 :(得分:1)

Time.now返回的字符串中包含冒号,这是目录名称的非法字符。

使用Daniel的代码格式化时间。