Mistähän mahtaa johtua, että bat (komentojono) joka normaalisti palauttaa oikean errorlevelin ajettaessa yksinään, palauttaa aina yhden ja saman errorlevelin (olisiko paluukoodi suomeksi? ;) riippumatta miten oikeasti kävi, kun se ajetaan call -käskyllä toisesta batista? Eikö tuo vain toimi "DOSissa" (Windows XP:n komentokehoite) vai EVO? :)
En ole aivan varma, mutta voisiko ongelma johtua call-käskyn palauttamasta arvosta. Eli Call käsky palauttaa onnistuessaan esim."1" epäonnistuessaan "0". Varsinaisesti sen toisen .bat tiedoston errorleveliä siis et toiseen tiedostoon noin saa tuotua.
Kirjoitin epäselvästi. Kyse on enemmän siitä mitä ajettava ohjelma (tässä tapauksessa grep) palauttaa 2.batin sisällä. Eli normaalisti ajatettaessa 2.bat itsenäisesti, grep palauttaa ajonsa jälkeen joko 0, 1 tai 2. Käynnistettäessä 2.bat toisesta batista on palautus aina (muistaakseni) 0, riippumatta siitä miten oikeasti kävi.
Eli tässä tapauksessa 1.batiin ei haluta edes mitään palautuskoodia, kaikki tuo käsitellään 2.batissa.
Taas mutua onpi niin kauan kun noitten kanssa leikki viimeksi eikä silloinkaan tullut kovin suuresti perehdyttyä.
Mitäs jos kokeilisi lukea sen grep:n palauttaman arvon muuttujaan ja käyttää sitten tätä muuttujassa olevaa arvoa jatkossa?
set variable=grep....
Onnistuuko tälläinen?
Ajattelin, että periaatteessa 1.bat on kokoajan ajossa ja tällöin tuo errorlevel systeemi toimii vain 1.bat:ssa, koska errorlevel on varattu 1.bat:lle.
Lainaus, alkuperäisen viestin kirjoitti L00P:Mitäs jos kokeilisi lukea sen grep:n palauttaman arvon muuttujaan ja käyttää sitten tätä muuttujassa olevaa arvoa jatkossa?
Näin itse asiassa onkin :)
Edit: ei, minulla olikin eri tavalla, kokeilen tuolla tavalla mitä vinkiksi annoit
Edit2: Ei toimi, muuttujaan tulee se komento :)
Lainaus, alkuperäisen viestin kirjoitti L00P:Ajattelin, että periaatteessa 1.bat on kokoajan ajossa ja tällöin tuo errorlevel systeemi toimii vain 1.bat:ssa, koska errorlevel on varattu 1.bat:lle.
Jos noin on, niin siinä se sitten on se syykin. Eli täytyy palata sorvin ääreen ja tehdä jotenkin eri tavalla. Kiitos avusta!
EDIT3:Eihän tämäkään kyllä todellista ongelmaa poista sehän palauttaa ainakin win 2003 server resourcekitillä olevan qgrep-komennon outputin eli lisää miettimistä vielä.
Outoa, koska peruskomennoilla tuo toimii ainakin ESIM:
c:\tepm\bat\1.bat
@ECHO OFF
set myvar=call c:\temp\2.bat
%myvar%