Win10 Batch Skript: for F unterschlägt alle Zeilen bis auf die Letzte

Hallo,

Ich möchte Regestry-Werte auslesen und verarbeiten.
Dazu ein Batch Skript:


Die Ausgabe verschluckt immer alle Zeilen, ausser die Letzte:

Alle Drucker: HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F} und %b

Ohne Schleife auslesen:

HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}
HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}


Eigentlich müsste ja in "regkey" Diese Zeile stehen:
HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}

Was mache ich falsch?

Content-Key: 667638

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

Ausgedruckt am: 27.07.2021 um 07:07 Uhr

Mitglied: mbehrens
mbehrens 16.06.2021 um 13:27:24 Uhr
Goto Top
Zitat von @ausdrucker:

Ich möchte Regestry-Werte auslesen und verarbeiten.
Dazu ein Batch Skript:


> Die Ausgabe verschluckt immer alle Zeilen, ausser die Letzte:

Alle Drucker: HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F} und %b

Ohne Schleife auslesen:

HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}
HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}


Eigentlich müsste ja in "regkey" Diese Zeile stehen:
HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}

Was mache ich falsch?

Die falsche Tool für die Problemlösung verwendet ;-) face-wink

Die Klammersetzung scheint falsch, alternativ einfach ein Get-Printer in der PowerShell.
Mitglied: Disse1987
Disse1987 16.06.2021 um 14:28:24 Uhr
Goto Top
Bin kein Spezi in dem Bereich aber musst du nicht einfach den Befehl in eine Zeile schreiben? also das was in 3 4 5 steht in die 3!?

Skripte arbeiten doch Befehl für Befehl ab also Zeile für Zeile
Mitglied: ausdrucker
ausdrucker 16.06.2021 aktualisiert um 15:14:15 Uhr
Goto Top
Nein, die Klammern erweitern die Kommandos auf mehrere Zeilen.

Das klappt z.B.:


Ausgabe:
teil1
teil2


Nur arbeite ich da mit tokens und delims.
Aber was sind delims für Zeilenumbrüche?

Jedenfalls bessert sich nichts mit tokens:


delims kenne ich nicht für Zeilenende. Sollen die nicht automatisch sein, so wie für Leerzeichen?
Mitglied: TK1987
Lösung TK1987 16.06.2021 aktualisiert um 15:37:12 Uhr
Goto Top
Moin,

Zitat von @ausdrucker:
Was mache ich falsch?
Offen gestanden: So ziemlich alles (angefangen bei der Wahl der einer toten Skriptsprache).

Eigentlich müsste ja in "regkey" Diese Zeile stehen:
Nein. Mit einer For-Schleife liest man Daten Zeilenweise ein, somit enthält die Variable %%a...
... beim ersten Durchlauf: HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}
... beim zweiten Durchlauf: HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}

Daher: Du setzt die Variable %regkey% im ersten Durchlauf auf die 1. Zeile; und überschreibst diese dann bei jedem weiteren Durchlauf immer wieder mir der nächsten Zeile.
Logisch also, dass du dann als Ergebnis immer nur die letzte Ausgabe erhälst.

In Variable %%b wirst du darüber hinaus überhaupt nie einen Inhalt vorfinden - zum einen, weil du diese in den Optionen der For-Schleife nicht zugewiesen hast (Tokens) - zum anderen, weil du damit immer nur die aktuelle Zeile splitten würdest, ohne Trennzeichenangabe (Delims) automatisch beim Standardtrennzeichen Leerzeichen, welche in der Ausgabe jedoch nicht vorhanden sind.

Wie @mbehrens schon schrieb, heute nimmt man für sowas Powershell.

Gruß Thomas
Mitglied: erikro
erikro 16.06.2021 um 16:28:28 Uhr
Goto Top
Moin,

Zitat von @TK1987:
Wie @mbehrens schon schrieb, heute nimmt man für sowas Powershell.

Yupp. Da reicht nämlich ein einfaches:


und gut ist.

Liebe Grüße

Erik
Mitglied: ausdrucker
ausdrucker 16.06.2021 um 16:58:14 Uhr
Goto Top
Das mit dem mehrmals Durchlaufen kann nicht sein.

Dieser Code zeigt, dass die For Schleife nur genau einmal durchlaufen wird:


Ausgabe:

zaehler Initial: 1
zaehlerende: 2
Alle Drucker1: HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}
Alle Drucker2: HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}

Ohne Schleife auslesen:

HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}
HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}


Scheint so, dass nur die letzte Zeile verarbeitet wird.
Mit Powershell kenne ich mich noch nicht aus :( face-sad
Mitglied: TK1987
Lösung TK1987 16.06.2021 aktualisiert um 17:52:24 Uhr
Goto Top
Zitat von @ausdrucker:
Das mit dem mehrmals Durchlaufen kann nicht sein.
Und ob das so ist.
Dieser Code zeigt, dass die For Schleife nur genau einmal durchlaufen wird:
Nein, denn ein falscher code zeigt überhaupt nichts.
Ohne Variablenverzögerung kann das innerhalb einer For-Schleife nicht funktionieren. Entweder man macht es so:
oder du hättest auch einfach mal einen echo-Befehl innerhalb deiner For-Schleife einbauen können:

Macht doch nichts, du hast ja oben schon 2 Lösungsvorschläge in Powershell erhalten. Wenn du die Drucker mit Namen und Infos auflisten will, hilft dir @mbehrens Code weiter. Wenn du tatsächlich, wie mit deinem Batch-Versuch, die Registrierungsschlüssel aufgelistet haben willst, hilft dir der Code von @erikro weiter. Von mir aus auch noch in der Form, wie du es Ursprünglich haben wolltest, in einer Zeile:

Mitglied: ausdrucker
ausdrucker 16.06.2021 um 20:16:08 Uhr
Goto Top
Danke, das hat geholfen.
Hier nun die finale Lösung:


Die Ausgabe:

Alle Drucker1: HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}
Alle Drucker2: HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}

