Cmd- polecenia wykonują się częściowo

0

Witam. Tworzę możliwość aktualizacji do mojego programu, i wszystko by działało gdyby nie jedna rzecz. Otóż po pobraniu nowej wersji programu do folderu tymczasowego, program powinien uruchomić plik bat, który usunie starą wersję i przekopiuje nową wersję programu. Program jest napisany w Delphi a skrypt bat uruchamiam tak:
ShellExecute(Handle, 'open',pchar(ExtractFilePath(Application.ExeName) + '\skrypt.bat'), nil, nil, SW_HIDE);

zawartość pliku bat:

@echo off  
taskkill /f /im program.exe /t
del program.exe
move temp\program.exe program.exe
rmdir temp
START program.exe
exit

Wszystko działa dobrze jeżeli uruchomię program.exe bez instrukcji ShellExecute, a skrypt uruchomię ręcznie. Jeżeli natomiast program.exe uruchomi skrypt to ten zdoła tylko wykonać polecenie taskkill następnie się zamyka.
Macie jakiś pomysł dlaczego tak się dzieje? Bo ja już nie mam. Ostatnio w cmd siedziałem rok temu i moja wiedza trochę się uszczupliła. Bardzo proszę o pomoc.

0

Sorry, że po angielsku, ale mam takiego Windowsa. Opis przełącznika /T polecenia taskkill:

    /T                     Terminates the specified process and any
                           child processes which were started by it.

...czyli ten przełącznik wyłączy program.exe oraz wszystkie jego procesy potomne, w tym wykonujący się skrypt (pod wodzą cmd.exe).

0

A no faktycznie. Nie pomyślałem o tym. Dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1