BATCH Computernamen auslesen, aufteilen und nach Variablen wegschreiben...
ist im Moment mein größtes Problem und ich hoffe auf eure Hilfe !!
Aber ich fang mal vorne an:
Bei uns bestehen die Rechnernamen aus diversen Kürzeln (zwischen 3 und 6 Großbuchstaben), einem Minus als Trennzeichen und dann Zahlen zwischen 1 und 100.
z.B. SVS-10
Jetzt soll mit einer BATCH Datei dieser Computername also ausgelesen werden und das "SVS" nach %Eingabe2% und die "10" nach %Eingabe4% gespeichert werden.
Wichtig ist hierbei das es in %Eingabe2% auch Großbuchstaben bleiben.
Später sollen dann diese in Kleinbuchstaben umgewandelt und nach %Eingabe3% abgelegt werden.
Allerdings muss %Eingabe2% weiterhin die Großbuchstaben behalten...
Hintergrund der ganzen Geschichte ist, dass so mit Snap Deploy beschossene Rechner automatisch diverse Windows Features geändert bekommen.
Diese Änderungen werden bei uns mit einer so genannten Client CD, einem ellenlangen DOS Skript, aufgerufen.
Dieses Skript verlangt jedoch die folgenden Eingaben:
Clientname in Großbuchstaben
Clientname in Kleinbuchstaben
Stationsnummer
Mit dem oben genannten Skript möchte ich nun gerne den Prozess des Finalisierens ohne Tastatureingaben realisieren...
Ich hoffe Ihr könnt mir da weiterhelfen !
Aber ich fang mal vorne an:
Bei uns bestehen die Rechnernamen aus diversen Kürzeln (zwischen 3 und 6 Großbuchstaben), einem Minus als Trennzeichen und dann Zahlen zwischen 1 und 100.
z.B. SVS-10
Jetzt soll mit einer BATCH Datei dieser Computername also ausgelesen werden und das "SVS" nach %Eingabe2% und die "10" nach %Eingabe4% gespeichert werden.
Wichtig ist hierbei das es in %Eingabe2% auch Großbuchstaben bleiben.
Später sollen dann diese in Kleinbuchstaben umgewandelt und nach %Eingabe3% abgelegt werden.
Allerdings muss %Eingabe2% weiterhin die Großbuchstaben behalten...
Hintergrund der ganzen Geschichte ist, dass so mit Snap Deploy beschossene Rechner automatisch diverse Windows Features geändert bekommen.
Diese Änderungen werden bei uns mit einer so genannten Client CD, einem ellenlangen DOS Skript, aufgerufen.
Dieses Skript verlangt jedoch die folgenden Eingaben:
Clientname in Großbuchstaben
Clientname in Kleinbuchstaben
Stationsnummer
Mit dem oben genannten Skript möchte ich nun gerne den Prozess des Finalisierens ohne Tastatureingaben realisieren...
Ich hoffe Ihr könnt mir da weiterhelfen !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84175
Url: https://administrator.de/forum/batch-computernamen-auslesen-aufteilen-und-nach-variablen-wegschreiben-84175.html
Ausgedruckt am: 21.12.2024 um 15:12 Uhr
13 Kommentare
Neuester Kommentar
In der CMD müßte das ganze ungefär so aussehen:
Durch den Ping befehl funktioniert das ganze NUR wenn der Rechner SVS-1 erreichbar ist!
Soll es auch sonst auch immer funktionieren must du es durch ersetzen von Buchstaben lösen.
Also:
>ping SVS-1
Ping svs-1 [192.168.2.2] mit 32 Bytes Daten:
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128
Ping-Statistik für 192.168.2.2:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
>
Soll es auch sonst auch immer funktionieren must du es durch ersetzen von Buchstaben lösen.
Also:
set "Eingabe3=%Eingabe2:A=a%"
set "Eingabe3=%Eingabe3:B=b%"
set "Eingabe3=%Eingabe3:C=c%"
...
set "Eingabe3=%Eingabe3:B=b%"
set "Eingabe3=%Eingabe3:C=c%"
...
ob du ip config oder ping nimst ist egal. Wenn die Batch immer auf dem Rechner läuft mit diesem namen, also der name über %computername% übergeben werden kann, sollte es bei beiden funktionieren.
Mit ip config wäre es dann so:
Mit ip config wäre es dann so:
FOR /F "tokens=15 delims=- " %%i in ('ipconfig /all^|findstr /I "%computername%"') do set "Eingabe3=%%i"
Ich habe grade dein Skript (nur die Obere hälfte bis zur Pause) bei mir grade genau so getestet. Da mein Computername hier auch ein - enthält und alles grosbuchstaben sind war also keine weitere Änderung notwendig.
Hier bei mir funktioniert es wie gewollt. Da wos großbuchstaben sein sollen sind sie groß udn da wo sie klein sein sollen werden sie klein angezeigt.
Ich hab hier ein Windows xp pro.
Hast du es mal mit der ersetzen Mathode versucht?
Hier bei mir funktioniert es wie gewollt. Da wos großbuchstaben sein sollen sind sie groß udn da wo sie klein sein sollen werden sie klein angezeigt.
Ich hab hier ein Windows xp pro.
Hast du es mal mit der ersetzen Mathode versucht?
Hallo yakayzaa!
Falls (temporäres) VBScript eine Option wäre, könntest Du es mit folgendem Batch versuchen:
Grüße
bastla
Falls (temporäres) VBScript eine Option wäre, könntest Du es mit folgendem Batch versuchen:
@echo off & setlocal
set G=%temp%\GetNameParts.vbs
echo N=Split(WScript.CreateObject("WScript.Network").ComputerName,"-"):WScript.Echo N(0)^&" "^&LCase(N(0))^&" "^&N(1)>%G%
for /f "tokens=1-3" %%i in ('cscript //nologo %G%') do set "Eingabe2=%%i" & set "Eingabe3=%%j" & "set Eingabe4=%%k"
echo %Eingabe2%
echo %Eingabe3%
echo %Eingabe4%
Grüße
bastla