User Käyttäjä Salasana  
   
lauantai 15.11.2025 / 05:40
Hae keskustelualueilta:        In English   Suomeksi   På svenska
afterdawn.com > keskustelu > yleistä keskustelua tietokoneista > windows -ongelmat > 1.bat call 2.bat - 2.bat palauttaa väärän errorlevelin
Näytä aiheet
 
Keskustelualueet
Keskustelualueet
1.bat call 2.bat - 2.bat palauttaa väärän errorlevelin
  Siirry:
 
Kirjoittaja Viesti
AfterDawn Addict

5 tuotearviota
_
29. maaliskuuta 2007 @ 07:51 _ Linkki tähän viestiin    Lähetä käyttäjälle yksityisviesti   
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? :)


L00P
Member

1 tuotearvio
_
29. maaliskuuta 2007 @ 08:05 _ Linkki tähän viestiin    Lähetä käyttäjälle yksityisviesti   
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.
AfterDawn Addict

5 tuotearviota
_
29. maaliskuuta 2007 @ 08:13 _ Linkki tähän viestiin    Lähetä käyttäjälle yksityisviesti   
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.


Viestiä on muokattu lähettämisen jälkeen. Viimeisin muokkaus 29. maaliskuuta 2007 @ 08:23

L00P
Member

1 tuotearvio
_
29. maaliskuuta 2007 @ 08:47 _ Linkki tähän viestiin    Lähetä käyttäjälle yksityisviesti   
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 ;)

Viestiä on muokattu lähettämisen jälkeen. Viimeisin muokkaus 29. maaliskuuta 2007 @ 08:57

AfterDawn Addict

5 tuotearviota
_
29. maaliskuuta 2007 @ 08:58 _ Linkki tähän viestiin    Lähetä käyttäjälle yksityisviesti   
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!


Viestiä on muokattu lähettämisen jälkeen. Viimeisin muokkaus 29. maaliskuuta 2007 @ 09:06

Mainos
_
__
 
_
L00P
Member

1 tuotearvio
_
29. maaliskuuta 2007 @ 09:42 _ Linkki tähän viestiin    Lähetä käyttäjälle yksityisviesti   
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

Viestiä on muokattu lähettämisen jälkeen. Viimeisin muokkaus 29. maaliskuuta 2007 @ 10:05

afterdawn.com > keskustelu > yleistä keskustelua tietokoneista > windows -ongelmat > 1.bat call 2.bat - 2.bat palauttaa väärän errorlevelin
 

Apua ongelmiin: AfterDawnin keskustelualueet | AfterDawnin Vastaukset
Uutiset: IT-alan uutiset | Uutisia puhelimista
Musiikkia: MP3Lizard.com
Tuotearviot: Laitevertailu | Vertaa puhelimia | Vertaa kännykkäliittymiä
Pelit: Pelitiedostot, pelidemot ja trailerit
Ohjelmat: download.fi | AfterDawnin ohjelma-alueet
International: AfterDawn in English | Software downloads | Free, legal MP3s | AfterDawn på svenska
RSS -syötteet: AfterDawnin uutiset | Uusimmat ohjelmapäivitykset | Keskustelualueiden viestit
Tietoja: Tietoa AfterDawn Oy:stä | Mainosta sivuillamme | Sivuston käyttöehdot ja tietoja yksityisyydensuojasta
Ota yhteyttä: Lähetä palautetta | Ota yhteyttä mainosmyyntiimme
 
  © 1999-2025 AfterDawn Oy