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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   BAT Архивация 7zip c именем архивируемого файла (http://forum.oszone.net/showthread.php?t=311492)

mych_man 12-02-2016 12:14 2605332

BAT Архивация 7zip c именем архивируемого файла
 
Добрый день!
Такая задачка, в папке D:\1 периодически появляются файлы вида test.zip и test.zip.sig (всегда два файла), требуется архивировать их в zip одним архивом, присваивать архиву имя файла test.zip и перемещать получившейся архив в папку D:\2
Есть скрипт, который умеет присваивать архиву имя архивируемого файла, но архивирует он их по одному и делает два архива.
Прошу помощи в указании команды архивирования двух файлов в один архив с именем файла *.zip
Заранее благодарю.

set _in= ED:\1\
set _out=D:\2\
set _arcpath=C:\Program Files\7-Zip
for %%i in (%_in%\*.*) do "%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i"

Elven 12-02-2016 12:35 2605340

!ВНИМАНИЕ! у меня 7z не установлен и команды его я знаю чуть лучше чем никак, посему это все не тестировалось и лучше протестить на левых файлах. Ну, и, возможно, это все делается еще проще, просто я не в курсе.
Код:

set _in= ED:\1\
set _out=D:\2\
set _arcpath=C:\Program Files\7-Zip
for %%i in (%_in%\*.*) do (
"%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i"
"%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i.sig"
)


mych_man 12-02-2016 12:43 2605344

Не сразу увидел ошибку у себя, подправил пути, при отработке скрипта есть сообщение о непредвиденном появлении %%i

set _in= D:\1
set _out=D:\2
set _arcpath=C:\Program Files (x86)\7-Zip
for %%i in (%_in%\*.*) do ("%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i" "%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i.sig"

Elven 12-02-2016 12:49 2605351

скобки не хватает в самом конце и если записывать это вот так вот ванлайном то понадобится &
Код:

set _in= D:\1
set _out=D:\2
set _arcpath=C:\Program Files (x86)\7-Zip
for %%i in (%_in%\*.*) do ("%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i" & "%_arcpath%\7z" a -tzip "%_out%\%%~ni.zip" "%%i.sig")


mych_man 12-02-2016 13:04 2605360

Да, получилось, правда он создает второй архив куда кладёт sig, но это не страшно, я дописал делит на второй архив, тем самым получаю единый архив с двумя файлами!
Спасибо!

Foreigner 12-02-2016 13:28 2605374

Так тоже работает:
Код:

@echo off
setlocal

set "path=%path%;C:\Program Files\7-zip"

set "in=D:\1"
set "out=D:\2"

pushd "%in%"
for %%i in (*.zip) do 7z a "%out%\%%i" "%%~ni.zip*"
popd



Время: 14:14.

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