Avatar billede case_sensitive Nybegynder
25. juli 2005 - 22:54 Der er 14 kommentarer

Batch file scripting

Her er noget old school til alle jer fra "raider" tiden

Jeg skal lave et batch script, dette script skal pinge fx. 10.0.0.1 og får den svar, skal der være en if der fortæller den, at den skal starte nogle programmer. Det er selve if'en jeg har prob. med, kan i komme med et eks.?
Avatar billede bertelbrander Novice
25. juli 2005 - 23:01 #1
Du checker bare errorlevel:

@echo off
ping 10.0.0.1
if errorlevel 1 (
  echo Error
) else (
  echo Success
)
Avatar billede case_sensitive Nybegynder
25. juli 2005 - 23:10 #2
Ja, fandt selv ud af det, men smid et svar, så får du point
Avatar billede case_sensitive Nybegynder
25. juli 2005 - 23:12 #3
Men så kan du måske svare på hvordan man loader prompten i baggrunden
Avatar billede bertelbrander Novice
25. juli 2005 - 23:12 #4
Jeg samler ikke på point.
Avatar billede bertelbrander Novice
25. juli 2005 - 23:19 #5
Jeg er bange for at der ikke findes en simpel løsning på det problem :-(
Avatar billede case_sensitive Nybegynder
25. juli 2005 - 23:21 #6
Really.. pis
Avatar billede case_sensitive Nybegynder
25. juli 2005 - 23:22 #7
Hvis den så skal vises, kan man så gøre så istedet for den rent faktisk skriver ping .... svar fra... osv så viser den ikke pinger, men fx. ping failed, retrying.. ?
Avatar billede bertelbrander Novice
25. juli 2005 - 23:25 #8
Du kan tilføje:
>nul 2>&1
til ping kommandoen så bliver alt output puttet i det store hul.
Avatar billede case_sensitive Nybegynder
26. juli 2005 - 00:38 #9
Tjaa.. det lød meget smart indtil jeg fandt ud af at argumenterne kun virker, når der er forb.

Dvs. hvis der ikke er fundet et trådløst netværk, dns fejler etc. så er errorlevel stadig 0.. hvad fanden kan man så bruge det til.

Men tak for hjælpen
Avatar billede bertelbrander Novice
26. juli 2005 - 00:41 #10
Man kan sansynligvis parse output med findstr og få den til at sætte errorlevel.
Hvad skriver ping hvis der ikke er forbindelse?
Avatar billede case_sensitive Nybegynder
26. juli 2005 - 10:55 #11
Uha.. hvad er det nu den skriver, er på arb. i øjeblikket.

Mener den skriver noget med netværk ikke tilgængeligt, el. lign.

Errorlevel bliver sat når en ping fejler, men netværket er fint, dvs. det er ret smart til at lave et test script til en server.

Hvis fx. jeg laver det til at teste en ip om der er svar, og er der ikke svar kan den advare, og hvis netværket/internettet på computeren fejler, vil den stadig ikke sætte errorlevel.

At parse output bliver nok en tand kompliceret for mig.
Avatar billede bertelbrander Novice
26. juli 2005 - 12:11 #12
Man kunne starte med:
@echo off
ping 10.0.0.1 >%temp%\pingstat.txt 2>&1

if errorlevel 1 (
  echo Error
) else (
  echo Apparently success
  findstr /C:"Ping-statistikker" %temp%\pingstat.txt >nul 2>&1
  if errorlevel 1 (
      echo Net problems
  ) else (
      echo All fine
  )
)
del %temp%\pingstat.txt

Det der står mellem "" i linien med findstr formodes at stå i output fra ping hvis alt gik godt. Du kan også finde noget der står i output hvis det gik galt og så bytte det der står under if og else
Avatar billede case_sensitive Nybegynder
26. juli 2005 - 20:57 #13
Det var mærkeligt, koden virker fint, men nu ser det ud som om den rent faktisk sætter errorlevel til 1 når der intet netværk er eller fx. dns fejl...
Avatar billede case_sensitive Nybegynder
26. juli 2005 - 22:15 #14
Jepper.. det gør den.. virkelig weird.. men her er det endelige resultat :)

@echo off
echo Initiating network testing.. please wait..
ping 127.0.0.1>nul 2>&1
ping -n 1 dlink.com>nul 2>&1

if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 zyxel.com>nul 2>&1
    echo failure 1
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 belkin.com>nul 2>&1
    echo failure 2
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 discoverychannel.com>nul 2>&1
    echo failure 3
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 yahoo.com>nul 2>&1
    echo failure 4
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 amd.com>nul 2>&1
    echo failure 5
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 nbc.com>nul 2>&1
    echo failure 6
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 altavista.com>nul 2>&1
    echo failure 7
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 lycos.com>nul 2>&1
    echo failure 8
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 google.com>nul 2>&1
    echo failure 9
)
if errorlevel 1 (
        ping 127.0.0.1>nul 2>&1
    ping -n 1 cisco.com>nul 2>&1
    echo failure 10

) else (
start /b c:\programmer\"r2 studios"\hideoe\hideoe.exe
start /b c:\programmer\"msn messenger"\msnmsgr.exe
)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester