Registryeintrag mittels Batch auslesen und in ein File schreiben
Hallo zusammen,
ich habe das Forum bereits durchforstet und einige Beiträge über dieses Thema gefunden, jedoch werde ich leider nicht daraus schlau.
Mein Problem im moment ist, dass ich Computernamen aus einem Textfile lesen soll und dann einen bestimmten Registriewert dieser Computer in einem Textfile ablegen soll.
Das mit dem Textfile hab ich hinbekommen, aber wie das mit der Registry gehen soll weiß ich noch nicht so ganz. Ich habe hier einige Beiträge mit Schleifen gelesen, aber da kam ich noch nicht wirklich klar damit.
Ziel:
Batch starten -> Rechner aus Textdatei auslesen -> Reg key dieses Rechners auslesen -> in Textfile schreiben und nächster Rechner.
Vielen dank schonmal für die Hinweise und Tipps
Gruß
Schlumpf
ich habe das Forum bereits durchforstet und einige Beiträge über dieses Thema gefunden, jedoch werde ich leider nicht daraus schlau.
Mein Problem im moment ist, dass ich Computernamen aus einem Textfile lesen soll und dann einen bestimmten Registriewert dieser Computer in einem Textfile ablegen soll.
Das mit dem Textfile hab ich hinbekommen, aber wie das mit der Registry gehen soll weiß ich noch nicht so ganz. Ich habe hier einige Beiträge mit Schleifen gelesen, aber da kam ich noch nicht wirklich klar damit.
Ziel:
Batch starten -> Rechner aus Textdatei auslesen -> Reg key dieses Rechners auslesen -> in Textfile schreiben und nächster Rechner.
Vielen dank schonmal für die Hinweise und Tipps
Gruß
Schlumpf
14 Antworten
- LÖSUNG BigWim schreibt am 05.10.2011 um 13:09:41 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 13:17:10 Uhr
- LÖSUNG 60730 schreibt am 05.10.2011 um 13:21:10 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 13:25:56 Uhr
- LÖSUNG BigWim schreibt am 05.10.2011 um 15:06:11 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 15:28:17 Uhr
- LÖSUNG BigWim schreibt am 05.10.2011 um 15:53:54 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 16:08:45 Uhr
- LÖSUNG 60730 schreibt am 05.10.2011 um 16:42:36 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 16:50:42 Uhr
- LÖSUNG 60730 schreibt am 05.10.2011 um 17:12:25 Uhr
- LÖSUNG ITSchlumpf schreibt am 06.10.2011 um 08:45:50 Uhr
- LÖSUNG BigWim schreibt am 06.10.2011 um 15:18:44 Uhr
- LÖSUNG ITSchlumpf schreibt am 06.10.2011 um 15:39:03 Uhr
- LÖSUNG 60730 schreibt am 05.10.2011 um 17:12:25 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 16:50:42 Uhr
- LÖSUNG 60730 schreibt am 05.10.2011 um 16:42:36 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 16:08:45 Uhr
- LÖSUNG BigWim schreibt am 05.10.2011 um 15:53:54 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 15:28:17 Uhr
- LÖSUNG BigWim schreibt am 05.10.2011 um 15:06:11 Uhr
- LÖSUNG ITSchlumpf schreibt am 05.10.2011 um 13:25:56 Uhr
LÖSUNG 05.10.2011 um 13:09 Uhr
LÖSUNG 05.10.2011 um 13:17 Uhr
Hi,
danke für die Antwort.
Aber wie kann ich das machen, dass er mir nur einen Schlüssel ausliest?
da schreibt er nur Schrott in das logfile. Hast mir da vll nen ansatz?
Gruß
Schlumpf
P.s. ja das mit dem Textdateien auslesen haben wir schon geübt :D
danke für die Antwort.
Aber wie kann ich das machen, dass er mir nur einen Schlüssel ausliest?
reg query "\\nb235\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common" /f /v key >> \\nb235\D$\log.txt
Gruß
Schlumpf
P.s. ja das mit dem Textdateien auslesen haben wir schon geübt :D
LÖSUNG 05.10.2011 um 13:21 Uhr
moinsen,
Ich habe...... Die nummer mit dem Ross und dem Reiter so langsam satt
Nur mal so ein klitschkokleiner Tipp.
Reg query kann nur HKLM oder HKU auslesen, steckt der gesuchte Wert in einem anderen Ast, braucht es eine andere Lösung.
Gruß
edit
/f wie force oder /f wie fucking manual oder /f wie falsch?
/edit
Ich habe...... Die nummer mit dem Ross und dem Reiter so langsam satt
Nur mal so ein klitschkokleiner Tipp.
Reg query kann nur HKLM oder HKU auslesen, steckt der gesuchte Wert in einem anderen Ast, braucht es eine andere Lösung.
Gruß
edit
reg query "\\nb235\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common" /f /v key
/f wie force oder /f wie fucking manual oder /f wie falsch?
/edit
LÖSUNG 05.10.2011 um 13:25 Uhr
LÖSUNG 05.10.2011 um 15:06 Uhr
Moin ITSchlumpf,
Wie kommst Du zu diesen Parametern?
Wenn ich es so probiere, funktioniert es:
naja aber der Wert steckt doch in HKLM also stimmt doch der Ansatz
Der Ansatz ja.oder sehe ich das falsch?
Erst heute wurde mir wieder vor Augen geführt, wie ernst unser einer die Hilfetexte nehmen sollte!Wie kommst Du zu diesen Parametern?
Wenn ich es so probiere, funktioniert es:
reg query hklm\SOFTWARE\bplan-solutions\xxx\xxxx /s
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\bplan-solutions\xxx\xxx
Benutzer REG_SZ Benutzername:
Kennwort REG_SZ Kennwort:
KS-Applikation REG_SZ xxx App
HKEY_LOCAL_MACHINE\SOFTWARE\bplan-solutions\xxx\xxx\LastPos
HKEY_LOCAL_MACHINE\SOFTWARE\bplan-solutions\xxx\xxx\Trace
TraceDir REG_SZ C:\Programme\bplan-solutions\TRACE
TraceLevel REG_SZ 0
LÖSUNG 05.10.2011 um 15:28 Uhr
Da hast du recht BigWim. Mit dem Befehl
werden die Daten auch schön in das Textfile geschrieben.
Sobald ich aber den Befehl aus dem Batchfile starte, funktioniert das nicht mehr. Dann bleibt der Befehl hängen und macht garnichts mehr. Er lässt sich dann auch nicht mehr beenden.
Zudem noch etwas anderes. Ich brauche nicht den ganzen Schlüsselwert sondern nur den Wert des Schlüssel da es sich um einen Lizenzschlüssel handelt. Hier müsste ich ja eig eine For Schleife bauen, welche mir mittels token den 3. Abschnitt rausnimmt und in das Textfile schreibt.
Wie diese Schleife genau aussehen muss weiß ich jedoch noch nicht genau. Aber das bekomme ich vll mit hilfe von euch oder mittels tutorial ausm Forum bestimmt auch noch hin
Also falls dir grad was einfällt, wie ich das erste problem mit dem Textfile lösen kann, wäre mir schonmal sehr geholfen.
Gruß
Schlumpf
reg query "\\nb235\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common" /s >> \\nb235\D$\sql.txt
Sobald ich aber den Befehl aus dem Batchfile starte, funktioniert das nicht mehr. Dann bleibt der Befehl hängen und macht garnichts mehr. Er lässt sich dann auch nicht mehr beenden.
Zudem noch etwas anderes. Ich brauche nicht den ganzen Schlüsselwert sondern nur den Wert des Schlüssel da es sich um einen Lizenzschlüssel handelt. Hier müsste ich ja eig eine For Schleife bauen, welche mir mittels token den 3. Abschnitt rausnimmt und in das Textfile schreibt.
Wie diese Schleife genau aussehen muss weiß ich jedoch noch nicht genau. Aber das bekomme ich vll mit hilfe von euch oder mittels tutorial ausm Forum bestimmt auch noch hin
Also falls dir grad was einfällt, wie ich das erste problem mit dem Textfile lösen kann, wäre mir schonmal sehr geholfen.
Gruß
Schlumpf
LÖSUNG 05.10.2011 um 15:53 Uhr
Sobald ich aber den Befehl aus dem Batchfile starte, funktioniert das nicht mehr. Dann bleibt der Befehl hängen und macht
garnichts mehr. Er lässt sich dann auch nicht mehr beenden.
Dann poste doch mal Dein aktuelles Script.garnichts mehr. Er lässt sich dann auch nicht mehr beenden.
Zudem noch etwas anderes. Ich brauche nicht den ganzen Schlüsselwert sondern nur den Wert des Schlüssel da es sich um
einen Lizenzschlüssel handelt.
Dann warst Du mit dem /v schon auf dem richtigen Weg. Wir kommst Du auf das /f?einen Lizenzschlüssel handelt.
Lass es mal weg!
Also falls dir grad was einfällt, wie ich das erste problem mit dem Textfile lösen kann, wäre mir schonmal sehr
geholfen.
Es bleibt dabei. Bei Fehlersuche hat das echo off nix zu suchen.geholfen.
a) findest Du die Stelle, die hängt - die meist eine andere ist, als vermutet (zumindest bei mir so)
b) siehst Du die Aufrufparameter. Vielleicht ist da ja noch was im argen ....
Gruß
Markus
LÖSUNG 05.10.2011 um 16:08 Uhr
Also da ich noch am rumprobieren bin, hab ich noch nicht viel code geschrieben war heute auch noch etwas beschäftigt.
Mehr ist es momentan eig auch noch nicht. Mein erstes Ziel wäre eig erstmal den inhalt vom key auszulesen und dann später mittels schleife nur den lizenzschlüssel auszulesen.
Wenn ich den Code so laufen lass, bekomme ich den Fehler "Maximale Recursionstiefe für SetLocal erreicht". Ohne SetLocal steht das batch fenster einfach fest und macht nichts mehr.
Gruß
[Edit] Im Textfile steht wie in einer Schleife nur der Befehlscode immer und immer wieder. [/Edit]
Title RegEdit
setLocal
reg query "\\nb235\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common" /v key >> \\nb235\D$\sql.txt
pause
Wenn ich den Code so laufen lass, bekomme ich den Fehler "Maximale Recursionstiefe für SetLocal erreicht". Ohne SetLocal steht das batch fenster einfach fest und macht nichts mehr.
Gruß
[Edit] Im Textfile steht wie in einer Schleife nur der Befehlscode immer und immer wieder. [/Edit]
LÖSUNG 05.10.2011 um 16:42 Uhr
Zitat von @ITSchlumpf:
[Edit] Im Textfile steht wie in einer Schleife nur der Befehlscode immer und immer wieder. [/Edit]
[Edit] Im Textfile steht wie in einer Schleife nur der Befehlscode immer und immer wieder. [/Edit]
Lass mir radden - die Bätch nennt sich reg.bat
- Setlocalrunde ist auch etwas flüssiger als flüssig.
- Warum piepst du das auch noch nach d$ auf die gleiche Kiste?
So sieht der Kram bei mir aus, da läuft
reg query "\\antonnymisiert\HKLM\SOFTWARE\itschlumpf\123\abc dfg\common" /v key>>c:\script\test\schlumpf.ini
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\itschlumpf\123\abc dfg\common
key REG_SZ ichweissnichtwasderhat
LÖSUNG 05.10.2011 um 16:50 Uhr
Omg Kopf -> Tisch -.-
Jo Reg.cmd kann ja net funktionieren bin zu blöd -.-
Danke Timo
Naja weil ich es einfach testen wollte, da brauch ich das Textfile ja nicht auf nen anderen Rechner schieben.
So jetzt noch die Schleife dann passt es.
Danke
Gruß
Schlumpf
[Edit] Zum Thema schleife.
Die Schleife hab ich hier im Forum gefunden, zu einem ähnlichen Problem. Ich weiß zwar net viel über Schleifen in Batch files aber ich glaube das sollte fast richtig sein ^^
Falls nicht, lasse mich gerne von etwas besserem beleren.
[/Edit]
Jo Reg.cmd kann ja net funktionieren bin zu blöd -.-
Danke Timo
Naja weil ich es einfach testen wollte, da brauch ich das Textfile ja nicht auf nen anderen Rechner schieben.
So jetzt noch die Schleife dann passt es.
Danke
Gruß
Schlumpf
[Edit] Zum Thema schleife.
for /f "tokens=3" %%i in ('reg query "HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "key"') do echo %%i>D:\schlumpf.txt
Falls nicht, lasse mich gerne von etwas besserem beleren.
[/Edit]
LÖSUNG 05.10.2011 um 17:12 Uhr
for /f "tokens=3" %%i in ('reg query "HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "key"') do echo %%i>D:\schlumpf.txt
Die Schleife hab ich hier im Forum gefunden, zu einem ähnlichen Problem. Ich weiß zwar net viel über Schleifen in
Batch files aber ich glaube das sollte fast richtig sein ^^
Falls nicht, lasse mich gerne von etwas besserem beleren.
[/Edit]
Batch files aber ich glaube das sollte fast richtig sein ^^
Falls nicht, lasse mich gerne von etwas besserem beleren.
[/Edit]
Diese Schleife sorgt nur dafür, dass nur der gewünschte Inhalt/Wert ausgegeben wird...
for %%a in (rechner.txt) do call :bastla %%a
goto :eof
::bastla
Ping -n 1 %1 |find "TTL" && for /f "tokens=3" %%i in ('reg query "\\%1\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "key"') do (
if not "%%i"=="" echo %1,%%i>D:\schlumpf.csv
:eof
LÖSUNG 06.10.2011 um 08:45 Uhr
Danke für die Schleife. Sieht auch recht gut aus, aber leider schreibt er mir noch keinen Wert in die %%i Variable.
Mit dem "find" nach Ping kann ich da alles eingeben was in der Ping Ausgabe vorkommt? Weil wenn ich den Ping befehl vorne dran lass, überspringt er mir die for-Schleife.
Naja werd mal noch ein wenig dran rumbasteln. Muss ja irgendwie funktionieren.
Danke Timo und Markus.
Gruß
Schlumpf
[Edit]
Problem ist gelöst. Die Klammer am Schluss bei der if - Abfrage muss weg, dann klappt es.
Mit dem "find" nach Ping kann ich da alles eingeben was in der Ping Ausgabe vorkommt? Weil wenn ich den Ping befehl vorne dran lass, überspringt er mir die for-Schleife.
Naja werd mal noch ein wenig dran rumbasteln. Muss ja irgendwie funktionieren.
Danke Timo und Markus.
Gruß
Schlumpf
Title RegEdit
SET pc=rechner.txt
for /f %%a in (%pc%) do call :bastla %%a
goto :eof
:bastla
Set eeepc=%1
REM ping -n 2 %eeepc% |find "Empfangen = 2" &&
pause
for /f "tokens=3" %%i in ('reg query "\\%eeepc%\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "key"') do ( if not "%%i"=="" echo %eeepc%, %%i > D:\schlumpf.csv )
echo %eeepc%, %%i
pause
:eof
Problem ist gelöst. Die Klammer am Schluss bei der if - Abfrage muss weg, dann klappt es.
Title RegEdit
SetLocal
SET pc=rechner.txt
for /f %%a in (%pc%) do call :bastla %%a
goto :eof
:bastla
Set eeepc=%1
ping -n 2 %eeepc% |find "Empfangen = 2" && for /f "tokens=3" %%i in ('reg query "\\%eeepc%\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "Key"') do if not "%%i"=="" echo %eeepc%, %%i > D:\schlumpf.csv
:eof
LÖSUNG 06.10.2011 um 15:18 Uhr