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

Versionsnummer aus ini erfragen und dann Reg Schlüssel setzen

Frage Entwicklung Batch & Shell

Mitglied: Fabsel

Fabsel (Level 1) - Jetzt verbinden

25.06.2009, aktualisiert 22:54 Uhr, 4431 Aufrufe, 6 Kommentare

Ich habe folgendes Problem, ich möchte aus einer version.ini nur den Zahlenwert der entsprechenden Version abfragen und im nächsten Schritt diesen Wert in die Registry schreiben.

Meine ini hat immer den selben Aufbau:
[RegVersion]
Version =225
ServicePack=0

In diese datei ändert sich lediglich der Versionsstand, nichts anderes, und sie liegt auf dem Server. Jetzt möchte ich das nur die Zahl übergeben wird und direkt in die Registry des Clients geschrieben wird. Auf jedem Client ist immer das gleich Netzlaufwerk verbunden.
Ich haben schon ein bissel rumgetüftelt und hab das Problem, das meine batch nicht funktioniert, oder kann...

01.
for /F "Tokens=1* delims=Version=" %i in (\\server\Data\z1version.ini) do REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\beimir\test /v Version /t REG_DWORD /d %i /f
gebe ich diese Zeile direkt in das Commandfenster ein, bekomme ich "Fehler: Ungültiger Befehlszeilenparameter", danach wird der Wert in die Registry geschrieben, danach wieder "Fehler: Ungültiger Befehlszeilenparameter". Das mit den Fehlern wäre mir fast egal, nur meine Batch läuft halt nicht durch...

Ich hoffe das mir von euch da einer weiterhelfen kann.
Gruß
Fabsel
Mitglied: pieh-ejdsch
25.06.2009 um 02:51 Uhr
hallo Fabsel

Du hast ja so ziemlich NICHTS ausgelassen, was man Falsch machen kann!

Die Erklärung Deiner Forschleife:

"tokens=1*
funktioniert nicht da ein trennzeichen , (Komma) zwischen 1 und * gesetzt werden muss.
wertet das 1. token und das nächtse Token zum Rest der zeile aus.
delims=Version=
gibt einzelne Trennzeichen an in Deinem Fall ist V ein Trennzeichen e eines usw bis zum = was auch eines ist.
hier reicht es wenn Du = als einzelnes Trennzeichen angibst - Du brauchst ja das was vor dem = steht und auch das was nach dem = steht.
da die Zeichen V e r ... usw als Trennzeichen verwertet werden, werden diese natürlich nicht in der ersten Variable aufgelöst
bei Deiner Forschleife würde wenn sie richtig geschrieben wäre aus der letzten Zeile Deiner INI nach dem = alles als Variable %%j gesetzt.
um das Wort Version zu finden. was Du benötigst um die Zweite Variable bei Übereinstimmung mit der ersten Variable (in die Registry zu schreiben.) mit Version zu vergleichen benötigst Du auf jeden Fall das 1. token
%i
Du hast angegeben die Zeile ist in einer Batch. In einer Batch gehören zwei % Prozentzeichen vor alle ForschleifenVariablen. (%%i würde glaub ich auch nicht ausgegeben werden da ja schon mindestens vor dem = die tokens 1 - ... ausgewertet werden [gebe ich als unbestätigtes Statement ab.])

ist der ClientComputerName server? dann ist der (\\server\Dateiname) ok. sonst nimmst Du die IPadresse. anstatt server

HKEY_LOCAL_MACHINE\SOFTWARE...
der Schlüsselpfad muss mit HKLM beginnen
Der remote PC ist nicht der Locale PC, daher gehört zwischen HKLM und \SOFTWARE... \\ClientComputerName (also \\server )
wenn die einzelnen Unterschlüssel nicht angelegt sind wird nichts eingeschrieben.

so... den Rest! hast Du richtig geschrieben.

01.
for /f tokens=1,* delims==" %%i in (\\server\DataData\z1version.ini) do if "%%i"=="Version" reg add HKLM\\server\SOFTWARE\beimir\test /v %%i /t REG_DWORD /d %%j
ungetestet müsste so besser gehen
für den Test auf Deiner Kiste entfernst Du nach HKLM \\server

Gruß Phil
Bitte warten ..
Mitglied: LotPings
25.06.2009 um 10:17 Uhr
Hallo Phil,

ich muss leider deine Anmerkungen korrigieren

Tokens=1*
ist kein Problem funktioniert so.
delims=Version=
Ist zwar nicht ideal funktioniert aber auch, da aufeinanderfolgende delimiter bei der Auswertung ignoriert werden.
HKEY_LOCAL_MACHINE\SOFTWARE
Die ausgeschriebene Form ist auch kein Problem, da kommt Reg.exe mit klar. Ich würds aber grundsätzlich in Anführungzeichen setzen.

