Соберите все ZIP-файлы с одинаковыми именами и скопируйте их снова. Ruby - PullRequest
0 голосов
/ 12 июня 2018

У меня есть каталог, который содержит несколько журналов для одного и того же сценария с отметкой времени.Я хочу собрать все zip-файлы и создать новый zip.

Directory Structure:
Test_1_Run_Logs_06-12-2018_10_15_35.zip
Test_1_Integration_Logs_06-12-2018_10_15_35.zip
Test_1_Interface_Logs_06-12-2018_10_15_35.zip
Test_2_Run_Logs_06-12-2018_10_30_35.zip
Test_2_Integration_Logs_06-12-2018_10_30_35.zip
Test_2_Interface_Logs_06-12-2018_10_30_35.zip

Я разделил все файлы с одинаковыми именами.ZIP-файл не перемещает все ZIP-файлы.Как это сделать в ruby ​​

Code
require 'fileUtils'
require 'zip'
scriptNameArr = []
logFolder = 'C:/Users/Desktop/logs/'
copyFolder = "C:/Users/admin/Desktop/Test/Ruby Test/copyFolder/"

# Collect all the files present in logFolder separating by timestamp
Dir.entries("#{logFolder}/").each do |fName|
    unless (File.directory? "#{logFolder}#{fName}")
         scriptNameArr << fName.split("/").last.split(/_\d+-\d+-/)[0]
    end
end
scriptNameArr.uniq!

# Create a new zip into copy 
scriptNameArr.each do |scriptName|
    zipName = "#{copyFolder}#{scriptName}.zip"
    Dir.mkdir(copyFolder) unless (Dir.exist?(copyFolder))
    FileUtils.rm(zipName) if File.exist? (zipName)
    Zip::File.open(zipName, Zip::File::CREATE) do |zip|
         Dir.glob("#{logFolder}#{scriptName}*") { |file|
             fileName = file.split("/").last
             zip.add(fileName, logFolder)
         }
    end
end

Он создает пустой zip каждый раз.Что я должен сделать, чтобы скопировать zip-файл и вставить в новое место?

1 Ответ

0 голосов
/ 12 июня 2018



Я думаю, вы пропустите имя файла, когда zip.add(fileName, logFolder)

Правильно: zip.add(fileName, File.join(logFolder, fileName))

Счастливого кодирования!:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...