Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

BATCH Computernamen auslesen, aufteilen und nach Variablen wegschreiben...

Frage Entwicklung Batch & Shell

Mitglied: yakazaa

yakazaa (Level 1) - Jetzt verbinden

28.03.2008, aktualisiert 15:40 Uhr, 6233 Aufrufe, 13 Kommentare

.... 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 !
Mitglied: miniversum
28.03.2008 um 09:51 Uhr
Versuchs mal so:
FOR /F "tokens=1,2 delims=-" %%i in ('echo %computername%') do set "Eingabe2=%%i" & set "Eingabe4=%%j"
Bitte warten ..
Mitglied: yakazaa
28.03.2008 um 09:52 Uhr
Ja wie jetzt ?!

Das gesamte Dingen lässt sich mit nem Einzeiler lösen ?!

Du bist n Held !!!
Bitte warten ..
Mitglied: miniversum
28.03.2008 um 09:56 Uhr
Die Zerlegung ja.
Wenn du die Kleinbuchstaben willst würde z.B. sowas noch zusätzlich funktionieren:
FOR /F "tokens=2 delims=- " %%i in ('ping -n 1 %computername%^|findstr /I "%computername%"') do set "Eingabe3=%%i"
Bitte warten ..
Mitglied: yakazaa
28.03.2008 um 10:07 Uhr
Hi,

hab das gerade mal versucht zu simulieren, allerdings stimmt da was mit der letzten Zeile nicht:

set Eingabe1=NEXT
FOR /F "tokens=1,2 delims=-" %%i in ('echo SVS-1') do set "Eingabe2=%%i" & set "Eingabe4=%%j"
FOR /F "tokens=2 delims=- " %%i in ('ping -n 1 SVS-1^|findstr /I "SVS-1"') do set "Eingabe3=%%i"

echo %Eingabe1%
echo %Eingabe2%
echo %Eingabe3%
echo %Eingabe4%

Er gibt für %Eingabe3% das Wort request aus....
Bitte warten ..
Mitglied: miniversum
28.03.2008 um 10:26 Uhr
In der CMD müßte das ganze ungefär so aussehen:
01.
>ping SVS-1 
02.
 
03.
Ping svs-1 [192.168.2.2] mit 32 Bytes Daten: 
04.
 
05.
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128 
06.
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128 
07.
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128 
08.
Antwort von 192.168.2.2: Bytes=32 Zeit<1ms TTL=128 
09.
 
10.
Ping-Statistik für 192.168.2.2: 
11.
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), 
12.
Ca. Zeitangaben in Millisek.: 
13.
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms 
14.
 
15.
>
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:
set "Eingabe3=%Eingabe2:A=a%"
set "Eingabe3=%Eingabe3:B=b%"
set "Eingabe3=%Eingabe3:C=c%"
...
Bitte warten ..
Mitglied: yakazaa
28.03.2008 um 10:40 Uhr
Hm, wäre es denn dann nicht sinnvoller ipconfig zu nehmen und dann da den Computernamen raus zu ziehen ?!
DA steht er auch in Kleinbuchstaben und ist dann immer zu erreichen...

Aber wie müsste der Befehl dann aussehen ?!

Danke schonmal für deine Hilfe !
Bitte warten ..
Mitglied: miniversum
28.03.2008 um 11:09 Uhr
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:
FOR /F "tokens=15 delims=- " %%i in ('ipconfig /all^|findstr /I "%computername%"') do set "Eingabe3=%%i"
Bitte warten ..
Mitglied: yakazaa
28.03.2008 um 11:46 Uhr
Also, hab das jetzt in mein Skript eingebunden und die daten werden richtig aus dem Computernamen herausgefiltert.

Überprüfen tu ich den Krams mit

ECHO Projektname: %Eingabe1%
ECHO Clientname (groß): %Eingabe2%
ECHO Clientname (klein): %Eingabe3%
ECHO Stationsnummer : %Eingabe4%

Leider gibt er mir da den Clientnamen (klein) auch in Großbuchstaben an...
Bitte warten ..
Mitglied: yakazaa
28.03.2008 um 11:53 Uhr
Also:

Um euch mal das Gesamtskript zu zeigen:

01.
@echo off 
02.
:start 
03.
 
04.
set Eingabe1=JUNGHEINRICH 
05.
REM set /p Eingabe2=Clientname(gross): 
06.
REM set /p Eingabe3=Clientname(klein): 
07.
REM set /p Eingabe4=Clientnummer: 
08.
REM IF  "%Eingabe1%"=="" GOTO ERROR 
09.
REM IF  "%Eingabe2%"=="" GOTO ERROR 
10.
REM IF  "%Eingabe3%"=="" GOTO ERROR 
11.
REM IF  "%Eingabe4%"=="" GOTO ERROR 
12.
 
13.
FOR /F "tokens=1,2 delims=-" %%i in ('echo %computername%') do set "Eingabe2=%%i" & set "Eingabe4=%%j" 
14.
FOR /F "tokens=15 delims=- " %%i in ('ipconfig /all^|findstr /I "%computername%"') do set "Eingabe3=%%i" 
15.
 