In Code - getaggten Bereichen funktionieren Auszeichnungen wie ** nicht, bitte rausnehmen.

Gruß
LotPings
Bitte warten ..
Mitglied: pieh-ejdsch
25.06.2009 um 10:55 Uhr
Hallo LotPings

Ok... dann habe ich es nur anderes gelernt.
werde ich mir nun auch merken - Danke für die Tips

für die Sternchen: es war schon sehr Spät bzw viel zu früh um das geschriebene nochmal zu kontrollieren. Mein Bett hat gerufen...
habs rausgenommen.

Gruß Phil
Bitte warten ..
Mitglied: Fabsel
25.06.2009 um 22:14 Uhr
Vielen Dank erstmal für die Hilfe, da ist wem wohl aufgefallen das ich absolut keine Ahung davon habe und mir in den letzten Tagen alles angelesen habe.
Ich hab das mal jetzt so ausprobiert und leider tut sich immer noch nicht viel.
Gebe ich den String in Commandozeile passt alles, nur wenn ich die batch über doppelklick starte, tut sich immer noch nicht viel. Ich hab das jetzt mal meinen Bedüfrnissen angepasst. Es soll ersteinmal auf einer lokalen Machschine laufen bevor ich das im Netz teste.

01.
for /f "tokens=1,* delims==" %i in (D:\Programme\CG\Z1\Data\z1version.ini) do if "%i"=="Version" reg add HKLM\SOFTWARE\CompuGROUP\Z1  /v Version /t REG_DWORD /d %j /f
das mit dem doppel % hab ich weg gelassen da es sonst bei mir nicht funktioniert.
Bitte warten ..
Mitglied: pieh-ejdsch
25.06.2009 um 22:42 Uhr
Hallo Fabsel

das mit dem doppel % hab ich weg gelassen da es sonst bei mir nicht funktioniert.
das ist ja genau was ich schonmal gemeint hatte.

%i
Du hast angegeben die Zeile ist in einer Batch. In einer Batch gehören zwei % Prozentzeichen vor alle ForschleifenVariablen

also nochmal für ein besseres Verständnis (ich muss das Tutorial dafür unbedingt fertig machen....)
Dein Befehl beginnt mit
for
alle Variablen, welche in der gesamten Zeile der Forschleife mit %Beginnen aber ohne% enden und alphabetische Werte enthalten sind ForSchleifenVariablen.

das bedeutet insgeheim
in Deiner Batchzeile muss jedes (einzelne) % mit (zwei) %% ersetzt werden.

also Deine Zeile oben ....ach bitte bearbeite Deinen Beitrag und setze:
<code>Deinen DICKEN CODE</code>
und mach die Sternchen drumrum weg
das lässt sich so viel besser Arbeiten.
sonst ist das doch alles Fummelei hier
Dein code oben ist für die CMD

und dieser hier ist für Deine Batch.
01.
for /f "tokens=1,* delims==" %%i in (D:\Programme\CG\Z1\Data\z1version.ini) do if "%%i"=="Version" reg add HKLM\SOFTWARE\CompuGROUP\Z1 /v Version /t REG_DWORD /d %%j /f
Gruß Phil
Bitte warten ..
Mitglied: Fabsel
25.06.2009 um 22:55 Uhr
super es läuft, jetzt hab ichs auch Verstanden

Und vielen Dank nochmal
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Reg Auswertung mit Powershell (1)

Frage von Bommi1961 zum Thema Windows Tools ...

Windows Tools
gelöst Auswertung mit Powershell in der Reg (1)

Frage von Bommi1961 zum Thema Windows Tools ...

Batch & Shell
gelöst Teil eines Strings als Variable setzen (2)

Frage von tHe-jAy zum Thema Batch & Shell ...

Windows Server
Desktop.ini - LocalizedResourceName - Verhalten (4)

Frage von emeriks zum Thema Windows Server ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

KVM

How to: Libvirt Port forwarding

(2)

Anleitung von fundave3 zum Thema KVM ...

Heiß diskutierte Inhalte
Router & Routing
über Vmware auf eine FritzBox mit IPv6 per VPN (17)

Frage von Zockervogel zum Thema Router & Routing ...

Basic
Programmierung von Windows Programmen (9)

Frage von Ghost108 zum Thema Basic ...

Voice over IP
VoIP und DECT an Fritz Accesspoint (7)

Frage von Katosix zum Thema Voice over IP ...