Ohne Schleife auslesen:

HKEY_CURRENT_USER\Printers\Defaults\{A97BF0FD-E3B5-4035-9A06-C11D30D5716D}
HKEY_CURRENT_USER\Printers\Defaults\{D830F131-672B-4659-9F5E-9BCC5B591E8F}


Problem gelöst! :) face-smile
Mitglied: ausdrucker
Lösung ausdrucker 19.06.2021 aktualisiert um 17:34:28 Uhr
Goto Top
Die Lösung oben war sehr speziell.
Hier noch eine generischere Lösung, falls es mal jemand braucht:



Hier die Ausgabe:

Variable 1 = "regkey1" = HKEY_CURRENT_USER\Printers\ConvertUserDevModesCount
Variable 2 = "regkey2" = OneNote REG_DWORD 0x1
Variable 3 = "regkey3" = Microsoft XPS Document Writer REG_DWORD 0x1
Variable 4 = "regkey4" = Microsoft Print to PDF REG_DWORD 0x1
Variable 5 = "regkey5" = Fax REG_DWORD 0x1
Variable 6 = "regkey6" = HP Officejet Pro L7400 Series REG_DWORD 0x1

Dein HP Drucker wurde gefunden in Zeile 6

Regestry-Wert ohne Schleife auslesen:

HKEY_CURRENT_USER\Printers\ConvertUserDevModesCount
OneNote REG_DWORD 0x1
Microsoft XPS Document Writer REG_DWORD 0x1
Microsoft Print to PDF REG_DWORD 0x1
Fax REG_DWORD 0x1
HP Officejet Pro L7400 Series REG_DWORD 0x1
$FriendlyName$ REG_DWORD 0x1
OneNote for Windows 10 REG_DWORD 0x1
PDF24 REG_DWORD 0x1
PDF24 Fax REG_DWORD 0x1
WinDisc REG_DWORD 0x1
USB001 REG_DWORD 0x1
hp officejet pro l7480 series REG_DWORD 0x1

Drücken Sie eine beliebige Taste . . .

Heiß diskutierte Beiträge
question
Zentrale Lösung für Antivirus, Patchmanagement, Monitoring in einem?Andre82msVor 1 TagFrageSicherheits-Tools24 Kommentare

Hallo Zusammen, ich suche schon seit längerem eine gute Lösung, welche ein gut funktionierendes Patchmanagement, Anti-Virenscanner mit EDR sowie ein Monitoring in einem Dashboard beinhaltet ...

question
Signatur-Programm gesuchtArchanVor 1 TagFrageOutlook & Mail20 Kommentare

Hi zusammen, vorab als Info: Wir haben eine Mischung aus Office365 und 2016, sowie einen Exchange 2016 Server. Ich bin nun auf der Suche nach ...

question
Mitarbeiter ab gewisser Uhrzeit am arbeiten hindern gelöst passy951Vor 15 StundenFrageWindows Netzwerk19 Kommentare

Guten Morgen zusammen, ich wurde gestern von unseren Betriebsrat gefragt ob es möglich ist ab z.B. 20 Uhr die Mitarbeiter daran zu hindern zu arbeiten. ...

question
Mikrotik vs. Unify - Warum mögt Ihr Unify nicht? gelöst tagol.deVor 1 TagFragePeripheriegeräte10 Kommentare

Hallo immer wieder lese ich, das hier auf Administrator.de Mikrotik bevorzugt wird. Aktuell habe ich zuhause 2 AP von Unify + Controller auf einem Rasberry ...

question
Wie lange kann ein PC in der Domain ohne Kontakt zur Domain betrieben werden?DaxAtDS9Vor 15 StundenFrageNetzwerkmanagement15 Kommentare

Hallo, bis vor einer Woche habe ich einen SBS2011 Server inkl. AD etc. in Betrieb gehabt. Nun habe ich ihn abgeschaltet und nutze einer der ...

question
Home-Office Laptop kann DNS nicht auflösenLubosNovyVor 1 TagFrageWindows Netzwerk15 Kommentare

Hallo zusammen, Situation: Manche Kolleginnen arbeiten im Home-Office und sind über Sophos SSL Client verbunden. Die Notebooks sind von mir vorbereitet, in die Domänen aufgenommen ...

question
Domänencontroller von Windows Server 2016 auf Windows Server 2019 migrierenEstefaniaVor 8 StundenFrageWindows Server24 Kommentare

Hi. Kann mir ein Admin bei folgendem Problem weiterhelfen !? Wir haben insgesamt 5 Domänencontroller, die auf einem Windows Server 2016 laufen. Nun ist es ...

report
Positive Erfahrung mit VodafoneitebobVor 1 TagErfahrungsberichtFlatrates3 Kommentare

Hallo zusammen, vieles, was ich im Beitrag Erfahrungsbericht Vodafone - Die endlose Vertragsänderung und in Kommentaren lese, deckt sich mit meinen persönlichen Erfahrungen mit Vodafone. ...