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, 4423 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Router & Routing
AVM entweicht geheimer FritzBox-Schlüssel (5)

Link von mikrotik zum Thema Router & Routing ...

Exchange Server
Powershell Abwesenheitsnotiz für Gruppe setzen (3)

Frage von 124611 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...