Stránka 1 z 1

Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 10:12
od atari
Mám dávku ve WIN10 64bit a potřebuji, aby se dávka B.bat spustila po ukončení A.bat:

Kód: Vybrat vše

c:\program\A.bat
c:\program\B.bat
Po vykonání příkazu A.bat se B.bat nespustí.

Poznámka: A.bat spouští dosovský program (PC fand) přes VDOS.

Když zadám:

Kód: Vybrat vše

CALL c:\program\A.bat
c:\program\B.bat
tak B. bat se také nsepustí

Když zadám:

Kód: Vybrat vše

START c:\program\A.bat
c:\program\B.bat
tak B. bat se spustí, ale ihned a nečeká na ukončení A.bat

Ja vyřešit aby se B.bat spustil po ukončení A.bat.?

(Podle mě problém dělá VDOS, protože v něm se DOS příkazy chovají nekorektně.)

Dodatečně přidáno po 58 vteřinách:
Ve WIN7 32bit to fungovalo bez problémů. Ovšem A.bat se spouštěl normálně (nebyl použit VDOS)

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 10:55
od zeus
Je nejaky problem ty davky sloucit?
Jinak start /wait , ale to musis vyzkouset.

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 11:00
od atari
Je to problém sloučit.
Některé příkazy, když běží ten VDOS nefungují korektně. Například "timeout" nefunguje vůbec.

Příkaz wait problém neřeší, protože dávka "A.bat" někdy běží 5 minut a někdy 5 hodin, takže to nelze předem nastavit.

Dodatečně přidáno po 1 hodině 16 minutách 34 vteřinách:
Tak jsem to zkusil přes vbs skript a také to nefunguje. Dávka "B.bat "se spustí dříve, než je dokončena "A.bat".

Má někdo nápad, jak to řešit?

Kód: Vybrat vše

Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "C:\program\A.bat", 0, TRUE
    WshShell.Run "C:\program\B.bat"
Set WshShell = Nothing

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 12:29
od zeus
Vsak u /wait nezadavas zadny cas

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 12:58
od Uziv00
Nemůže to fungovat, protože uvažuješ špatně.
A.bat něco spustí, ukončí se, vrátí nulu a tudíž se může spustit B.bat.
Ty ale nepotřebuješ návaznost na A.bat, ale na pcfand, či nějaký jiný program.

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 15:17
od atari
Teď u toho PC nejsem, ale v dávce A.bat jsou všechny procedury volány také příkazem CALL.
Zítra se na to podívám.

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 15:49
od Uziv00
To asi ano, když to na W7 fungovalo. Jenže když to ve vbs nefunguje a spustí to hned B.bat, pak A.bat musí vrátit návrat dříve, než dokončí všechny CALL.
Jedna z možností je nechat všechno "ošetřit" vbs. Tedy A.bat a B.bat přestanou existovat.¨Ovšem netuším, jak by tohle mohlo fungovat ve virtual dosu.
Jako ideální bych viděl kompletní virtuální stroj, ať už s MS-DOS, nebo s nějakou verzí woken, kde fand chodil. A na této virtuální mašině by ty baty chodily určitě.

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 17:27
od atari
Ve VBS to ošetřit neumím.

Mě překvapuje to, že když v A.bat je vše voláno přes CALL, tak se ukončí dříve než volaná procedura FAND.
Teď mě napadá, v bat po nějakých intervalech (3s) zjišťovat zda ještě běží proces FAND a tím to ošetřit. Není to moc elegantní řešení, ale mělo by fungovat.

Virtualizaci se chci vyhnout.

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 19:01
od Uziv00
Jestli ten fand spouštíš jedním batem v VDOS, tak to je právě ono. Protože v těch sedmách šel fand určitě normálně ze systému.
Správně je spustit virtuální stroj, v něm autoexec.bat, který spustí fand a po skončení zavolá B.bat. Dost dobře si nedokážu představit to přehazování batu mezi emulátorem a systémem.

Re: Nefunguje bat pri spuštení VDOS

Napsal: 10 srp 2021 22:08
od atari
Je to přesně tak. Ve WIN 7 32bit, se PC FAND spouštěl normálně.

V těch WIN 10 64bit to je právě přes ten VDOS. Ještě kouknu na ty dávky jak si to mezi sebou odkazujou.