Einen IP-Bereich per Batch pingen

Keine Tools zur Hand und dann mal eben einen IP-Bereich nach (nicht) erreichbaren Hosts prüfen!?
Per Batchskript funktioniert das wie folgt:

1
2
3
4
5
6
7
8
9
@ECHO OFF
SET /p start=Erste IP-Adresse: 192.168.0.
SET /p ende=Letzte IP-Adresse: 192.168.0.
 
ECHO Pinge IP-Adressen von %start% bis %ende%.
 
FOR /L %%i IN (%start% 1 %ende%) DO PING -n 1 192.168.0.%%i
 
PAUSE

Der Haken an diesem Cmdskript ist die Laufzeit, denn der Timeout dauert pro Computer ein wenig, obwohl immer nur ein Versuch gemacht wird.

Trotzdem eine valide Notlösung! ;-)

Zwei Dateien vergleichen mit “fc”

In der Eingabeaufforderung oder per Batch zwei Dateien zu vergleichen ist ziemlich einfach, wenn es nur darum geht, zu prüfen, ob deren Inhalte identisch sind oder nicht. Die Differenz wird allerdings nicht angezeigt.
Die folgende Batchdatei prüft, ob der Inhalt von “Datei1.txt” und “Datei2.txt” gleich ist. Wenn ja passiert nichts, wenn nein wird die Anwendung “TuWas.exe” ausgeführt.

1
2
3
@Echo Off
fc Datei1.txt Datei2.txt > nul
if errorlevel 1 TuWas.exe

IP-Konfiguration per Netsh ändern

Mit meinem Notebook bin ich häufig unterwegs, entweder im Geschäft, Zuhause, bei Kunden, oder Freunden. Dabei hat mich immer häufiger gestört, dass ich jedes mal die IP-Einstellungen meiner Netzwerkverbindung an das jeweilige LAN per Hand anpassen muss, um ins Netzwerk bzw. das Internet zu gelangen. Einige haben zwar DHCP, aber andere wieder nicht. Hinzu kommt, dass sich diese Daten ja eigentlich nicht so häufig ändern.
Das es für das o.g. Problem Hilfsmittel und grafische Tools gibt, weiß ich ja. Hier wäre zum Beispiel “NetSetMan” zu nennen.
Ich möchte aber nicht erst ein grafisches Programm ausführen, darin ein Profil auswählen und dann einen Button klicken, also erledige ich das per Skript. Das machen übrigens sehr viele Leute, denn ich habe hunderte Beiträge mit funktionierenden Lösungen gefunden.

Unter Windows XP nutze ich den Befehl “Netsh” wie folgt:

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.************************************************************
ECHO.IP-Adresse setzen: 192.168.200.22, Netzmaske: 255.255.255.0
NETSH INTERFACE IP SET address name="LAN-Verbindung" source=static addr=192.168.200.22 mask=255.255.255.0
ECHO.
 
ECHO.************************************************************
ECHO.Standard-Gateway setzen: 192.168.200.1
NETSH INTERFACE IP SET address name="LAN-Verbindung" gateway=192.168.200.1 gwmetric=0
ECHO.
 
ECHO.************************************************************
ECHO.Primaeren DNS-Server setzen: 192.168.200.1
NETSH INTERFACE IP SET dns name="LAN-Verbindung" source=static addr=192.168.200.1 register=PRIMARY
ECHO.
 
ECHO.************************************************************
ECHO.Sekundaeren DNS-Server setzen: 192.168.200.2
ECHO.NETSH INTERFACE IP add dns name="LAN-Verbindung" addr=192.168.200.2 index=2
ECHO.
 
ECHO.************************************************************
ECHO.WINS-Server setzen: Keinen
NETSH INTERFACE IP SET wins name="LAN-Verbindung" source=static addr=none
ECHO.

Sollen die Daten per DHCP eingestellt werden, so hilft das folgende Skript:

1
2
3
4
5
6
@ECHO OFF
 
ECHO.************************************************************
ECHO.DHCP aktivieren
NETSH INTERFACE IP SET address name="LAN-Verbindung" source=dhcp
ECHO.

Den Namen der Netzwerkverbindung, bei mir “LAN-Verbindung” müsst ihr natürlich noch an eure Daten anpassen , ebenso die IP-Adressen.

Siehe auch:
Netzwerk per Registry konfigurieren

Verzeichnis mit aktuellem Datum erstellen

Für Protokolle oder Sicherungen benötigt man immer wieder Verzeichnisse die täglich neu angelegt werden und die das aktuelle Datum enthalten.
Das folgende Skript legt ein Verzeichnis im folgenden Format an: Backup_Jahr-Monat-Tag, also z.B. “Backup_2009-02-10″

Batch-Skript:

1
2
3
4
5
SET Jahr=%date:~-4%
SET Monat=%date:~-7,2%
SET Tag=%date:~-10,2%
 
mkdir "Backup_%Jahr%-%Monat%-%Tag%"

Text klein schreiben

Manchmal kommt es eben doch auf die Groß/Kleinschreibung an, auch bei Batchdateien. Die folgenden Zeilen bringen einen String in Kleinschrift.

1
2
3
4
echo>%1
dir /b/l %1>%Temp%\Klein.tmp
set /p Ergebnis=< %Temp%\Klein.tmp
echo %Ergebnis%

Die Datei z.B. als Klein.cmd abspeichern und über die Kommandozeile wie folgt ansprechen: Klein.cms “Mein Text”