PowerShell - Распаковка, обработка файла, запаковка и сортировка

Ответить
Аватара пользователя
SkyAn

PowerShell - Распаковка, обработка файла, запаковка и сортировка

Сообщение SkyAn »

Возникла такая потребность.

Есть пачка архивов в .zip, в каждом архиве есть файлы pdf и wmf. Нужно разархивировать, в pdf вставить текст, wmf конвертировать в pdf и добавить текст, в остальных сделать частичную замену имени файла. После за архивировать и разбросать по папкам.

Я понимаю, что задача не простая. С разбросом по папкам я разобрался, уже написал.

Как понимаю разархивировать будет трудно.

Ну а для манипуляций с файлами понадобится сторонняя программа.



Вот пример того что есть.

архив -

aa#asa#asdasd.zip

в нем -

name-12345.pdf --> добавить текст

name-12345.wmf --> конвертировать в pdf и добавить текст

file-alfa.pdf --> переименовать в name-12345-alfa.pdf

file-beta.pdf --> переименовать в name-12345-beta.pdf

А потом за архивировать в aa#asa#asdasd.zip предварительно убив старый.

Дальше переложить в папку aa/asa.



подскажите как это реализовать кодом, потому что файлов много.
Аватара пользователя
SkyAn

Re: PowerShell - Распаковка, обработка файла, запаковка и сортировка

Сообщение SkyAn »

начал разбирать, половину сделал.

Главные проблемы, это преобразование с wmf в pdf и добавление текста в pdf.

Ну и никак не могу получить часть имени архива для названия файлов. То есть, с имени aa#asa#asdasd.zip мне нужно получить asdasd . Длина этого куска не одинаковая.

И еще, как затормозить выполнения скрипта, например пока не выполнится раз архивация?
Аватара пользователя
avolkov2009

Re: PowerShell - Распаковка, обработка файла, запаковка и сортировка

Сообщение avolkov2009 »

Насчет получения имени без расширения, гляньте пример:



Код:

Код: Выделить всё

@echo off
setlocal
set $FULLNAME=c:\windows\command\format.com
set $SHORTNAME=
call :getname %$FULLNAME%
echo Full name is "%$FULLNAME%"
echo Short name is "%$SHORTNAME%"
endlocal
exit /b
:getname
set $SHORTNAME=%~n1
exit /b

Подробнее про модификаторы я читал
здесь




По поводу подождать, пока отработает архиватор. Вы скорее всего пользуетесь т.н. "гуёвой" версией архиватора, скорее всего, WinRar.exe. Перейдите на использование чего-нибудь консольного (z7a.exe, arj32.exe, rar.exe...). Если не хотите - запускайте процесс архивирования командой

Код:

Код: Выделить всё

START /WAIT {Команда}

(Подробнее - "HELP START").



Удачи ;-)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»