16.
ECHO. 
17.
ECHO. 
18.
ECHO Folgende Rechnerinfos werden für die Ausführung der Client CD verwendet: 
19.
ECHO. 
20.
ECHO. 
21.
ECHO Projektname: %Eingabe1% 
22.
ECHO. 
23.
ECHO Clientname (groß): %Eingabe2% 
24.
ECHO. 
25.
ECHO Clientname (klein): %Eingabe3% 
26.
ECHO. 
27.
ECHO Stationsnummer: %Eingabe4% 
28.
ECHO. 
29.
ECHO. 
30.
ECHO Sollten diese Eingaben nicht korrekt sein drücken Sie bitte JETZT STRG + C um das Skript abzubrechen !!! 
31.
PAUSE 
32.
CLS 
33.
rem ###################### DISKPART nach C:\SW kopieren ########### 
34.
net use X: \\VI-CDS-SRV\Basics gambit /user:Administrator 
35.
copy X:\*.txt C:\SW\ 
36.
copy X:\*.exe C:\SW\ 
37.
net use X: /delete 
38.
 
39.
rem ###################### SIW nach C:\SW kopieren ########### 
40.
MD C:\SW\SIW 
41.
net use X: \\VI-CDS-SRV\Files\SIW gambit /user:Administrator 
42.
copy X:\*.* C:\SW\SIW\ 
43.
net use X: /delete 
44.
 
45.
rem ###################### CD-ROM nach Y: mappen ########### 
46.
C:\SW\diskpart /s C:\SW\disk_Y.txt 
47.
 
48.
rem ###################### Client CD ########### 
49.
net use Z: \\VI-CDS-SRV\CLIENT_CD\%Eingabe1% gambit /user:Administrator 
50.
CALL Z:\inst.bat %Eingabe1% %Eingabe2% %Eingabe3% %Eingabe4% 
51.
net use Z: /delete 
52.
 
53.
REM ###################### ORACLE Sprachänderung ########### 
54.
net USE Z: \\srv.jag-test.ocal\Files gambit /user:jag-test.ocal\Administrator 
55.
CALL Z:\JAG-Master\ORACLE.CMD 
56.
net use Z: /delete 
57.
 
58.
rem ###################### CD-ROM nach Z: mappen ########### 
59.
C:\SW\diskpart /s C:\SW\disk_Z.txt 
60.
 
61.
rem ###################### static IP setting und MAC Adressen Ausgabe############################################# 
62.
SET COMPUTERNAME=%Eingabe2%-%Eingabe4% 
63.
copy C:\Windows\system32\drivers\etc\hosts c:\SW\hosts.txt 
64.
SET LOG=\\VI-CDS-SRV\MAC\%Eingabe1%\%COMPUTERNAME%.txt 
65.
ECHO Daten des Rechners %COMPUTERNAME% >>%LOG% 
66.
ipconfig /all >>%LOG% 
67.
ECHO. >>%LOG% 
68.
FOR /F "" %%I in ('findstr /i "%COMPUTERNAME%$" C:\SW\hosts.txt') DO Set IP=%%I 
69.
ECHO NEXT Netzwerk: >>%LOG% 
70.
ECHO         IP Adresse      . . . . . . . . . : %IP%  >>%LOG% 
71.
ECHO.>>%LOG% 
72.
DEL c:\SW\hosts.txt 
73.
 
74.
rem ###################### LAN Verbindung umbenennen ############################################# 
75.
netsh interface set interface name = "Hostlan" newname = "HOSTLAN" 
76.
netsh interface ip set address "HOSTLAN" static %IP% 255.255.255.0 172.27.72.254 1 
77.
 
78.
rem ###################### Software Inventarisierung ############################### 
79.
CALL C:\SW\SIW\SIW.EXE /log 
80.
 
81.
rem ###################### Verknüpfung löschen ############## 
82.
REM DEL "C:\Documents and Settings\Administrator\Desktop\Rechner individualisieren.lnk" 
83.
goto Ende 
84.
 
85.
rem ###################### Fehlerfall ############## 
86.
:ERROR 
87.
REM ECHO. 
88.
REM ECHO. 
89.
REM ECHO Uebergabeparameter fehlt !! 
90.
REM ECHO. 
91.
REM ECHO Syntax: INST Projektname(gross) Clientname(gross) Clientname(klein) Client-Nr. 
92.
REM ECHO. 
93.
ECHO Fehlerfall:  
94.
ECHO. 
95.
ECHO Zur Fehlersuche bitte folgendes angeben: 
96.
ECHO. 
97.
ECHO Parameter: 
98.
ECHO. 
99.
ECHO Projektname: %Eingabe1% 
100.
ECHO. 
101.
ECHO Clientname (groß): %Eingabe2% 
102.
ECHO. 
103.
ECHO Clientname (klein): %Eingabe3% 
104.
ECHO. 
105.
ECHO Stationsnummer: %Eingabe4% 
106.
ECHO. 
107.
PAUSE 
108.
goto start 
109.
:ende
Vielleicht hebelt sich da irgendwas gegenseitig aus ?!

