timowh
Goto Top

Daten aus txt sequenziel in eine Batchvariable schreiben

Hey@ all,

leider habe ich in der Forumssuche nichts passendes gefunden. Wie muss der Quellcode aussehen damit ich aus einer Textdatei in der mehrere Textwerte untereinander stehen jede Zeile nacheinander auslesen kann?

Das Script soll beim ersten durchlauf in die Variable PNr den "Wert1" beim zweiten durchlauf "Wert2" und beim dritten durchlauf "Wert3" usw. schreiben?

set "NrDatei=.\textdatei.txt"
set /p PNr=<"%NrDatei%"

textdatei.txt:
Wert1
Wert2
Wert3
Wert4
Wert5


Frage2
Ist es möglich aus der registry ein DWORD Wert in Dezimal auszulesen und um eins zu erhöhen? Mit reg query bekomme ich es nicht hin den Dezimalwert abzufragen er zeigt immer nur den Hexadezimal Wert. Oder gibt es eine Möglichkeit einen Hexadezimalwert um eins zu erhöhen?

Vielen Dank für Eure Hilfe!

Content-Key: 111318

Url: https://administrator.de/contentid/111318

Printed on: April 25, 2024 at 21:04 o'clock

Member: miniversum
miniversum Mar 13, 2009 at 11:38:13 (UTC)
Goto Top
Zu Frage 1: Das geht mit dem For-Befehl:
FOR /F "delims=" %%i in (Datei.txt) do set PNr=%%i
zu Frage 2:
Habs zwar nicht ausprobiert aber schau mal in der Hilfe zum Set Befehl, genauer bei der Option /a. Dort kan man auch mit HEX Werten rechnen.
Ansonsten müßtest du die Hexwerte halt in der batch in dezimale umrechnen.
Member: TimoWH
TimoWH Mar 13, 2009 at 12:33:55 (UTC)
Goto Top
Hallo miniversum,

danke für Deine Hilfe. Auslesen tut er mit die Datei nun. Aber wie muss ich die schleife schreiben damit er mir pro durchgang nur eine variable füllt die ich verwenden kann? Hier mal der Ablauf des Scripts wie es sein soll:

Script startet
Wert1 aus Datei log.txt wird in variable PNr geschrieben
Variable PNr wird verwendet um einträge in die Registry zu schreiben
Script springt wieder zum Anfang der Schleife
Wert2 aus Datei log.txt wird in variable PNr geschrieben
Variable PNr wird verwendet um einträge in die Registry zu schreiben
Script springt wieder zum Anfang der Schleife
Wert3 aus Datei log.txt wird in variable PNr geschrieben
Variable PNr wird verwendet um einträge in die Registry zu schreiben
usw.

Das Script müsste dann im Prinzip auch erkennen wann keine Werte mehr in der Datei vorhanden sind. Also müsste nach Wert 5 die Schleife zu Ende sein. Ich hoffe Ihr könnt mir helfen.
Member: miniversum
miniversum Mar 13, 2009 at 17:07:47 (UTC)
Goto Top
Da brauchst dude Variable dan eigentlich nicht weil du das %%i dan statt dessennehmen kannst:
FOR /F "delims=" %%i in (Datei.txt) do (
echo hier der Befehl der %%i in die Registry schreibt
echo hier noch weitere Befehle die %%i in die Registry schreibt
)
Die Schleife verarbeitet dann so jede Zeile bis zum Ende der datei.
Member: TimoWH
TimoWH Mar 16, 2009 at 08:23:00 (UTC)
Goto Top
Super, vielen Dank für Eure Hilfe. Klappt auch alles soweit. Nur ein Problem habe ich noch. Wie schaffe ich es in einer Schleife zwei Dateien auslesen zu lassen?

Ich habe zwei Dateien mit Werten.

Datei1.txt (Wert1, Wert2, Wert3)
Datei2.txt (eins, zwei, drei)

Beim ersten durchgang soll er "Wert1" aus Datei1.txt in Variable %A% und "eins" aus Datei2.txt in Variable %B% schreiben. Dann soll er mir ein registry Wert erzeugen:

reg add HKLM\SOFTWARE\POPcon\POP3\%A% /v Server /d %B%

Nach dem erzeugen soll er Wert2 und zwei auslesen und zuweisen.

Ist das überhaupt möglich?
Member: miniversum
miniversum Mar 16, 2009 at 13:41:18 (UTC)
Goto Top
Klar geht das.
Versuchs mal so (ungetestet):
@echo off
set "Datei1=Datei1.txt"  
set "Datei2=Datei2.txt"  
FOR /F "tokens=1* delims=:" %%i in ('findstr /N .* "%Datei1%"') do (  
FOR /F "tokens=1* delims=:" %%a in ('findstr /N .* "%Datei2%"^|findstr /B "%%i:"') do (  
ECHO reg add HKLM\SOFTWARE\POPcon\POP3\%%j /v Server /d %%b
)
)
Das ECHO steht zum testen drin. So wird angezeigt was wirklich geschieht. Past das so kannst dud as ECHO entfernen.