Hi, bastel mir gerade ein kleines Netlogon.
Ich habe 3 subnetze, und abhänig von diesen soll ein anderes netzlaufwerk gemapped werden. So weit so klar.
@echo off
cls
REM Scripted by B.Grob / Cropmark AG
REM ** Variable ipadress deklarieren **
for /f "Tokens=2 Delims=[] skip=1" %%i in ('ping -n 1 %computername%') do set IPAdress=%%i
REM ** Bestimmen des Subnetz **
If %IpAdress% LEQ 192.168.0.0 Goto unbekannt
If %IpAdress% LEQ 192.168.100.9 Goto 100
If %IpAdress% LEQ 192.168.100.99 Goto 100
If %IpAdress% LEQ 192.168.100.255 Goto 100
If %IpAdress% LEQ 192.168.200.9 Goto 200
If %IpAdress% LEQ 192.168.200.99 Goto 200
If %IpAdress% LEQ 192.168.200.255 Goto 200
If %IpAdress% LEQ 192.168.222.9 Goto 222
If %IpAdress% LEQ 192.168.222.99 Goto 222
If %IpAdress% LEQ 192.168.222.255 Goto 222
If %IPAdress% GEQ 192.168.255.0 Goto unbekannt
GOTO ENDE
REM ** Bei Welchem Subnetz was machen **
REM ** Subnet 192.168.100.0 **
:100
net use * /delete
y
y
y
net use p: \\server8\server8
goto ende
REM ** Subnet 192.168.200.0 **
:200
net use * /delete
y
y
y
net use p: \\server6\server6
goto ende
REM ** Subnet 192.168.222.0 **
:222
net use * /delete
y
y
y
net use p: \\server4\server4
goto ende
REM ** Subnet grösser oder kleiner als der definierte Bereich **
:unbekannt
shutdown /l
Goto ende
:ende
Nun, zwei fragen;
1. Ich habe das Subnet in drei Abfragen gestaltet (die einstelligen, zweistelligen, und dreistelligen IPAdressen). Kann ich diese zusammen fassen in eine Abfrage?
2. Um danach eventuell vorhandene Netzlaufwerke zu trennen, benutze ich den Befehl net use * /delete und dann die paar y's für die bestätigung. Gibt es da ne schönere, resp. suaberere Variante?
Grüsse
Seite 1 von 1
[Batch]If-Abfrage und Netzlaufwerke If-Abfrage und Netzlaufwerke
Anzeige
#2
geschrieben 02. Februar 2005 - 15:08
@echo off
cls
REM Scripted by B.Grob / Cropmark AG
REM ** Variable ipadress deklarieren **
for /f "Tokens=2 Delims=[] skip=1" %%i in ('ping -n 1 %computername%') do set IPAdress=%%i
REM ** Bestimmen des Subnetz **
If %IpAdress% LEQ 192.168.0.0 Goto unbekannt
FOR %%x in (9 99 255) do If %IpAdress% LEQ 192.168.100.%%x set server=\\server8\server8 & goto :mounting
FOR %%x in (9 99 255) do If %IpAdress% LEQ 192.168.200.%%x set server=\\server6\server6 & goto :mounting
FOR %%x in (9 99 255) do If %IpAdress% LEQ 192.168.222.%%x set server=\\server4\server4 & goto :mounting
If %IPAdress% GEQ 192.168.255.0 Goto unbekannt
GOTO ENDE
REM ** Mounting & Dismounting the Networkdrives **
:mounting
net use * /delete
y
y
y
net use p: %sever%
goto ende
REM ** Subnet grösser oder kleiner als der definierte Bereich **
:unbekannt
shutdown /l
Goto ende
:ende
Zeilenumbrüche in jeder FOR-Zeile herausnehmen.Außerdem solltest du dir nochmal das hier ansehen. Das Tool versteckt Eingabeaufforderungsfenster, dazu musst du einfach nur das Tool selbst im System32-Verzeichnis des Windows ablegen und die ersten Zeilen, im Script müssen dann so heißen:
cmdow @ /HID @echo off cls REM Scripted by B.Grob / Cropmark AG [...]
--- Edit 1: Ich habe den Code oben noch weiter gekürzt!
--- Edit 2: @Lofote (unten): Recht hast du. Fand ich nur unsinnig zu erwähnen. Außerdem hätte ich keine so schöne Ausführung hinlegen können.
Dieser Beitrag wurde von TheSuicider bearbeitet: 02. Februar 2005 - 16:01
#3
geschrieben 02. Februar 2005 - 15:55
Nur so zur Info: das ist KEINE DOS-Batch. DOS konnte z.B. auch nie LEQ-Vergleichsparameter. Es wird auch nicht in einer DOS-Eingabeaufforderung ausgeführt, auch wenn das viele behaupten. Es handelt sich bei WinNT-basierten Systemen um eine Win32-Console, die ein nativer 32-bit-Task ist und nur wenn echte 16-bit-Programme aufgerufen wird, wird überhaupt erst das DOS-16-bit-Subsystem (namens WOW = Win16-on-Win32) nachgeladen. ping.exe z.B. ist aber auch ein Win32-Consolenprogramm. Wollte ich mal klarstellen
...
Edit by stefanra: Threadtitel dementsprechend geändert
Edit by stefanra: Threadtitel dementsprechend geändert
Dieser Beitrag wurde von stefanra bearbeitet: 02. Februar 2005 - 16:05
#4
geschrieben 02. Februar 2005 - 16:35
Super @ Suicider. Danke dir, darauf hätte ich eigentlich selbst kommen können (mit der Variable definieren)
@lofote & stefanra
Sorry, ja, ok, ist kein wirkliches DOS, aber so kam wenigstens jeder draus um was es ging.. :-) Sorry nochmals
@lofote & stefanra
Sorry, ja, ok, ist kein wirkliches DOS, aber so kam wenigstens jeder draus um was es ging.. :-) Sorry nochmals
- ← Über Netzwerk Registry-schlüssel Auslesen
- Skript/Web-Programmierung
- Einfaches Cms Mit Den Wichtigsten Funktionen →
Thema verteilen:
Seite 1 von 1

Hilfe
Neues Thema
Antworten
Nach oben




