Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Распаковка, обработка файла, запаковка и сортировка (http://forum.oszone.net/showthread.php?t=234206)

SkyAn 07-05-2012 17:05 1912016

Распаковка, обработка файла, запаковка и сортировка
 
Возникла такая потребность.
Есть пачка архивов в .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 08-05-2012 13:10 1912449

начал разбирать, половину сделал.
Главные проблемы, это преобразование с wmf в pdf и добавление текста в pdf.
Ну и никак не могу получить часть имени архива для названия файлов. То есть, с имени aa#asa#asdasd.zip мне нужно получить asdasd . Длина этого куска не одинаковая.
И еще, как затормозить выполнения скрипта, например пока не выполнится раз архивация?

avolkov2009 08-05-2012 14:44 1912505

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

@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").

Удачи ;-)


Время: 23:10.

Время: 23:10.
© OSzone.net 2001-