WinFuture-Forum.de: Batch: For Schleife Reg Query - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch: For Schleife Reg Query


#1 Mitglied ist offline   Shamall 

  • Gruppe: Verbannt
  • Beiträge: 1.022
  • Beigetreten: 04. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:28357 Bremen
  • Interessen:[TYFOO]:. senseless

  geschrieben 29. November 2006 - 14:46

mahlzeit. ganz einfach... warum geht das nicht:
FOR %%i IN (reg query "HKEY_CURRENT_USER\Software\Shareaza\Shareaza" /v Path) DO set shareaza=%%i


stefan

Dieser Beitrag wurde von mo bearbeitet: 30. November 2006 - 11:14

0

Anzeige



#2 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 29. November 2006 - 14:54

Weil der Syntax nicht stimmt?

for /f "delims=" %%I in ('befehl') do something
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#3 Mitglied ist offline   Shamall 

  • Gruppe: Verbannt
  • Beiträge: 1.022
  • Beigetreten: 04. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:28357 Bremen
  • Interessen:[TYFOO]:. senseless

geschrieben 29. November 2006 - 14:57

ahja.....
was dieses delims sein soll kann ich auch aus der hilfe (for /?) nicht entnehmen. wie dem auch sei es klappt trotzdem nicht

"Die Datei "reg" kann nicht gefunden werden."
und wenn ich den befehl ind er klammer in ' setze dann schreibt er zwar den wert in die variable. aber nur quatsch set shareaza= Path R
G_SZ C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Stefan\Prog
amme\Shareaza

ist doch assig. vll kann mir jemand meinen befehl einfach richtig machen, und es mir dann erklären.
weis de3r teufel was das soll. wäre nett wenn mir mal jemaqnd dieses delims erklärt

Dieser Beitrag wurde von Shamall bearbeitet: 29. November 2006 - 15:04

0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 29. November 2006 - 15:05

Wie wär's, wenn du jetzt endlich mal den reg-query-Befehl in Hochkommata setzt? EDIT: Ja, genau so.

Zu dem delims: das steht auch ganz eindeutig da. Jede Zeile wird an Delimitern zerlegt und als einzelne Tokens ausgegeben. Per Default ist Whitespace der einzige Delimiter, mit "delims=" sorgt man dafür, daß es gar keine Delimiter gibt und das Ergebnis eben nicht an Whitespaces zerstückelt wird. EDIT: Ja, genau deshalb sollte man die Ausgabe korrekt zerstückeln!

Also, was du vermutlich möchtest:

set shareaza=
FOR /f "tokens=3 skip=2" %%i IN ('reg query "HKEY_CURRENT_USER\Software\Shareaza\Shareaza" /v Path') DO (set shareaza=%%i & set shareaza=!shareaza:~33!)


Und dann bitte Delayed Expansion einschalten, ja?

Dieser Beitrag wurde von Rika bearbeitet: 29. November 2006 - 15:17

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#5 Mitglied ist offline   Shamall 

  • Gruppe: Verbannt
  • Beiträge: 1.022
  • Beigetreten: 04. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:28357 Bremen
  • Interessen:[TYFOO]:. senseless

geschrieben 29. November 2006 - 15:10

Ich kann nur ahnen was du meinst da mir die Ausdrücke Delimitern, Tokens und Whitespace leider auch nicht klar sind. Aber ich kanns mir denken. So jetzt dazu:
Ich habs jetzt so
FOR /f "delims=" %%i IN ('reg query "HKEY_CURRENT_USER\Software\Shareaza\Shareaza" /v Path') DO set shareaza=%%i


Ausgabe:
C:\Dokumente und Einstellungen\Administrator\Desktop>set shareaza= Path REG_SZ C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Stefan\Programme\Shareaza

das entspricht ja aber nicht i m geringsten dem , was ich erwarte. nämlich nur den pfad in der variable
0

#6 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 29. November 2006 - 15:20

Siehe oben - du musst natürlich auch das Ergebnis geeignet zerlegen. Ja, "reg query" ist genau deswegen richtig scheiße.

