2016-03-01 3 views
-1

Мне нужно найти подпапку в определенном каталоге с помощью Ruby. Например, d:/abc/xyz/*/file.txt. На месте * у меня может быть что угодно. Я пробовал Dir.glob(), но он возвращает массив, который я не мог преобразовать в строку. Есть ли какой-либо другой метод, который я могу достичь. Мне нужно скопировать файл из другого места в этот путь. , когда у меня есть выход Dir.glob() в var и используется как это system ("copy C: \ abc \ xyz # {var}"), он не копирует. Может ли кто-нибудь предложить мне лучший способ сделать это.Ошибка преобразования массива в строку для `Dir.glob`

Мой код

вар = Dir.glob ("D: // резервного копирования // FFI // * // окно") .Первый

система ("копия D: \ Backup \ автоматизировать -scripts # {var} ")

Заранее спасибо.

+0

Почему вы удалить все форматирование, которые сделали вопрос читаемым? – orde

ответ

1

Вы должны использовать:

temp_dir = //generate path for your dynamic directory_name 

file_name = Dir.glob("d:/abc/xyz/#{temp_dir}/file.txt").first 

.first вернет первый элемент массива в строку. Если нет файла с заданным именем (file.txt) Dir.glob вернет нулевой класс.

Если вы хотите перечислить все каталоги использования:

Dir["**/"].each {|x| puts x} 
+0

@Paul: Спасибо, друг. Это дает мне строковый формат. но когда я пытаюсь использовать его внутри системы («copy d: x \ y \ z # {имя_файла}), он говорит, что синтаксис команды неверен – Ash

+0

. Введите полный код. –

+0

#!/usr/bin/ruby ​​ var = Dir.glob ("D: // backup // ffi // * // window") .first system ("copy D: \\ backup \\ automate-scripts # {var}") – Ash

Смежные вопросы