Eigenen Pfad und Pfadvariablen (%APPDATA% etc) in Registydatei schreiben
Hallo liebe Administrator-User,
ich habe nun schon so manch einen Beitrag aus der Suchfunktion gelesen, bin aber nicht wirklich fündig geworden. Sollte ich etwas übersehen haben, bitte ich das zu entschuldigen.
Nun zur Problematik:
Ich bastle mir sehr gerne kleine Tools portable. Dabei werden durch einen Loader (compilierte .bat) alle benötigten Registryeinträge geschrieben, Dateien kopiert und so weiter.
Jetzt kommt es immer mal wieder vor das ein Tool den Pfad zur .exe oder einer .ini haben möchte. Da das Tool ja portable sein soll müssen diese Pfadangaben dem jeweiligen Rechner (Speicherort der Portable) angepasst werden.
Auch wenn das jetzt angeführte Beispiel definitiv nicht geht, verdeutlicht es eventuell was ich durch eine .bat realisieren möchte.
Das bräuchte ich (wenn es gehen würde):
HKLM_SOFTWARE_Beispieltool
Name: Settings Wert: %WINDIR%\Programme\Toolordner\settings.ini
Rauskommen sollte dann eine Registrydatei mit dem Inhalt:
HKLM_SOFTWARE_Beispieltool
Name: Settings Wert: C:\Programme\Toolordner\settings.ini
Da Variable ja in Regfiles nicht funktionieren brauche ich also eine .bat die mir diese Regfiles mit passenden Pfadangaben zusammenbaut und schreibt.
Die .bat sollte alle gängigen (set) Variablen inklusive des aktuellen eigenen Pfades auslesen können und in eigenen Variablen verarbeiten können.
Ich müsste also die Möglichkeit haben in der .bat den Key anzugeben in den der Pfad (per Variable) geschrieben wird.
Frei nach dem Motto:
Schreibe in den Key HKLM_SOFTWARE_Beispieltool den Namen "Settings" mit dem Wert der Variable "%Windir%\Programme\Toolordner\settings.ini" also in unserem Beispiel den Wert: C:\Programme\Toolordner\settings.ini (oder was in dem Fall dann halt die Windowsplatte ist).
Das ganze halt via cmd/.bat
In Hoffnung auf Denkansätze...
Grüße Soidberg
ich habe nun schon so manch einen Beitrag aus der Suchfunktion gelesen, bin aber nicht wirklich fündig geworden. Sollte ich etwas übersehen haben, bitte ich das zu entschuldigen.
Nun zur Problematik:
Ich bastle mir sehr gerne kleine Tools portable. Dabei werden durch einen Loader (compilierte .bat) alle benötigten Registryeinträge geschrieben, Dateien kopiert und so weiter.
Jetzt kommt es immer mal wieder vor das ein Tool den Pfad zur .exe oder einer .ini haben möchte. Da das Tool ja portable sein soll müssen diese Pfadangaben dem jeweiligen Rechner (Speicherort der Portable) angepasst werden.
Auch wenn das jetzt angeführte Beispiel definitiv nicht geht, verdeutlicht es eventuell was ich durch eine .bat realisieren möchte.
Das bräuchte ich (wenn es gehen würde):
HKLM_SOFTWARE_Beispieltool
Name: Settings Wert: %WINDIR%\Programme\Toolordner\settings.ini
Rauskommen sollte dann eine Registrydatei mit dem Inhalt:
HKLM_SOFTWARE_Beispieltool
Name: Settings Wert: C:\Programme\Toolordner\settings.ini
Da Variable ja in Regfiles nicht funktionieren brauche ich also eine .bat die mir diese Regfiles mit passenden Pfadangaben zusammenbaut und schreibt.
Die .bat sollte alle gängigen (set) Variablen inklusive des aktuellen eigenen Pfades auslesen können und in eigenen Variablen verarbeiten können.
Ich müsste also die Möglichkeit haben in der .bat den Key anzugeben in den der Pfad (per Variable) geschrieben wird.
Frei nach dem Motto:
Schreibe in den Key HKLM_SOFTWARE_Beispieltool den Namen "Settings" mit dem Wert der Variable "%Windir%\Programme\Toolordner\settings.ini" also in unserem Beispiel den Wert: C:\Programme\Toolordner\settings.ini (oder was in dem Fall dann halt die Windowsplatte ist).
Das ganze halt via cmd/.bat
In Hoffnung auf Denkansätze...
Grüße Soidberg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53865
Url: https://administrator.de/contentid/53865
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
8 Kommentare
Neuester Kommentar
Moin Soidberg,
sorry, dass ich eben Deinen Thread so vorschnell geschlossen hatte...
Du kannst den String "nachbehandeln", d.h. alle einfachen durch doppelte Backslashes ersetzen.
Demo am CMD-Prompt:
Im Batch ohne Änderungen genauso übernehmen.
Gruss
Biber
sorry, dass ich eben Deinen Thread so vorschnell geschlossen hatte...
Du kannst den String "nachbehandeln", d.h. alle einfachen durch doppelte Backslashes ersetzen.
Demo am CMD-Prompt:
(=17:13:05 D:\temp=)
> set "value=%Windir%\Programme\Toolordner\settings.ini"
(=17:13:11 D:\temp=)
>set "value=%value:\=\\%"
(=17:13:24 D:\temp=)
>set value
value=C:\\WINDOWS\\Programme\\Toolordner\\settings.ini
Im Batch ohne Änderungen genauso übernehmen.
Gruss
Biber
Okay, Soidberg,
nochmal geordneter:
die Wechseln/ersetze-Funktion sieht etwas strange aus beim CMD-Interpreter.
Die hat die Syntax "Set variableX=%variableX:alterStr=neuerString%".
Bedeutet: nimm den Wert der in %-Zeichen eingeschlossenen Variablen , aber ersetze den altenString durch den neuenString.
In Deinem Fall alle einfachen "\" durch doppelte ("\\").
Im Batch:
That's all.
Biber
nochmal geordneter:
die Wechseln/ersetze-Funktion sieht etwas strange aus beim CMD-Interpreter.
Die hat die Syntax "Set variableX=%variableX:alterStr=neuerString%".
Bedeutet: nimm den Wert der in %-Zeichen eingeschlossenen Variablen , aber ersetze den altenString durch den neuenString.
In Deinem Fall alle einfachen "\" durch doppelte ("\\").
Im Batch:
@echo off & setlocal
...
set "value=%Windir%\Programme\Toolordner\settings.ini"
REM Nach der bei Dir vorhandenen Zeile eine neue Zeile:
set "value=%value:\=\\%"
...
That's all.
Biber