2016-11-04 4 views
1

У меня есть 50k ZIP-файлы в папке. Мне нужно разархивировать весь этот контент, объединить все в один отдельный файл и удалить все заархивированные файлы. Я пытаюсь распаковать содержимое без необходимости иметь новый распакованный файл, который мне придется удалить. Ниже приведена эквивалентная операция, которую я сейчас выполняю в Linux, которая работает.Распакуйте содержимое и соедините содержимое в файл

for f in *.zip; 
do 
unzip -p "${f}" >> concatenatedfile.txt; 
rm $f; 
done; 

Но мне нужно сделать это в окнах через Batch, и я ограничусь использованием 7z для распаковки.

В настоящее время используется следующий код, где я жестко кодирую текстовое имя файла для целей тестирования, и он работает. Я пытаюсь получить это имя файла динамически и, если возможно, вообще не создаю этот файл и просто получаю данные zip-файла и продолжаю добавлять в файл concatenatedfile.txt.

for %%z in (*.zip) do (
    7z e "%%~fz" > NUL: 
    type hardcoded_filename.txt >> concatenatedfile.txt 
    del hardcoded_filename.txt 
    del %%z 
) 
+0

Вы должны сделать второй цикл в рамках первого подобрать извлеченный файл. –

+0

@Noodles Второй цикл, хотя это всего лишь один файл в каждом цикле? Могу ли я получить пример, пожалуйста. – kar

+0

Так вы говорите, что текстовый файл внутри zip-файла не совпадает с именем? – Squashman

ответ

0
@echo off 
For %%A in (*.vbs) Do (
    Copy "%%A" "%%A.bak 
    For %%B in (*.bak) Do (
     Echo %%B 
     Del "%%B" 
    ) 
) 
+4

Что делает код в этом ответе, связанный с распаковкой? – Pang

+0

Хм не знал спросить кого-то красиво, используя слово, пожалуйста, приравнивается к попрошайничеству. И, отвечая @Pang с моей цитатой, смутил много? – kar

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