[BATCH/DOS] Help! Prob's met If & variables.

Pagina: 1
Acties:

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
I kben net (2uurtje's geleden begonnen) aan Batch scripting. Ik wou een simpel scriptje hebben wat checked of m'n netwerk server & 0.3 aanstaat. Dus ik heb dit gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
@echo off
set blue=dotNetwork Blue Servers - Amsterdam, the Netherlands
echo //%blue%
echo //I'm trying out BATCH scripting, hoping I can do something with it :)
echo //if you have suggestions, email me @ bond@phreaker.net
set status=on
@echo off
ping -n 1 192.168.0.1 
if %status%==on echo //Status is online.
pause

Dat status variable heb ik gemaakt om te kijken of m'n If werkte. Maar hoe verder? Als 't scriptje bijv. 192.168.0.1 pingt maakt ie dan iets aan zoals $true ofzo? bijv.
code:
1
2
if ping==true set server=aan
echo //De server is %server%

Ik weet praktisch bijna niks van Batch Scripting, maar ik heb wel veel gewerkt met mIRCscripting, wat er erg op lijkt btw. Weet iemand iets? (Ik hoef geen totale scripts hoor :P)

Verwijderd

ik denk dat je het moet zoeken in

on errorlevel

opdrachten.

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
Kan je klein voorbeeldje geven van errorlevel? Heb wat gevonden op Google, maar da's allemaal iets te ingewikkeld waardoor ik 't neit echt snap. of weet je goede site waar 't uitgelegt staat?

  • Splatter
  • Registratie: December 2000
  • Laatst online: 26-11-2021
check hier

Een iets minder nette oplossing is:
code:
1
2
PING 192.168.0.1 | FIND "TTL" >NUL
IF ERRORLEVEL 1 ECHO Error pinging server

Hier zoekt ie in het resultaat van de ping naar het woordje TTL (wat alleen in een succesvolle ping voorkomt).
Als dat niet gevonden wordt geeft "find" een errorlevel van 1.

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
Ah, dus als ik juo scriptje verander in
code:
1
2
3
PING 192.168.0.1 | FIND "TTL" >NUL
IF ERRORLEVEL 1 ECHO Error pinging server (
ELSE echo //De server staat aan!

En ik neem effe kijkje op die site :)

//edit//
Oké, ik heb effe gekloot en heb nu dit:
code:
1
2
3
4
5
6
7
8
9
10
11
@echo off
set blue=dotNetwork Blue Servers - Amsterdam, the Netherlands
echo //%blue%
echo //I'm trying out BATCH scripting, hoping I can do something with it :)
echo //Please, be patient. The check takes 10 seconds.
set status=on
@echo off
PING 192.168.0.3 | FIND "TTL" >NUL
IF ERRORLEVEL 1 ECHO //Blue Star is not online
IF ERRORLEVEL 0 ECHO //Blue Star is online
pause

't Werkt als d'r een computer aanstaat, maar als ie uit staat laat ie allebei de lines zien. Want als ik 't goed begrijp is 1 een failure, en 0 succes.

  • Splatter
  • Registratie: December 2000
  • Laatst online: 26-11-2021
Zo werkt ie bij mij.
code:
1
2
3
4
5
6
7
8
9
10
@ECHO OFF

SET blue=dotNetwork Blue Servers - Amsterdam, the Netherlands
ECHO //%blue%

PING -n 1 192.168.0.3 >NUL
IF %ERRORLEVEL% == 0 echo //Blue Star is online
IF %ERRORLEVEL% == 1 echo //Blue Star is offline

PAUSE

Ping geeft zelf ook een errorlevel, dus die FIND was eigenlijk helemaal niet nodig...

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
Ah bedankt, maar nu zit ik met ngo een probleem :D
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
echo                    SERVER CHECK
echo Welcome to 'Network Administration tools v0.2'
echo This little DOS/BATCH file checks if 192.168.0.1 is onlien or not
echo I'm still upgrading this program.
echo Like a Network booter and more.
echo =Loading menu
echo =Loaded

:MENU
echo 1: Starts server check
echo 2: Stops batchfile
CHOICE /C:12 /N /T:2,60 Please choose a menu option.
IF ERRORLEVEL == 2 GOTO STOP
IF ERRORLEVEL == 1 GOTO FIND_SERV

:FIND_SERV
echo Now checking your server, may take 10 seconds.
echo *(===============================================)*
PING -N 1 192.168.0.1 >NUL
IF %ERRORLEVEL% == 1 ECHO De server staat momenteel niet aan.
IF %ERRORLEVEL% == 0 ECHO De server staat aan en draait.
goto MENU

:STOP
pause

Maar bij 't opstarten blijkt hij geen CHOICE te herkennen, isda normaal?

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 05-09 14:21

Tuinhark

Retro

Ja. Dat zit alleen bij Dos (en dus ook bij Win9x), niet bij NT (en dus 2K en XP). Het is een proggie met de naam "choice.com".

Trouwens, die errorlevel dingessen MOET je altijd per se van groot naar klein neer zetten (en dus niet eerst op 0 checken en daarna op 1).

ELSE werkt trouwens ook niet in batch files.

:Y)

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
Dat is zwaar kut. Is er dan een andere manier om 'm iets interactiever te maken?

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 05-09 14:21

Tuinhark

Retro

VBScript proberen? Batch files op zich zijn er gewoon niet geschikt voor. (Je hebt zoals je inmiddels weet allerlei aanvullende tooltjes nodig die mogelijk niet voorhanden zijn.)

:Y)

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
Ooit VBasic 6.0 uitgeprobeerd, snapde er geen ene aap van :)

  • Switch
  • Registratie: December 2001
  • Laatst online: 30-08 17:36
Is er eigenlijk een andere scripting taal die ook makkelijk is voor beginners, maar meer feautures heeft dan Batch? Met een gui ofzo :) (Geen CGI! :P)

Trouwens, voro del iefhebbers post ik ngo effe 't final scriptje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
echo Welcome to 'Network Administration tools v0.2'
echo This little DOS/BATCH file checks if 192.168.0.1 is onlien or not
echo I'm still upgrading this program.
echo Like a Network booter and more.
echo =Loading menu
echo =Loaded


echo Now checking your server, may take 10 seconds.
echo *(===============================================)*
PING -N 1 192.168.0.1 >NUL
IF %ERRORLEVEL% == 1 ECHO De server staat aan en draait.
IF %ERRORLEVEL% == 0 ECHO De server staat momenteel niet aan

pause

Verwijderd

Weet iemand een goede site om het te leren? Liefst nederlanders, maar engels mag ook ;)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 05-09 14:21

Tuinhark

Retro

Bash scripting >:)

WinNT/2K/XP kent ook de zgn CMD files. Ik weet niet of die, en zo ja welke, voordelen dat biedt boven BAT, maar misschien kun je het ff checken.

Je kunt ook REXX proberen. :P 4DOS (een addon voor DOS, ook voor Windoos) heeft ook geavanceerde features die je kunt checken.

Anders is VBScript (active scripting :?) the way to go vermoed ik.

:Y)
Pagina: 1