Próbuję utworzyć skrypt, aby wykonać exe przy zamykaniu w celu zainstalowania sp1. mój skrypt działa mniej więcej tak (nie rzeczywisty skrypt nietoperzy).
If installed GOTO END
Install.exe
END:
Mój problem polega na tym, że po uruchomieniu uruchamia instalator, a następnie kończy skrypt, ponieważ instalator ma inny proces, a następnie zamyka proces instalacji, ponieważ komputer wyłącza się i system (przynajmniej tak myślę robi.)
Czy jest jakiś sposób, aby kazać mu czekać, aż proces, który rozpoczął, zostanie zakończony, a następnie zostać zamknięty?
windows
batch-file
executable
Kravlin
źródło
źródło
like start /wait install; exit
?cmd /C start /wait install
Jedna krótsza droga:
Również
może być użyty, chociaż z większą ilością ostatecznie będziesz w stanie złapać trochę danych wyjściowych konsoli. I to jest powód, dla którego działa - komenda potokowa czeka na dane wejściowe, aż do zakończenia pliku .exe
źródło
<
,>
,>>
,&
,&&
,||
,|
)Wywołanie exe bezpośrednio z pliku wsadowego lub użycie
start /wait
będzie działać, ale jest zastrzeżenie.Jeśli wywoływany plik exe tworzy następnie inny proces, na przykład wywołuje inny plik exe, a następnie wychodzi, plik wsadowy będzie kontynuował przetwarzanie po zakończeniu wywoływanego pliku exe, ponieważ nie ma wiedzy o innych procesach przez niego uruchomionych.
W twoim przypadku jest to prawdziwy problem, ponieważ instalatory zwykle rozpakowują pliki z jakiejś formy skompresowanego kontenera, który może być osadzony w samym pliku exe, a następnie odpalają jeden z wyodrębnionych plików i wychodzą. Niektórzy instalatorzy zapewniają parametry wiersza polecenia, które mówią oryginalnemu exe, aby nie wychodził, dopóki cała instalacja nie zostanie zakończona, więc warto to sprawdzić. Poza tym nie ma realnego rozwiązania tego problemu z samymi plikami wsadowymi i wymagałoby rozwiązania programowego.
źródło
msiexec
często odpala również inne procesy. :(start /wait
? Sam uważałem, że trzeba go użyćstart /wait
do zablokowania pliku wsadowego, dopóki GUI (w przeciwieństwie do konsoli) nie zakończy działania. Ale testując to teraz, widzę, że pliki wsadowe faktycznie czekają nawet na aplikacje GUI. Zadałem odpowiednie pytanie: Dlaczego aplikacja GUI blokuje plik wsadowy?Oto przykład użycia MATLAB! Zakładam, że konfiguracja ścieżki dla MATLAB jest zakończona, a wyjście MATLAB jest zapewnione przez plik FileName.m (lub użytkownik określił to wewnętrznie).
źródło
Miałem problem @John Gardeniers Miałem lub opisałem, gdzie mój exe zadzwonił do innego exe i zakończył pracę, dlatego start / wait nie zadziałało. Utworzyłem „pętlę while”, aby sprawdzić, czy działa, a następnie po zakończeniu. Czasy można dostosować do własnych potrzeb.
źródło
Możesz użyć polecenia start / wait. To uruchamia aplikację i czeka na jej zakończenie.
Lub jeśli wiesz, ile czasu zajmuje wykonanie, możesz rzucić okiem na komendę uśpienia, dostarczoną przez narzędzia Windows Server 2003 Resource Kit Tools . Sleep.exe może być użyty do wstrzymania wsadu na dowolną liczbę sekund, aby umożliwić programowi pełną instalację, zanim plik wsadowy przystąpi do zainstalowania czegokolwiek innego. Istnieje kilka programów, które ignorują składnię „start / wait”, ponieważ sam program uruchamia inny proces, wtedy program sleep.exe jest bardzo przydatny.
źródło