28. april 2004 - 21:55Der er
17 kommentarer og 1 løsning
Kør program fra bat fil.
Jeg vil lige høre om det er muligt at køre et program fra en bat fil, og mens det program kører, så fortsætter bat filen med også at køre i "baggrunden". Vis ja, hvordan ?
Hm? Du kan smide adskillige kommandolinier ind i en Batch-fil, som eksekverer dem i kronologisk rækkefølge. Prøv at se hvordan autoexec.bat er spækket under Windows 2.0 og frem til Windows 3.11.
DOS arbejder sekventielt (single tasking, modsat Windows der er multi tasking). Dvs. det ikke som udgangspunkt kan lade sig gøre.
Der findes dog 3. parts programmer der ligger ovenpå DOS hvormed det kan lade sig gøre (mener bl.a. dosshell giver mulighed for det - som vist nok er standard i nyere MS-DOS).
En anden mulighed er at programmet er et TSR (Terminate Stay Resident) program, så vil det kunne lade sig gøre, men det kræver at programmet er lavet til at være en TSR.
Hvis vi taler om DOS som styresystem, så mener jeg bestemt ikke, at der er nogen 3.parts programmer, der ligger ovenpå.
Som soreno siger, så afvikles DOS sekventielt, og er ikke hændelsesstyret:
- Udfør første kommandolinie med alle dens kommandoer - Tag den næste kommandolinie, når den første er udført - Fortsæt, til der ikke er flere tilbage
Man kan dog tjekke for forskellige forhold og springe til et nyt punkt, hvis de forhold ikke opfylder visse betingelser. Og man kan eksekvere div. kommandoer i subrutiner. Men at sætte en BAT-fil til at eksekvere en given kommando, mens afviklingen af de efterfølgende kommandolinier bliver udført, er jeg ret sikker på ikke kan lade sig gøre, når alle kommandoer bliver eksekveret sekventielt. Også TSR. TSR betyder, at de skal tage plads i hukommelsen.
Hvis du kunne forklare hvad det er, og hvorfor, så ville det være lidt nemmere at svare på :o)
Kommandolinie 1: Udfør alle kommandoer på denne linie Kommandolinie 2: Når alle kommandoer er udført på ovenstående linie, så udfør alle kommandoer i denne linie Kommandolinie 3: Når alle kommandoer er udført på ovenstående linie, så udfør alle kommandoer i denne linie Kommandolinie 4: Når alle kommandoer er udført på ovenstående linie, så udfør alle kommandoer i denne linie
Sande/falske udsagn:
Kommandolinie 1: Hvis et givent forhold opfylder disse kriterier, så spring til punkt 1 Kommandolinie 2: Hvis ikke, så spring til punkt 2
PUNKT 1: Udfør disse kommandoer PUNKT 2: Udfør nogle andre kommandoer
Spring ned og udfør en subrutine, og vend derefter tilbage til den sekventielle afvikling:
Kommandolinie 1: Udfør nogle givne kommandoer Kommandolinie 2: Spring til subrutine, udfør kommandoerne i denne, og vend tilbage til kommandolinie 3 Kommandolinie 3: Udfør kommandoerne på denne kommandolinie
subrutine: Udfør et sæt kommandoer Afslut subrutine og vend tilbage til linien efter, der har kaldt denne subrutine
Det er "DOS" versionen der ligger i Windows 98SE, som jeg bruger. OG jeg mener at de skal køre samtidig. Men det ser det vist ud til, ikke at kunne lade sig gøre.
jo tak.. det hjalp da godt nok.. Så nu er jeg hoppet på assembler programmering.. vil prøve at lave noget der, for så kan jeg bare smide det op i grafikkortets hukommelse og så den vej igennem, få mit "ønske" opfyldt.
Her er en batfil der sletter 2 filer og starter et program, det viker perfekt i Win 2000. Batfilen skal ligge i samme mappe som filerne der skal eksekveres. Hvis den lægges f.eks. på roden skal stiangivelsen sættes i "anførselstegn"
del "deleted_emails.DAT" del "deleted_emails.IDX" start Uffes_Spam_Deleter.exe
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.