bedankt,

Dominink
Bitte warten ..
Mitglied: miniversum
28.03.2008 um 12:22 Uhr
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?
Bitte warten ..
Mitglied: bastla
28.03.2008 um 14:38 Uhr
Hallo yakayzaa!

Falls (temporäres) VBScript eine Option wäre, könntest Du es mit folgendem Batch versuchen:
01.
@echo off & setlocal 
02.
set G=%temp%\GetNameParts.vbs 
03.
echo N=Split(WScript.CreateObject("WScript.Network").ComputerName,"-"):WScript.Echo N(0)^&" "^&LCase(N(0))^&" "^&N(1)>%G% 
04.
for /f "tokens=1-3" %%i in ('cscript //nologo %G%') do set "Eingabe2=%%i" & set "Eingabe3=%%j" & "set Eingabe4=%%k" 
05.
echo %Eingabe2% 
06.
echo %Eingabe3% 
07.
echo %Eingabe4%
Grüße
bastla
Bitte warten ..
Mitglied: yakazaa
28.03.2008 um 15:24 Uhr
So, muss vorne anfangen:

Hab das Problem schon kommen sehen und das Ganze mal bei Gulli gepostet.

Aus der Antwort von da ahb ich mir dann irgendwann ein Konstrukt gebaut, das wie folgt aussieht.. und seinen Dienst tut ;)

Sieht so aus:

01.
FOR /F "tokens=1,2 delims=-" %%i in ('echo %computername%') do set "Eingabe2=%%i" & set "Eingabe4=%%j" 
02.
FOR /F "tokens=15 delims=- " %%i in ('ipconfig /all^|findstr /I "%computername%"') do set "Eingabe3=%%i" 
03.
 
04.
set Eingabe3=%Eingabe3:A=a% 
05.
set Eingabe3=%Eingabe3:B=b% 
06.
set Eingabe3=%Eingabe3:C=c% 
07.
set Eingabe3=%Eingabe3:D=d% 
08.
set Eingabe3=%Eingabe3:E=e% 
09.
set Eingabe3=%Eingabe3:F=f% 
10.
set Eingabe3=%Eingabe3:G=g% 
11.
set Eingabe3=%Eingabe3:H=h% 
12.
set Eingabe3=%Eingabe3:I=i% 
13.
set Eingabe3=%Eingabe3:J=j% 
14.
set Eingabe3=%Eingabe3:K=k% 
15.
set Eingabe3=%Eingabe3:L=l% 
16.
set Eingabe3=%Eingabe3:M=m% 
17.
set Eingabe3=%Eingabe3:N=n% 
18.
set Eingabe3=%Eingabe3:O=o% 
19.
set Eingabe3=%Eingabe3:P=p% 
20.
set Eingabe3=%Eingabe3:Q=q% 
21.
set Eingabe3=%Eingabe3:R=r% 
22.
set Eingabe3=%Eingabe3:S=s% 
23.
set Eingabe3=%Eingabe3:T=t% 
24.
set Eingabe3=%Eingabe3:U=u% 
25.
set Eingabe3=%Eingabe3:V=v% 
26.
set Eingabe3=%Eingabe3:W=w% 
27.
set Eingabe3=%Eingabe3:X=x% 
28.
set Eingabe3=%Eingabe3:Y=y% 
29.
set Eingabe3=%Eingabe3:Z=z% 
30.
 
31.
ECHO. 
32.
ECHO. 
33.
ECHO Folgende Rechnerinfos werden fr die Ausfhrung der Client CD verwendet: 
34.
ECHO. 
35.
ECHO Projektname: %Eingabe1% 
36.
ECHO Clientname (groá): %Eingabe2% 
37.
ECHO Clientname (klein): %Eingabe3% 
38.
ECHO Stationsnummer: %Eingabe4% 
39.
ECHO. 
40.
ECHO. 
41.
ECHO Sollten diese Eingaben nicht korrekt sein drcken Sie bitte JETZT 
42.
ECHO STRG + C um das Skript abzubrechen !!! 
43.
ECHO. 
44.
ECHO. 
45.
PAUSE 
46.
CLS
So klappt das Ganze dann auch Perfekt...

Vielen Dank für euren Support, speziell natürlich an dich miniversum !
Das Hauptthreadpronlem hattest du ja in 0,nix gelöst !!!

@bastla: ein VB Script soll ich (warum auch immer) nicht verwenden...
Anweisungen...


Schönes Wochenende euch allen und nochmals 1000 Dank !!!

Dominik
Bitte warten ..
Mitglied: miniversum
28.03.2008 um 15:40 Uhr
Dann brauchst du die zweite Zeile mit dem For aber nicht mehr und köntest davür
set Eingabe3=%Eingabe3:A=a%
in
set Eingabe3=%Eingabe2:A=a%
abändern.
Die restlichen aber so lassen.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...