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. EDIT: Harvinaisen selväjärkinen/lukuinen selostus
Näin itse asiassa onkin Edit: ei, minulla olikin eri tavalla, kokeilen tuolla tavalla mitä vinkiksi annoit Edit2: Ei toimi, muuttujaan tulee se komento 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% c:\temp\2.bat @ECHO OFF echo taalla 2.bat:ssa ajettaessa 1.bat tulostaa ruudulle: taalla 2.bat:ssa Onko sulla varmasti komennon polku oikein? esim. set variable=call c:\temp\grep.... vai oletko laittanut grep:n polun path:iin? EDIT: tosta aiemmasta tosiaan unohtu tuo call tajusin vasta nyt EDIT2: Ei sitä call-käskyä ainakaan tuossa tarvitse edes käyttää toimii: set myvar=c:\temp\2.bat