1

Передо мной стоит интересный сценарий. Я вполне уверен, что есть способ сделать это, но я чувствую, что мне, вероятно, не хватает определенных инструментов и / или функциональных знаний.

Существует более пятидесяти ZIP-файлов, каждый из которых содержит, помимо прочего, текстовые файлы, которые необходимо объединить друг с другом. Структура примерно такая:

C:\Reports\FirstJob-1.zip  
|-MyName  
  |-FirstJob
    |-1
      |-[Some other folders]
      |-TXTReports
        |-English
          |-[Some other files]
          |-Report.txt  

C:\Reports\FirstJob-2.zip  
|-MyName  
  |-FirstJob
    |-1
      |-[Some other folders]
      |-TXTReports
        |-English
          |-[Some other files]
          |-Report.txt 

C:\Reports\SecondJob-1.zip  
|-MyName  
  |-SecondJob
    |-1
      |-[Some other folders]
      |-TXTReports
        |-English
          |-[Some other files]
          |-Report.txt

Если бы у меня были все файлы Report.txt в одной обычной папке с уникальным именем, я мог бы просто написать инструкцию FOR, предназначенную для *.txt и выполняющую что-то вроде type filename.txt >> Consolidated.txt для каждой. Тем не менее, все они имеют одинаковое имя файла и встроены глубоко в отдельные файлы ZIP.

Потенциально полезные инструменты, которыми я сейчас располагаю, - это Windows XP Professional SP3, PowerShell и WinZip. Я бы предпочел не загружать и не устанавливать ничего другого, но я понимаю, что могут потребоваться сторонние инструменты (или дополнительные инструменты от Microsoft или WinZip). Какие бы инструменты я ни использовал, они должны работать в Windows. Я действительно не хочу связываться с Cygwin или другими эмуляторами в этой системе.

По крайней мере, мне нужен инструмент, который позволит мне анализировать и манипулировать файлами ZIP из командной строки. Кроме того, есть ли другие конкретные осложнения, о которых я еще не думал?

2 ответа2

1

UnZip Info-ZIP (бинарные файлы Windows здесь) позволит вам извлекать zip- файлы из командной строки с помощью команды unzip -x . Остальное - это поиск и объединение файлов, например:

find . -name Report.txt -print0 | xargs -0 cat > Consolidated.txt

Выше приведены команды Unix, которые вы можете найти в Cygwin или GnuWin32.

Потенциальные последствия заключаются в том, что если у вас много файлов, команда xargs становится слишком длинной, а если файлы очень большие, вам может не хватить места на диске (вы можете обойти это, разархивировав и объединив файлы по одному, удалив распакованный архив папка после каждого файла).

1

Могу ли я предложить другой вариант? Если вы используете Windows XP, то в вашем распоряжении также есть VBScript. Несколько лет назад я написал серию статей, в которых демонстрировалось, как VBScript в WSH можно использовать для создания и манипулирования zip-файлами с помощью встроенной поддержки Windows XP для сжатых папок. Вы должны попробовать. Ваш сценарий не будет иметь каких-либо сторонних зависимостей, и сценарии логики файловой системы довольно просты.

Сжатые папки в WSH

Понимание класса CompressedFolder

Реализация класса CompressedFolder

Суть в том, что zip-файлы можно открывать как сжатые папки, используя метод пространства имен объекта Shell. По сути, это то же самое, что исследовать их как каталог с Windows Explorer.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .