Как заменить родительский пакетный файл? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть applicationStart.bat файл, который вызывает это update.bat , и мне нужен update.bat для замены applicationStart.bat новым.

Код applicationStart.bat выглядит примерно так:

@echo off

call update.bat

java -Xms128m -Xmx256m com.foo.bar

А код update.bat имеет вид:

@echo off

..\JRE\bin\jar.exe -xvf .\updateFile.jar

Я уже пытался поместить applicationStart.bat внутри de updateFile.jar, и на некоторых машинах он заменяется без ошибок, но на других машинах он генерирует ошибку и прерывает извлечение.

applicationStart.bat просто используется до конца дня, когда используется приложение, и в некоторых случаях пользователь может выключить компьютер из приложения, что усложняет задачу, поскольку я не могу создать другой процессдождаться завершения приложения и впоследствии заменить applicationStart.bat.

Как я могу получить этот applicationStart.bat для замены?

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Мне только что удалось это сделать без редактирования applicationStart.bat!

Для этого я создал третью партию с именем batkill.bat :

@echo off

if exist temp\applicationStart.bat (
    title batkill
    taskkill /IM cmd.exe /FI "WINDOWTITLE ne batkill" /F
    taskkill /IM ping.exe /F
    move /Y temp\applicationStart.bat .
    start applicationStart.bat
    exit
)

И я только что откорректировал update.bat до:

@echo off

rem Still need to do this to keep the other updates the application needs, 
rem without the applicationStart.bat inside
..\JRE\bin\jar.exe -xvf .\updateFile.jar

if exist temp\applicationStart.bat (
    start batkill.bat
    rem Waiting 10 seconds while the batkill comes to kills me
    ping 127.0.0.1 -n 10 -w 1000 >nul
)

Таким образом, applicationStart.bat остается неизменным во время выполнения, и мне нужно изменить только update.bat (который легко изменить и развернуть)

0 голосов
/ 27 мая 2019

Applicationstart.bat:

@echo off
if "%~1"=="::" goto mainline
update.bat

:mainline
java -Xms128m -Xmx256m com.foo.bar

update.bat

@echo off
..\JRE\bin\jar.exe -xvf .\updateFile.jar
applicationstart.bat ::

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

Другой подход к Applicationstart.bat:

@echo off
%1 update.bat

java -Xms128m -Xmx256m com.foo.bar

В этой версии applicationstart.bat заменит ничего на %1, следовательно, выполнит update, но при замене и повторном вызове :: (или rem) будет заменено на %1 и, следовательно, без пробега

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...