Создание папки с текущим временем в качестве имени - PullRequest
3 голосов
/ 19 октября 2010

Я пытаюсь написать простой скрипт резервного копирования на 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} - все работает отлично.

Любые советы приветствуются.

Ответы [ 2 ]

9 голосов
/ 19 октября 2010

Я предполагаю, что в вашей временной строке есть символ, который 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 голос
/ 19 октября 2010

Строка, возвращаемая Time.now, содержит двоеточия, что является недопустимым символом для имен каталогов.

Используйте код Дэниела для форматирования времени.

...