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

Werte aus Textdatei in Batchdatei laden und als Variable verarbeiten

Frage Entwicklung Batch & Shell

Mitglied: dannei

dannei (Level 1) - Jetzt verbinden

17.07.2007, aktualisiert 13:49 Uhr, 6998 Aufrufe, 2 Kommentare

Hallo zusammen,

ich möchte gerne eine Batch-Datei erstellen, die aus einer externen Textdatei Werte ausliest, und diese Werte als Variable weiter verarbeitet. Ich habe jede Menge Hinweise gefunden, bin aber leider irgendwie nicht daraus Schlau geworden (Newbee-Problem). Hintergrund ist der, das Daten wie IP-Adresse, Gateway, DNS, etc via Batchdatei geschrieben werden sollen. In dem Script funktioniert das auch soweit ganz gut. Nun möchte ich jedoch, das Werte wie IP-Adresse, etc in einer Externen Datei gespeichert werden, die den jeweiligen Umständen entsprechend hin angepasst werden können.

Meine Batch-Datei sieht so aus:

echo off
:start
:: Netzwerkkonfigurationsdaten
SET PC=MASTER
SET DESC=LAN-Verbindung
SET IP=192.168.0.9
SET NM=255.255.255.0
SET GW=192.168.0.210
SET DNS0=192.168.0.210
SET DNS1=
:: Änderung Computername
REG add "HKLMSYSTEMControlSet001ControlComputerNameComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKLMSYSTEMControlSet001ServicesTcpipParameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
REG add "HKLMSYSTEMCurrentControlSetControlComputerNameComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKLMSYSTEMCurrentControlSetServicesTcpipParameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
:: Anderung der Netzwerkkonfiguration
echo setze statische IP %IP% ...
netsh interface ip set address name=%DESC% source=static addr=%IP% mask=%NM%
echo setze Gateway %GW% ...
netsh interface ip set address name=%DESC% gateway=%GW% gwmetric=0
echo setze primaeren DNS-Server %DNS0% ...
netsh interface ip set dns name=%DESC% source=static addr=%DNS0% register=PRIMARY
echo setze sekundaeren DNS-Server %DNS1% ...
netsh interface ip add dns name=%DESC% addr=%DNS1% index=2
echo setze Computername auf %PC%
:end

Wie schon beschrieben, möchte ich gerne, das die Werte SET PC=..., etc ausgelagert werden.
Mit FOR... komme ich irgendwie noch nicht zurecht, da ich den Syntax noch nicht richtig verstehe.
Ist dies überhaupt so "einfach" möglich?

Freue mich über eine Antwort von Profis und bedanke mich schon einmal herzlich
Mitglied: bastla
17.07.2007 um 13:33 Uhr
Hallo dannei und willkommen im Forum!

Wenn Du in der Textdatei eine Zeile mit den entsprechenden Daten in der angegebenen Reihenfolge erstellst und als Trennzeichen ("Delilmiter") dazwischen zB ";" (oder ein anderes, in den Daten sicher nicht vorkommendes Zeichen) verwendest, kannst Du sogar ohne explizit benannte Variable auskommen. Beispiel:
01.
for /f "tokens=1-7 delims=;" %%a in (D:\Daten.txt) do ( 
02.
	:: Änderung Computername 
03.
	REG add "HKLMSYSTEMControlSet001ControlComputerNameComputerName" /v ComputerName /t REG_SZ /d %%a /f 
04.
	REG add "HKLMSYSTEMControlSet001ServicesTcpipParameters" /v "NV Hostname" /t REG_SZ /d %%a /f 
05.
	REG add "HKLMSYSTEMCurrentControlSetControlComputerNameComputerName" /v ComputerName /t REG_SZ /d %%a /f 
06.
	REG add "HKLMSYSTEMCurrentControlSetServicesTcpipParameters" /v "NV Hostname" /t REG_SZ /d %%a /f 
07.
	:: Anderung der Netzwerkkonfiguration 
08.
	echo setze statische IP %%c ... 
09.
	netsh interface ip set address name=%%b source=static addr=%%c mask=%%d 
10.
	echo setze Gateway %%e ... 
11.
	netsh interface ip set address name=%%b gateway=%%e gwmetric=0 
12.
	echo setze primaeren DNS-Server %%f ... 
13.
	netsh interface ip set dns name=%%b source=static addr=%%f register=PRIMARY 
14.
	echo setze sekundaeren DNS-Server %%g ... 
15.
	netsh interface ip add dns name=%%b addr=%%g index=2 
16.
	echo setze Computername auf %%a 
17.
)
Zur verwendeten "for"-Zeile: Durch die Angabe des Delimiters ";" wird die Zeile in einzelne "Tokens" (Bestandteile) zerlegt. Den Variablennamen des erste Tokens kannst Du selbst festlegen (im Beispiel %%a), alle weiteren werden dann einfach alphabetisch aufsteigend benannt.

Alternativ kannst Du natürlich bei den bisherigen Variablennamen bleiben (ist auch etwas übersichtlicher) - dann müsste der Code etwa so aussehen:
01.
@echo off & setlocal 
02.
for /f "tokens=1-7 delims=;" %%a in (D:\Daten.txt) do ( 
03.
	set "PC=%%a" 
04.
	set "DESC=%%b" 
05.
	set ... 
06.
07.
:: Änderung Computername 
08.
... weiter wie bisher ...
Die Datenzeile wäre in beiden Fällen
01.
MASTER;LAN-Verbindung;192.168.0.9;255.255.255.0;192.168.0.210;192.168.0.210;
ohne eine zusätzliche Leerzeile (aber mit genau 6 Trennzeichen für 7 Datenfelder).

Grüße
bastla
Bitte warten ..
Mitglied: dannei
17.07.2007 um 13:49 Uhr
Hallo Bastla,

vielen Dank. Das waren genau die Hinweise, die ich benötigt habe. Auch die Erklärung war supergut. Nun komme ich bestens zurecht.

Dankeschön
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei
gelöst Frage von donnyS73lbBatch & Shell6 Kommentare

Hallo zusammen, ich möchte fragen, ob es - wie bspw. bei VBScript - auch mit einer Batchdatei möglich ist, ...

Batch & Shell
Ausgelagerte Variablen in Batchdatei
gelöst Frage von mp-homeBatch & Shell6 Kommentare

Hallo Forum, ich versuche eine Batch zu erstellen, die in mehreren (Windows) Umgebungen laufen soll. Dazu möchte ich die ...

Batch & Shell
Batchdatei: Variablen-Wertezuweisung
gelöst Frage von donnyS73lbBatch & Shell2 Kommentare

Hallole, eine Anfängerfrage: Was mache ich hier falsch? echo %variable1% liefert das richtige Ergebnis, denn variable1 hat einen gültigen ...

Batch & Shell
BATCHDATEI - Variable unter "echo" nicht angezeigt
gelöst Frage von TobiBotBatch & Shell4 Kommentare

Hey, ich bin neu hier und habe gleich mal eine Frage: Ich bin Batch-Neuling und arbeite gerade an einem ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 8 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 12 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 12 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 15 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server15 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...