kkboy94
Goto Top

Fehlersuche - Falsche Aussgabe in txt

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

Printed on: February 1, 2023 at 03:02 o'clock

Member: tag123
tag123 Jun 14, 2010 at 16:01:21 (UTC)
Goto Top
Glaube Zeile 70.
Da wird der variable %codkey% nur ein " zugewiesen.
Member: kkboy94
kkboy94 Jun 14, 2010 at 16:03:20 (UTC)
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
Member: Miyamoto
Miyamoto Jun 14, 2010 at 16:04:37 (UTC)
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
Member: kkboy94
kkboy94 Jun 14, 2010 at 16:10:30 (UTC)
Goto Top
Du meinst:
Alle % mit ! austauschen?
Member: masterofdisaster09
masterofdisaster09 Jun 14, 2010 at 16:45:23 (UTC)
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?
Member: tag123
tag123 Jun 14, 2010 at 17:19:20 (UTC)
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
Member: Biber
Biber Jun 14, 2010 at 17:22:26 (UTC)
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
Member: bastla
bastla Jun 14, 2010 at 17:31:10 (UTC)
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 ...
Member: masterofdisaster09
masterofdisaster09 Jun 14, 2010 at 17:31:14 (UTC)
Goto Top
Ob du den Stammschlüssel ausschreibst oder die Kurzform nimmst, ist egal.
Member: Biber
Biber Jun 14, 2010 at 17:47:18 (UTC)
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}

Member: kkboy94
kkboy94 Jun 15, 2010 at 13:17:41 (UTC)
Goto Top
Danke für die Hilfen. Ich werds bei Gelegnheit mal testen.

MfG Karsten
Member: Biber
Biber Jun 15, 2010 at 13:40:17 (UTC)
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]
Member: kkboy94
kkboy94 Jun 15, 2010 at 15:18:16 (UTC)
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