Есть папка с 3-мя файлами
1.exe
2.cfg
3.txt
Нужен bat файл, который запустит 1.ехе проинсталлирует программу, затем скопирует в созданную после инсталляции директорию файлы 2 и 3.
CMD/BAT - [решено] Инсталляция программы
-
alpap
Re: CMD/BAT - [решено] Инсталляция программы
Если "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
Re: CMD/BAT - [решено] Инсталляция программы
Или так, при тех же условиях выше:
Код:
.
Код:
Код: Выделить всё
@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
Re: CMD/BAT - [решено] Инсталляция программы
Цитата alpap:
Или так,
Не «или» а только так. Со «start» и без «/wait» не будет никакого «после инсталляции», а именно что «сразу».
Или так,
CMD/BAT - [решено] Инсталляция программы
Не «или» а только так. Со «start» и без «/wait» не будет никакого «после инсталляции», а именно что «сразу».
-
alpap
Re: CMD/BAT - [решено] Инсталляция программы
Цитата alpap:
for /l %%i in () do
с этим будет, тем более я проверял перед тем как выложить.
Да, инсталляция пройдет, папка будет создана и как только процесс пропадет, скопируются файлы (с заменой, если такие будут), чем по ТЗ не так.
for /l %%i in () do
CMD/BAT - [решено] Инсталляция программы
с этим будет, тем более я проверял перед тем как выложить.
Да, инсталляция пройдет, папка будет создана и как только процесс пропадет, скопируются файлы (с заменой, если такие будут), чем по ТЗ не так.
-
gora
Re: CMD/BAT - [решено] Инсталляция программы
Цитата Iska:
Не «или» а только так.
Полностью согласен, но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана.
Не «или» а только так.
CMD/BAT - [решено] Инсталляция программы
Полностью согласен, но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана.
-
alpap
Re: CMD/BAT - [решено] Инсталляция программы
Цитата gora:
не решает проблему на 100%
, можно еще кучу подводных камней найти, просто проводить инсталляцию как минимум с помощью cmd - по-моему перебор (и софта хватает по этой части вплоть до полного автомата)
не решает проблему на 100%
CMD/BAT - [решено] Инсталляция программы
, можно еще кучу подводных камней найти, просто проводить инсталляцию как минимум с помощью cmd - по-моему перебор (и софта хватает по этой части вплоть до полного автомата)
-
Iska
Re: CMD/BAT - [решено] Инсталляция программы
Цитата gora:
но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана.
Именно так
.
но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана.
CMD/BAT - [решено] Инсталляция программы
Именно так
.