ws2003user
Goto Top

Per Batch Regedit Wert auslesen und als Dateinname verwenden

Hallo Administrator Gemeinde!

Nach einer Suche von ca. 3 Stunden hoffe ich nun hier Hilfe zu bekommen.

Bin auf viele Lösungsansätze gestoßen die haupsächlich auf set & for basieren aber alle nicht funktionieren bzw. mein Problem nicht lösen.

Möchte einen REG_SZ Wert aus dem Registrierungseditor auslesen und diesen als Dateinamen verwenden.

Das Batchskript sollte folgendermaßen arbeiten:

Wert in *.txt bzw. *.bat importieren zu kopierende Datei umbenennen und unter einen anderen Pfad speichern.

Mein Problem besteht darin daß ich bis jetzt nur mehrere Werte aus dem Registrierungseditor in ein *.txt importiert bekomme und auch keine Lösung gefunden habe diesen besagten Wert aus eine bestimmten Zeile des Dokuments auszulesen und als Dateiname zu verwenden.

Befehle wie xcopy usw. sind mir bekannt nur mit for & set habe ich so meine schwierigkeiten.

Währe sehr dankbar wenn mir da jemand ein gutes beispiel oder vielleicht sogar die Lösung aufzeigen könnte !

MFG WS2003User

Content-Key: 141892

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

Printed on: April 19, 2024 at 11:04 o'clock

Mitglied: 77559
77559 May 01, 2010 at 20:37:11 (UTC)
Goto Top
Hallo,

solange du so wenig konkret bleibst, kann man as auch selbst nur tun, der Aufbau einer For /f Schleife hängt halt von den exakten Randbedingungen ab.
Meistens ist ab Win XP die Arbeit mit Reg.exe einer Exportdatei aus Regedit vorzuziehen.
Gib mal, ggfs neutralisierte aber im Schlüssel und Daten vergleichbare, Daten an.

Gruß
LotPings

Edit: Hier ein einfacher neutraler Batch der bei Values ohne Leerzeichen allgemein funktionieren sollte:

:: GetRegKey.cmd :::::::::::::::::::::::::::::::::::::::::
@Echo off
SET Key="HKEY_CURRENT_USER\Software\Skype\Phone"  
Set VAL=SkypePath
FOR /F "Tokens=2*" %%A IN (  
  'Reg Query %Key% /V %Val% ^|Find /I "%Val%"'  
    ) DO Set "Data=%%B"  
Echo Key=%Key%
Echo %Val%=%Data%
goto :Eof
Member: WS2003User
WS2003User May 01, 2010 at 21:22:33 (UTC)
Goto Top
Nabend,

nun gut ich versuche es mal etwas besser zu beschreiben.

Also ich möchte eine bestimmte Zeichenfolgen unter HKEY_CURRENT_USER\Control Panel\Desktop als Dateinamen verwenden.

Diese exportiere ich nun in die Test.txt mit dem Befehl: Regedit /e c:\test.txt "HKEY_CURRENT_USER\Control Panel\Desktop" .
Die eig. Zeichenfolge finde nun in der Zeile 39 allerdings sieht es folgerndermaßen aus:

"ConvertedWallpaper"="W:\\Daten\\%username%\\Eigene Bilder\\100_1187.JPG"

Und nun möchte ich für die zu kopierende Datei nur den Namen: 100_1187.jpg bzw. nur 100_1187 daraus extrahieren und als Dateinamen
beim kopieren verwenden.

Edit: Das Beispiel hat mich schon etwas weiter geholfen aber aber mein Ziel ist noch nedd erreicht..

Danke schon mal im vorraus für die schnellen antworten.

MFG WS2003User
Member: bastla
bastla May 01, 2010 at 21:35:57 (UTC)
Goto Top
Hallo WS2003User und willkommen im Forum!

Sollte dann mit Zerlegung des Pfades etwa so gehen:
for /f "tokens=2*" %%i in ('reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v "ConvertedWallpaper"') do set "Name=%%~nj"
Grüße
bastla
Mitglied: 77559
77559 May 01, 2010 at 22:05:21 (UTC)
Goto Top
Hallo bastla, auch noch wach?

Ja so ein 1-Zeiler ist schneller face-wink

Hier was mit didaktischer Erweiterung:
@Echo off
SET Key="HKEY_CURRENT_USER\Control Panel\Desktop"  
Set Val=Wallpaper
FOR /F "Tokens=2*" %%A IN (  
  'Reg Query %Key% /V %Val% ^|Find /I "%Val%"'  
) DO if exist "%%B" (  
  Echo FullName : %%~fB
  Echo Laufwerk : %%~dB
  Echo Pfad     : %%~pB
  Echo Name     : %%~nB
  Echo Extension: %%~xB
  Echo ShortName: %%~sB
  Echo Attribute: %%~aB
  Echo DatumZeit: %%~tB
  Echo Groesse  : %%~zB
)
Member: bastla
bastla May 02, 2010 at 07:17:25 (UTC)
Goto Top
@77559
Ja so ein 1-Zeiler ist schneller face-wink
Sorry - ich wusste nicht, ob/dass Du noch "an Board" warst, drum habe ich das mal (ganz ohne edukativen Mehrwert face-wink) zu finalisieren versucht ...

Grüße
bastla
Member: WS2003User
WS2003User May 02, 2010 at 11:11:24 (UTC)
Goto Top
Hallo Gemeinde,

erstmal ein großes dankeschön für die schnellen Antworten an euch beide !

Hatte mir das ganze nicht so einfach vorgestellt ! face-surprise

Werde mich jetzt mal bemühen die FOR Funktion anhand der Beispiele zu verstehen da sich doch eine Menge damit realisieren lässt und dann das komplette
Batchskript mit einer Beschreibung meinens Problems mal posten.


Mit freundlichen Grüßen:

WS2003User