Pamiętam, że kiedyś brałem udział w wątku, w którym poruszany był dokładnie ten sam problem - program miał uruchomić cmd
z parametrem, ale nijak to nie chciało działać; Szukałem tego wątku, ale niestety nie znalazłem; Przewaliłem swoje wszystkie posty i wątek gdzieś przepadł, ale nie pamiętam czy ja sam o to pytałem, czy ktoś inny, a ja tylko podpowiadałem;
W każdym razie na to wychodzi, że cmd.exe
nie pozwala uruchomić się z parametrem (testowane na WinXP) - tnz. uruchomi się, ale nie weźmie pod uwagę dodatkowych parametrów i nic więcej nie zrobi;
Sprawdziłem u siebie i z polecenia Uruchom
wpisuję:
cmd.exe "C:\Windows\System32\notepad.exe"
i otwiera się jedynie okno konsoli; Ale jeśli otworzę sobie wiersz poleceń i wpiszę:
C:\Windows\System32\notepad.exe
to notatnik się otwiera bez problemu; Dlatego też sądzę, że nie można w tak prosty sposób zmusić cmd
do automatycznego otworzenia jakiegokolwiek pliku czy wykonania jakiegokolwiek polecenia (np. DIR
); Może z TDosCommand
uda się to zrobić lub za pomocą innych podobnych klas, ale nie wiem tego;
Sprawdźcie jak możecie na systemach nowszych niż WinXP czy da się uruchomić cmd
z parametrem - na pewno w tym tkwi problem;</del>
EDIT: W takim razie do parametru konsoli trzeba dopisać c/
i będzie wszystko działać - otworzy się i konsola i skrypt:
ShellExecute(Handle, 'open', 'cmd', '/c "D:\Serwer\Start.bat"', nil, SW_SHOWNORMAL);
Dokładnie to samo rozwiązanie podał wcześniej @_13th_Dragon, tyle że za pomocą WinExec
.