[Batch] Denkfout bij errorcheck?

Pagina: 1
Acties:

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Ik veronderstel dat Batch hier thuishoort, laat iets weten zoniet.

Mijn script dat de NAT translation doet is in de smaak gevallen bij de netwerkers en ik ben nu gewoon nog wat errorchecks aan het invoeren. Het is een lang script dus ik zal enkel de relevante fragmenten posten (met dummy waardes).

Eerst wordt een extern IP adres gevraagd aan de gebruiker. Dit wordt in 4 variabelen gedeeld (A, B, C en D):

Batchfile:
1
2
SET /P IP1=The internal address is: 
FOR /F "tokens=1,2,3,4 delims=." %%a IN ("%IP1%") DO SET A=%%a&SET B=%%b&SET C=%%c&SET D=%%d


Vervolgens gaat het script kijken of het wel een geldig IP adres is, laat ons dit de procedure SYNTAXCHECK noemen:

Batchfile:
1
2
3
4
5
6
7
8
IF '%A%' GTR '255' GOTO :ERROR1
IF '%A%' LEQ '0' GOTO :ERROR1
IF '%B%' GTR '255' GOTO :ERROR1
IF '%B%' LSS '0' GOTO :ERROR1
IF '%C%' GTR '255' GOTO :ERROR1
IF '%C%' LSS '0' GOTO :ERROR1
IF '%D%' GTR '255' GOTO :ERROR1
IF '%D%' LSS '0' GOTO :ERROR1


En dan wordt het adres, indien er geen error was, door een hele lijst met omzettingen gegooid, afhankelijk of het /8 /16 of /24 is. Indien het adres niet interne adres niet gekend is wordt de gebruiker naar een andere error (ERROR2) gestuurd dan de vorige error (ERROR1):

Batchfile:
1
2
3
4
5
IF '%A%.%B%.%C%'=='130.1.1' SET WXY=10.1.0&&GOTO :RESULT1
IF '%A%.%B%.%C%'=='130.1.2' SET WXY=10.2.1&&GOTO :RESULT1
IF '%A%.%B%.%C%'=='130.1.3' SET WXY=10.3.2&&GOTO :RESULT1
IF '%A%.%B%.%C%'=='130.1.4' SET WXY=10.4.3&&GOTO :RESULT1
GOTO :ERROR2


(De statische manier van werken was onvermijdelijk aangezien er geen enkele consequente logica in de echte gevens zit)

Mijn probleem: een aantal adressen geven een error wanneer er geen is. Ingave van 172.28.137.100 geeft een ERROR1 (Erroneous IP address), dus ik weet zeker dat het geen probleem is om de waarde te vinden in de lijst want dan zou ik ERROR2 (Unknown range) krijgen. Het adres 170.20.1.100 wordt dan weer wél goed omgezet. Ik heb verschillende adressen met dit probleem en zie er geen logica in wanneer het probleem zich stelt of niet. Kortom: ik snap niet waar bepaalde adressen blijkbaar falen op de SYNTAXCHECK-procedure. Om te debuggen heb ik de geregistreerde waarde laten ECHOen bij ERROR1 en ik krijg waardes terug die perfect aan de SYNTAXCHECK lijken te voldoen.

Afbeeldingslocatie: http://tweakers.net/ext/f/qxilywK6EM4vnClZSxdNATCc/full.png

Volledigheidshalve: op het einde van een zoekopdracht worden alle variabelen netjes geleegd. Als iemand weet wat mijn fout is: ik hoor het graag.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
YellowOnline schreef op woensdag 14 april 2010 @ 21:55:
Ik veronderstel dat Batch hier thuishoort, laat iets weten zoniet.
Zo zijn we niet getrouwd. Daar hebben we gewoon duidelijke FAQ's voor: Waar hoort mijn topic?
PRG >> WOS

[ Voor 6% gewijzigd door RobIII op 14-04-2010 22:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
RobIII schreef op woensdag 14 april 2010 @ 22:16:
[...]

Zo zijn we niet getrouwd. Daar hebben we gewoon duidelijke FAQ's voor: Waar hoort mijn topic?
PRG >> WOS
Ow. Ik had dat nochtans gelezen, maar de "VBScript- en Batch-vragen horen ook in WOS." had ik blijkbaar over gekeken. Sorry :|

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 25-11 12:07

leuk_he

1. Controleer de kabel!

de string 28 is greater than 255....


;)

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
leuk_he schreef op woensdag 14 april 2010 @ 22:29:
de string 28 is greater than 255....


;)
* YellowOnline kruipt ergens in een ver hoekje

(Dankjewel, dat was het inderdaad :X)