Deshalb ist "reg export" in eine temporäre Datei manchmal klüger, weil man da wenigstens eine sehr einfache Zerlegung hat.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#7 Mitglied ist offline   Shamall 

  • Gruppe: Verbannt
  • Beiträge: 1.022
  • Beigetreten: 04. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:28357 Bremen
  • Interessen:[TYFOO]:. senseless

geschrieben 29. November 2006 - 15:36

Das bekomm ich im selben ordner ne datei mit dem namen "path" ind er der gesamte registrierungsschlüssel + unterordner drin ist? kannst du mir vll mal meinen ausgangsbefehl so umschreibendass er funktioniert udn ich mir das dann angucken kann?
0

#8 Mitglied ist offline   Shamall 

  • Gruppe: Verbannt
  • Beiträge: 1.022
  • Beigetreten: 04. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:28357 Bremen
  • Interessen:[TYFOO]:. senseless

geschrieben 29. November 2006 - 19:02

ok ich habs jetzt aufgegeben!!
dafür versuche ich das, was ebenfalls nicht klappt:
REG ADD /f "HKCU\Software\Microsoft\Internet Explorer\Main" /v "Window Title" /t REG_SZ /d Test


kann mir da vll jemand weiterhelfen?
0

#9 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 29. November 2006 - 20:30

Schon wieder Syntax... das "/f" muss irgendwann hinter dem Schlüsselpfad kommen...

Zu deinem ursprünglichen Problem:
set datei=%temp%\%random%%random%.tmp
reg export HKCU\Schlüssel %datei%
set x=
set shareaza=
for /f "delims= skip=3" %%i in ('type %datei%') do (set x=%%i
set x=!x:"Schlüsselwert"=!
if NOT "%%i"=="!x!" set shareaza=!x!)
del %datei%


Wie üblich nur mit Delayed Expansion, weil man nicht direkt auf %%i arbeiten kann.

Dieser Beitrag wurde von Rika bearbeitet: 29. November 2006 - 20:31

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#10 Mitglied ist offline   Shamall 

  • Gruppe: Verbannt
  • Beiträge: 1.022
  • Beigetreten: 04. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:28357 Bremen
  • Interessen:[TYFOO]:. senseless

geschrieben 29. November 2006 - 22:11

Sagenhaft, endlich klappt das mit dem IE-Titel.

Zum Verständnis:
1. Wieso löscht du vor dem eigentl. VGorgang die Werte der Variablen x udn Shareaza?
2. Würdest du mir bitte noch einmal diese beiden Zeilen erklären: (vor allem die Ausrufezeichen)
set x=!x:"Schlüsselwert"=!
if NOT "%%i"=="!x!" set shareaza=!x!)


Damit wäre alles geklärt. Vielen Dank, Stefan
Ich melde mich nochmal bei weiteren Fragen.
0

#11 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 29. November 2006 - 23:03

Shamall sagte:

1. Wieso löscht du vor dem eigentl. VGorgang die Werte der Variablen x udn Shareaza?

Die Variablen werden initialisiert, nicht "gelöscht". Man könnte sie theoretisch auch mit Null oder einem anderen Wert initialisieren.

Shamall sagte:

2. Würdest du mir bitte noch einmal diese beiden Zeilen erklären: (vor allem die Ausrufezeichen)

Hat damit zu tun, dass die Variablen in FOR-Schleifen anders deklariert werden müssen, wenn DelayedExpansion aktiviert ist.
"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#12 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 30. November 2006 - 00:48

Zitat

set x=!x:"Schlüsselwert"=!

Ersetze alle Vorkommen von "Schlüsselwert"= durch nichts. Siehe Syntax von "set".

Zitat

if NOT "%%i"=="!x!" set shareaza=!x!)

Wenn nach dem Ersetzen die Zeile anders aussieht als vorher, dann war es die Zeile mit dem Schlüsselwert und wird daher der Ausgabe zugewiesen.

Die Ausrufezeichen sind wie %, nur daß die Variable erst dann ausgewertet wird, wenn sie tatsächlich verwendet wird. Unter "set /?" wird das schön erläutert.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0