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, 4434 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 Server
gelöst Terminalserver .ini Datei unter C:Windows (8)

Frage von geocast zum Thema Windows Server ...

Batch & Shell
gelöst Powershell INI Tags auslesen (2)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Windows Server
Schlüssel - nicht Wert! - mit Gruppenrichtlinien löschen? (1)

Frage von MyApps2GO.de zum Thema Windows Server ...

Festplatten, SSD, Raid
gelöst Festplatten Case - Schlüssel (10)

Frage von Waishon zum Thema Festplatten, SSD, Raid ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (22)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...