Variable per Batch auslesen und in Registry schreiben
Hallo,
ich versuche gerade einen Batch zuerstellen der mir gewisse Werte ausliest und als Variable in die Registry schreibt.
Das ganze funktioniert auch ganz gut außer in einem Pfad kommt eine Klammer vor. (zumindest denke ich dass das die Ursache ist)
Hier im Forum habe ich schon einige Beispiele gefunden wie man Sonderzeichen Maskiert aber ich komme trotzdem nicht weiter und hoffe auf eure Hilfe.
Ziel ist es den Installationspfad von unterschiedlichen Outlook-Versionen auszulesen und in eine Variable zu verarbeiten, damit man auf mehreren PCs mit den gleichen Befehlen arbeiten kann.
Hier ein Auszug meines Batchs
Das Ergebnis ist:
Richtig wäre:
Danke für eure Hilfe
Lg
Zendara
ich versuche gerade einen Batch zuerstellen der mir gewisse Werte ausliest und als Variable in die Registry schreibt.
Das ganze funktioniert auch ganz gut außer in einem Pfad kommt eine Klammer vor. (zumindest denke ich dass das die Ursache ist)
Hier im Forum habe ich schon einige Beispiele gefunden wie man Sonderzeichen Maskiert aber ich komme trotzdem nicht weiter und hoffe auf eure Hilfe.
Ziel ist es den Installationspfad von unterschiedlichen Outlook-Versionen auszulesen und in eine Variable zu verarbeiten, damit man auf mehreren PCs mit den gleichen Befehlen arbeiten kann.
Hier ein Auszug meines Batchs
@echo off
:install_path
for /f "tokens=2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\OUTLOOK.EXE" /v "Path"') do set "Outlook_install_path=%%j"
echo %Outlook_install_path%
:UserID
for /f "delims=" %%a in ('reg query HKEY_USERS ^|findstr "S-1-5-21-" ^|findstr /v "_Cl"') do set "UserID=%%a"
set UserID=%UserID:~11,50%
echo UserID: %UserID% & set "var_name=UserID" & set "var_value=%UserID%" & call :_add_systemvar
if defined Outlook_install_path echo Outlook_install_path: %Outlook_install_path% & set "var_name=Outlook_install_path" & set "var_value=%Outlook_install_path%" & call :_add_systemvar
:_add_systemvar
:: set "var_value=%var_value:(=^(%"
:: set "var_value=%var_value:)=^)%"
:: set "var_value=%var_value:(=^^^(%"
:: set "var_value=%var_value:)=^^^)%"
:: set "var_value=%var_value:"=%"
echo.
echo %var_value%
echo.
echo reg add HKCU\Environment /f /v "%var_name%" /d "%var_value%"
echo.
echo UserID: %UserID%
echo.
pause
REM Schlüsselname HKEY_CURRENT_USER\Environment
reg add HKCU\Environment /v "%var_name%_test1" /d "%var_value%" /f
reg add HKCU\Environment /f /v "%var_name%_test2" /d "%var_value%"
REM
echo ende
pause
Das Ergebnis ist:
C:\Program Files (x86)\Microsoft Office\Root\Office16" /f
bzw.
C:\Program Files (x86)\Microsoft Office\Root\Office16"
Richtig wäre:
C:\Program Files (x86)\Microsoft Office\Root\Office16
Danke für eure Hilfe
Lg
Zendara
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 334283
Url: https://administrator.de/forum/variable-per-batch-auslesen-und-in-registry-schreiben-334283.html
Ausgedruckt am: 22.12.2024 um 22:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo Zendara,
auch wenn Du Dein Problem schon selbst gelöst hast (und das dankenswerterweise nicht für Dich behalten hast), möchte ich dennoch etwas anmerken.
...schon eine zusatzliche Aktion, aber manuell muss sie nicht sein:
oder
importiert die Regdatei ohne weiteres Zutun.
Alternativ zu "
(Setzt eine permanente Umgebungsvariable für den CurrentUser)
[HKEY_CURRENT_USER\Environment]
(Setzt eine permanente Umgebungsvariable für die Machine)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Setx kann noch mehr als nur Umgebungsvariablen setzen,
Gruß Frank
auch wenn Du Dein Problem schon selbst gelöst hast (und das dankenswerterweise nicht für Dich behalten hast), möchte ich dennoch etwas anmerken.
Zitat von @Zendara:
Eine weitere Möglichkeit ist es eine Registrydatei zu erstellen und diese dann auszuführen.
Der Nachteil ist, dass der Batch eine zusätzliche manuelle Aktion benötigt was bei einer Automatisierung nervt.
Eine weitere Möglichkeit ist es eine Registrydatei zu erstellen und diese dann auszuführen.
Der Nachteil ist, dass der Batch eine zusätzliche manuelle Aktion benötigt was bei einer Automatisierung nervt.
...schon eine zusatzliche Aktion, aber manuell muss sie nicht sein:
regedit.exe /s %reg%
oder
regedit.exe /s "D:\Test_folder\var.reg"
importiert die Regdatei ohne weiteres Zutun.
Alternativ zu "
reg.exe add...
" und "regedit.exe /s...
" gibt es noch "setx.exe...
".setx variable wert
(Setzt eine permanente Umgebungsvariable für den CurrentUser)
[HKEY_CURRENT_USER\Environment]
setx variable wert /m
(Setzt eine permanente Umgebungsvariable für die Machine)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Setx kann noch mehr als nur Umgebungsvariablen setzen,
setx /?
bringt mehr Infos.Gruß Frank