Batch Findstr mit Sonderzeichen?

Manaplayer

Cadet 4th Year
Registriert
Juni 2017
Beiträge
92
Hallöchen Leute
Beim suchen im Internet bin ich daraus nicht wirklich schlau geworden wie das funktionieren soll:
Ein Script soll in einer Reg-Datei die Zeile woanders reinschreiben, mit eben allen Sonderzeichen (Exakt so geschrieben) -

"*FlowControl"="3"

Nur komme ich damit nicht weiter wegen den Sonderzeichen.
Wenn er die Zeile gefunden hätte wo das drinsteht, würde er das mit echo einzeln in eine andere Datei übertragen (Damit hab ich kein Problem)
Hat jemand eine Idee?
 
Kapiert hab ich es immer noch nicht - wenn es ein Sonderzeichen sein soll was gefunden werden soll, muss ein '
danach dran?

Originaltext:"*FlowControl"="3"

Versuch: findstr "'*"FlowControl"'='"'3"'

Was mache ich verkehrt? Wenn mir jemand es einmal so hinschreibt wie es auszusehen hat, werde ich das viel besser lernen können.
 
Zuletzt bearbeitet:
Deine Informationslage ist nur äusserst dünn. Du sagst nämlich rein gar nichts zur Scriptsprache, mit der Du arbeitest. Ausserdem wurde Dir in Post #2 der Hinweis gegeben, dass Anführungszeichen in Batches einfach nur gedoppelt werden müssen, damit sie ausgegeben werden.
 
Hallöchen und danke daß doch noch jemand antwortet :)
Bei dem Script geht es darum, daß bestimmte Schlüssel aus der Registry gesichert werden -
Sicher würde ich daraus eine ganze .reg - Datei machen, aber es dürfen nur bestimmte Werte hinterher gesichert sein. Das Problem ist einfach nur, daß genau diese besonderen Werte diese Sonderzeichen haben und ich nicht weiß wie man sie verarbeitet.
Alle Schlüssel die mit dem "*" anfangen.
Mein Plan war es erstmal das gesamte in eine -reg - Datei zu machen, und dann per "Findstr" die Werte zu Filtern und in eine fertige Datei zu erstellen.
 

Anhänge

  • Zwischenablage01.jpg
    Zwischenablage01.jpg
    100,9 KB · Aufrufe: 262
Du musst das Sternchen, das Windows als Wildcard interpretiert, maskieren damit es eben als normales Zeichen interpretiert wird. Das hatte man Dir oben schon gesagt. Probiers also mit der Angabe ^*, damit der Stern als normales Zeichen funktioniert.
 
Ich hatte da schonmal was mit dem ^-Zeichen gemacht... Ich werde es nochmal versuchen wenn ich die Zeit hab.
Danke schonmal :)
 
Hallöchen
Ich hab ein anderes seltsames gefunden warum es nicht funktioniert:
Das Script soll die einzelnen nur wichtigen Werte aus der Registry-Datei auslesen und in eine neue zusammenfassen. Bisher nur mit einem Wert zum Start versucht.

echo off
chcp 1252
for /f "tokens=1" %%a in ('reg query HKLM\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318} /s /f PCI\VEN_1969 ^|findstr HKEY') do (set regschlüssel=%%a)
reg export %regschlüssel% Z:\DATEN\test.txt
echo Windows Registry Editor Version 5.00 >>Z:\DATEN\fertig.reg
echo. >>Z:\DATEN\fertig.reg
for /f %%b in ('findstr FlowControl Z:\DATEN\test.txt') do (echo %%b >>Z:\DATEN\fertig.reg)

Die Datei "test.txt" ist der korrekt ausgelesene Registryschlüssel.
Wenn die Datei aber per Script erstellt wurde, findet der Befehl "findstr" das "FlowControl" nicht.
Schreibe ich die Datei aber selber, findet er die Zeile - Auch mit allen Sonderzeichen.

Warum kann er seine eigene Datei nicht lesen? o.O
 
Auch mal nicht-druckbare Zeichen, wie Zeilenumbrüche angeschaut? Könnte auch noch mit der Text-Kodierung zu tun haben. Welche haben die beiden Dateien denn jeweils?
 
Ich glaub ich hab es geschafft :)
Die Problem vorhin war, daß ich nur das vom Script erstellte Registry-Backup 1:1 in eine andere Datei umkopiert hatte, dann ging es. Nun hab ich es einfach mal mit "find" statt "findstr" probiert - da geht es auch mit dem vom Script selbst erstellten Backup:

echo off
chcp 1252
for /f "tokens=1" %%a in ('reg query HKLM\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318} /s /f PCI\VEN_1969 ^|findstr HKEY') do (set regschlüssel=%%a)
reg export %regschlüssel% Z:\DATEN\test.txt
echo Windows Registry Editor Version 5.00 >>Z:\DATEN\fertig.reg
echo. >>Z:\DATEN\fertig.reg
echo [%regschlüssel%] >>Z:\DATEN\fertig.reg
for /f "skip=2" %%b in ('find """*FlowControl""" Z:\DATEN\test.txt') do (echo %%b >>Z:\DATEN\fertig.reg)

Ergebnis wie es aussehen sollte (kommen natürlich noch später mehr Werte dazu):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0011]
"*FlowControl"="3"
 
Nun kommt das nächste Problem mit den Sonderzeichen...
Es geht um eine Einstellungsdatei, die umgestellt werden soll.
Der erste Wert ist

Profile=3

und soll in Profile=0 geändert werden. Mit diesem Script läuft dabei aber was schief:

@Echo off &setlocal
set "search=Profile=3"
set "replace=Profile=0"
set "textfile=C:\Users\Darkplayer\Desktop\ThrottleStop\ThrottleStop.ini"
set "newfile=Z:\DATEN\ThrottleStop.ini"
(for /f "delims=" %%i in ('findstr "^" "%textfile%"') do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"
type "%newfile%"

Aus
Profile=3 wird dann

3=Profile=0=3

und ändert zusätzlich noch andere Werte die etwas mit "Profile" zu tun haben.
Hat jemand eine Idee was hier falsch ist?
 
Zurück
Oben