Fehlersuche - Falsche Aussgabe in txt

kkboy94
Goto Top
Hallo Forum,

ich habe letztens eine Batch geschrieben, welche einen Wert aus der Registry aussliest und ihn schön verpackt in eine txt speichert. Es sind auch noch andere Funktionen enthalten, wie z.B. eine Backup Funktion oder eine Wiederherstellmöglichkeit der gesicherten Daten.
Als erstes mal den Code der kompletten Datei:


Nun kommt bei der codkey.txt folgendes raus
In der Batch wird der Key auch nicht genannt.


Den Inhalt der Zeile 77 hat mir bastla schon per PN geschickt.
Die Variable scheint leer zu sein, was aber eigentlich nicht sein kann da die batch beim Ausführen nicht zu :enderror springt.

Könnt ihr den Fehler entdecken und mir helfen ihn zu beheben?
Danke schonmal


MfG Karsten

Content-Key: 144812

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

Ausgedruckt am: 05.07.2022 um 05:07 Uhr

Mitglied: tag123
tag123 14.06.2010 um 18:01:21 Uhr
Goto Top
Glaube Zeile 70.
Da wird der variable %codkey% nur ein " zugewiesen.
Mitglied: kkboy94
kkboy94 14.06.2010 um 18:03:20 Uhr
Goto Top
Danke für die Antwort, aber in dieser Zeile wird die Variable nur zurückgesetzt (bekommt einen leeren Wert) und wird ja nachher anderweitig wieder gesetzt.

MfG Karsten
Mitglied: Miyamoto
Miyamoto 14.06.2010 um 18:04:37 Uhr
Goto Top
Hi,
ich würde mal statt den % Zeichen das ! Zeichen verwenden.
Das könnte helfen.

Edit: nach dem du das erste mal die Variable initialisiert hast

Gruß Miyamoto
Mitglied: kkboy94
kkboy94 14.06.2010 um 18:10:30 Uhr
Goto Top
Du meinst:
Alle % mit ! austauschen?
Mitglied: masterofdisaster09
masterofdisaster09 14.06.2010 um 18:45:23 Uhr
Goto Top
Moin!
Öffne mal eine Dos-Box und probiere mit folgender Zeile rum:
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 4"
bzw.
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 4" /V codkey
Da muss dann als Ausgabe der Key genannt werden. Wenn nicht, ist schon die Abfrage nicht stimmig. Heisst der Eintrag für den Key in der Registry tatsächlich codkey?
Mitglied: tag123
tag123 14.06.2010 um 19:19:20 Uhr
Goto Top
probier mal statt:
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 4" /V codkey
dass:
REG QUERY "hklm\software\Activision\Call of Duty 4" /v codkey
Mitglied: Biber
Biber 14.06.2010 um 19:22:26 Uhr
Goto Top
Moin kkboy94,

nun ändere nicht überall gleichzeitig, weil ganz viele helfen wollen und alle ganz unterschiedliche Verdachtsmomente äußern...

In der Zeile 72 öffnest du ein "IF ( ... ) ELSE ( )" -Konstrukt, das rein optisch erst in Zeile 85 endet.
Für den Commandinterpreter CMD.exe ist es allerdings nach wie vor eine Befehlszeile.

Und da das Setzen einer Variable immer erst (für die CMD.exe) in der Folgezeile relevant wird, haben %codkey% und %key%,
die beide innerhalb einer Befehlszeile gesetzt werden und ausgelesen werden sollen, die falschen Werte.

Schau dir im Vergleich das IF-Konstrukt von Zeile 89-93 an... da klappt es, weil die innerhalb der Programmzeile gesetzte Variable erst nach dem Ende der Programmzeile wieder gelesen/verwendet wird.

--> also entweder "sauber" arbeiten == in einer Programmzeile die Variablen setzen, aber erst in der nächsten Programmzeile verwenden
--> oder aber mit "verzögerter Variablenauflösung", neudeutsch delayed expansion arbeiten.

Variante 1 ist meine Empfehlung in der Batch-Lernphase.

Da ich aber weiss, wie es 16jährige machen werden: EnableDelayedExpansion ist in der Hilfe zu SetLocal beschrieben.
Und dürfte auch über die Forumssuche ein paarmal gefunden werden.

Grüße
Biber
Mitglied: bastla
bastla 14.06.2010 um 19:31:10 Uhr
Goto Top
... wobei es ja genügen sollte, die Zeilen 71 - 74 (und die schließende Klammer in Zeile 85) durch die neue Zeile 71
zu ersetzen ...

(... und wenn Du schon dabei bist, entsorge auch gleich die Zeile 22 und alle weiteren sinnfreien %CD% ... )

Grüße
bastla

P.S.: Sorry - hatte vorhin wenig Zeit und daher nur einen flüchtigen Blick darauf geworfen ...
Mitglied: masterofdisaster09
masterofdisaster09 14.06.2010 um 19:31:14 Uhr
Goto Top
Ob du den Stammschlüssel ausschreibst oder die Kurzform nimmst, ist egal.
Mitglied: Biber
Biber 14.06.2010 um 19:47:18 Uhr
Goto Top
[OT]
Jepp, masterofdisaster,

Zitat von @masterofdisaster09:
Ob du den Stammschlüssel ausschreibst oder die Kurzform nimmst, ist egal.
Genau das wollte ich doch auch nur ausdrücken ....es kommt nicht auf die Länge, sondern auf die richtige Technik und das Timing an..
[OT}

Mitglied: kkboy94
kkboy94 15.06.2010 um 15:17:41 Uhr
Goto Top
Danke für die Hilfen. Ich werds bei Gelegnheit mal testen.

MfG Karsten
Mitglied: Biber
Biber 15.06.2010 um 15:40:17 Uhr
Goto Top
Moin kkboy94,

Zitat von @kkboy94:
Danke für die Hilfen. Ich werds bei Gelegnheit mal testen.

MfG Karsten

hab ich jezz' nicht verstanden...
Du hast hier gepostet, weil der oben gepostete Batch abraucht.... nicht funktioniert oder so keinerlei Wert hat.

Entsprechend dem Titel "Fehlersuche... " sind auch schnell und zahlreich Hilfewillige gekommen und haben sich des Problems angenommen.

Nun biegst du einen knappen Tag später um die Ecke und schreibst :"ich werd bei Gelegenheit ma' testen.." ?????

Gestern war es noch ein Problem - heute hab ich es schon fast ganz vergessen?

Grüße
Biber

[Edit 17:42h] @kkboy94 Vielen Dank für die schnelle Rückmeldung und Klarstellung! Ich wollte/sollte auch nicht gleich überreagieren... [/Edit]
Mitglied: kkboy94
kkboy94 15.06.2010 um 17:18:16 Uhr
Goto Top
Entschuldigung, ich hatte mich nicht eindeutig ausgedrückt. Ich habe damit gemeint, dass ich die Lösungen alle mal ausprobieren werde, und schauen werde, welche die Richtige ist/war.
Es hat sich herausgestellt, dass du mit deiner Idee richtig lagst, und bastla dann halt noch so freundlich war, mir direkt eine kürzer und vorgefertigte Variante zu geben.

Ich habe mir dann auch nochmal deine Tipps zu Herzen genommen, und aufgeräumt:

DANKE Nochmal allen die sich die Mühe geamcht haben, den Fehler zu finden.

MfG Karsten