Top-Themen

Aktuelle Themen (A bis Z)

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...

Mitglied: yakazaa

yakazaa (Level 1) - Jetzt verbinden

28.03.2008, aktualisiert 15:40 Uhr, 6336 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 ..
Ähnliche Inhalte
Batch & Shell

Batch zum Auslesen einer .txt Datei in Variablen

Frage von DanielG80Batch & Shell2 Kommentare

Hallo, habe das Forum durchforstet und leider nichts passendes gefunden! Ich habe eine Txt datei vorliegen mit folgendem Inhalt: ...

Batch & Shell

Schnittstellenname per batch auslesen und in eine variable schreiben

gelöst Frage von tobias3355Batch & Shell10 Kommentare

ich habe dazu im netz folgenden ansatz gefunden netsh interface show interface for /F "tokens=1,2,3* delims= " %%i in ...

Batch & Shell

(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern

gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Batch & Shell

Batch: CPU-Auslastung eines Prozesses auslesen und als Variable definieren

gelöst Frage von tralvellerBatch & Shell3 Kommentare

Hallo zusammen, ich bin aktuell daran ein Batch-Skript zu erstellen, worin ich: - Prozess mit aktueller CPU-Last auslese - ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 1 TagAusbildung9 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 3 TagenSpeicherkarten3 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 3 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 4 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware19 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...

Windows Server
Zertifikat RemoteDesktop hinterlegen
gelöst Frage von Green14Windows Server12 Kommentare

Hallo zusammen. ich habe mehrere Server (WinSrv 2016). Die Server sind in keiner Domäne und keine Terminalserver. Ich verbinde ...

Suche Projektpartner
Debian 9.5 32 Bit und PHP 7 Fehlerbeseitigungen
Frage von zeroblue2005Suche Projektpartner11 Kommentare

Hallo Zusammen, ich habe eine VM auf Basis von ESXI am laufen. Dieser wurde unter Debian 7 installiert mt ...

Windows 10
Windows 10 Spracherkennung - Eure Meinungen?
Frage von honeybeeWindows 1011 Kommentare

Hallo, wollte heute mal aus Neugier die Spracherkennung unter Windows 10 (Version 1803) ausprobieren und war mehr wie enttäuscht. ...