Компьютерный форум 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=310598)

interminable 20-01-2016 14:22 2597277

Инсталляция программы
 
Есть папка с 3-мя файлами
1.exe
2.cfg
3.txt

Нужен bat файл, который запустит 1.ехе проинсталлирует программу, затем скопирует в созданную после инсталляции директорию файлы 2 и 3.

alpap 20-01-2016 20:06 2597430

Если "1.exe" инсталлируется самостоятельно, без вмешательства (и процесс завершается) и известен путь и папка, которую он создает, можно так:
Код:

@echo on
set "in=papka_in"
set "out=papka_out"
set "p=1.exe"
start "" "%in%\1.exe"
cmd /c for /l %%i in () do for /f delims^^=^^" %%j in ('tasklist /fi "imagename eq %p%" /fo csv /nh') do if not "%%j"=="%p%" (if exist "%out%" (copy /y "%in%\2.cfg" "%out%" & copy /y "%in%\3.txt" "%out%")) & exit

.

alpap 20-01-2016 20:32 2597433

Или так, при тех же условиях выше:
Код:

@echo on
set "in=papka_in"
set "out=papka_out"
start /b /wait "" "%in%\1.exe"
if exist "%out%" (copy /y "%in%\2.cfg" "%out%" & copy /y "%in%\3.txt" "%out%")
exit

.

Iska 20-01-2016 21:23 2597447

Цитата:

Цитата alpap
Или так, »

Не «или» а только так. Со «start» и без «/wait» не будет никакого «после инсталляции», а именно что «сразу».

alpap 21-01-2016 09:47 2597590

Цитата:

Цитата alpap
for /l %%i in () do »

с этим будет, тем более я проверял перед тем как выложить.
Да, инсталляция пройдет, папка будет создана и как только процесс пропадет, скопируются файлы (с заменой, если такие будут), чем по ТЗ не так.

gora 21-01-2016 12:37 2597669

Цитата:

Цитата Iska
Не «или» а только так. »

Полностью согласен, но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана.

alpap 21-01-2016 17:36 2597791

Цитата:

Цитата gora
не решает проблему на 100% »

, можно еще кучу подводных камней найти, просто проводить инсталляцию как минимум с помощью cmd - по-моему перебор (и софта хватает по этой части вплоть до полного автомата)

Iska 21-01-2016 23:34 2597910

Цитата:

Цитата gora
но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана. »

Именно так :).


Время: 12:13.

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