WinFuture-Forum.de: [Batch]If-Abfrage und Netzlaufwerke - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[Batch]If-Abfrage und Netzlaufwerke If-Abfrage und Netzlaufwerke


#1 Mitglied ist offline   Nax 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 26. August 04
  • Reputation: 0

geschrieben 02. Februar 2005 - 14:50

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
0

Anzeige



#2 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.570
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

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

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.522
  • Beigetreten: 24. August 04
  • Reputation: 1

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 :(

Dieser Beitrag wurde von stefanra bearbeitet: 02. Februar 2005 - 16:05

0

#4 Mitglied ist offline   Nax 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 26. August 04
  • Reputation: 0

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
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0