Gå til innhold

Variable scope of IF setning i batch script


Anbefalte innlegg

Kan noen hjelpe meg her? Jeg skjønner ikke hvorfor ikke tmp variabelen min ikke blir satt til 0 inne i IF løkka.

 

Her er scriptet:

@echo off

Setlocal

SET _test=false

SET _tmp=0

echo Before - outside condition %_tmp%

SET _tmp=1

echo After - outside condition %_tmp%

IF NOT %_test% == true (

echo Before - inside condition %_tmp%

SET _tmp=0

echo After - inside condition %_tmp%

)

Endlocal

 

Her er resultatet:

Before - outside condition 0

After - outside condition 1

Before - inside condition 1

After - inside condition 1

 

Hvorfor i all verden blir ikke tmp satt til 0, slik:

After - inside condition 0

Lenke til kommentar
Videoannonse
Annonse
Merkelig det der. Får det samme her.

 

Hvis reglene er som du foreslår, så gjør det jo det temmelig tungvindt å programmere - motsatte regler enn for andre programmeringsspråk.

 

Lær deg heller VBS - det er mye mer fleksibelt enn bat.

 

Ja, det blir definitivt noe slikt neste gang, men nå må jeg bare få ferdig et skript den uka her.

Vanligvis gjør jeg skripting i perl, som er mye mer behagelig, men på Windoze må det bli bæsj skript.

 

Jeg omgikk problemet noe. Slik:

 

@echo off

 

Setlocal

 

SET _test=false

SET _tmp=0

echo Before - outside condition %_tmp%

SET _tmp=1

echo After - outside condition %_tmp%

 

IF %_test%==false SET /A _tmp=%_tmp%+1

IF %_tmp% EQU 2 echo "Ja, dette går"

echo After - condition %_tmp%

echo After - end %_tmp%

 

Endlocal

 

Altså kuttet ut parenteser. Helt håpløst, men det funker i alle fall.

Lenke til kommentar
Ikke for å havne helt off topic... Men det er ingen problemer å bruke perl til å scripte dos/windows...

 

-C-

Regner med at det kan være problematisk hvis han skal bruke det på en maskin hvor brukeren er begrenset - og følgelig ikke kan installere perl runtime eller hva det nå heter.

 

Neida, det er ingen problemer med å bruke perl under windows. Vanligvis gjør jeg dette med "pp" verktøyet som følger med PAR-Packer modulen tilgjengelig fra CPAN. Den lager en .exe fil av perl-skriptet for meg. Det må gjøres sånn, for perl skal ikke installeres i prod.

 

Men i denne omgang må jeg kunne endre og deploye skriptet hurtig, og da har jeg ikke anledning til å kompilere og teste den eksekverbare filen ved hver endring.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...