Kan inget om detta och har inte tänkt sätta mig in i det. Men hur gör man en batfil så att när man kör den så ska den köra ett kommando i kommandotolken, alltså jag har ett program (edns.exe) och så vill jag köra ett kommando som är i stil med:
Förstår inte riktigt hur du menar. Om du bara vill köra ett "hårdkodat" kommando i en bat-fil så skriver du bara in det rakt upp och ner ungefär som du gör i ditt citat. Om du menar att du vill kunna ha olika inparametrar så kan du skriva tex:
Följer upp din tråd lite Qimen (hoppas det inte gör något ;))
net start mysql
net start apache
D:\Program\MySQL\bin\winmysqladmin.exe
Ovanstående kod startar 2 tjänster och ett program, men jag vill att när koden har exekverats så ska bat-filen stängas ner. Det gör den inte. Det verkar som om ingen kod efter programstarten körs.
Fråga 2. Jag har även en liknande fil för att stänga ner tjänsterna. Kan man stänga ner ett program också? typ
end D:\Program\MySQL\bin\winmysqladmin.exe
eller går inte det att göra?
Men finns det inget smidigt sätt att döda en process på?
För att döda en godtycklig process (en NT-service är ett specialfall) så måste du ha processid:et, eller ett tråd:id, eller ett fönsterhandtag. Sen måste du ha tillgång till funktioner som SendMessage och/eller TerminateProcess och detta är inget som går att komma åt ifrån de "inbyggda" DOS-kommandona som är oerhört begränsade. Däremot kan du naturligtvis leta upp eller skriva externa program som gör jobbet och anropa dessa från en bat-fil. Så, som sagt, nåt smidigt generellt sätt finns nog inte.
(Vad du skulle kunna göra är att anropa TerminateProcess via rundll.exe i en bat-fil och skicka in processid:et som du läser av i taskmanagern, men det är ju så mycket jobb så att det antagligen är lättare att trycka på krysset direkt?)