Cmd- polecenia wykonują się częściowo

Odpowiedz Nowy wątek
2011-08-15 09:43
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.

edytowany 4x, ostatnio: mr_jaro, 2011-08-15 09:48

Pozostało 580 znaków

2011-08-15 10:47

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).


Not Found
The requested URL /wypasiona_sygnaturka.txt was not found in this brain.
-----
Human/1.0.00 (Earth) Server at Poland Port 65535

Pozostało 580 znaków

2011-08-15 11:37
0

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

edytowany 1x, ostatnio: mr_jaro, 2011-08-15 11:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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