per batch Wert aus registry lesen und in bestimmte stelle einer datei schreiben
Hallo zusammen,
ich habe von Programierung im allgemeinen sehr wenig Ahnung. Projekt bedingt will/muss ich mich jetzt jedoch damit befassen.
Für die kurze Zeit bin, so denke ich schon recht weit gekommen. Jetzt allerdings benötige ich doch Hilfe.
Ich habe ein batch skript geschrieben welches bei unseren Usern defekte VPN Profile durch neue ersetzt.
Es gibt insgesamt 4 Profile, eins davon wird immer kopiert. Die anderen 3 werden abhängig vom Standort des Users kopiert ( EU, NA, AP ).
Wenn das Profil durch ein neues default Profil ersetzt wird, ist das Username Feld nicht ausgefüllt. Daher soll dem entsprechenden Profil der Username gleich mit übergeben werden.
Beide Werte ( Standort & Username ) liegen in der registry vor. Der erste Punkt mit dem Standort funktioniert soweit , der zweite, der mit dem Username allerdings nicht.
erster teil ( funktioniert ) :
(die variablen %FIX% & %Profiles% wurden vorher gesetzt)
for /f "skip=2 delims=,= tokens=8" %%i in ('reg query "HKLM\SOFTWARE\ICP" /v AD_OU ') do set AD_OU=%%i
IF "%AD_OU%"=="Europe" copy %FIX%\vpn_profil.pcf %Profiles%
wie gesagt das klappt soweit.
Nun möchte ich das diese "frischen" Dateien den Username aus der registry verpasst bekommen. Die .pcf Datei läßt sich im Notepad editieren.
Der gesuchte Eintrag findet sich in Zeile 12 und so dachte ich mir das ich den Username aus der registry hole und als variable setze :
for /f "skip=2 tokens=3" %i in ('reg query "HKLM\SOFTWARE\ICP" /v fmno_gra ') do set username=%i
weiter dachte ich mir was da oben klappt muss doch hier auch klappen :
for /f "skip=12 delims== tokens=1" %i in ( "%Profiles%\*.pcf" ) do echo Username=i%
geht aber nicht ....
Mein Problem ist das ich mir das alles so zusammen "gefrickelt" habe ohne das entsprechende Hintergrundwissen.
Die DOS Hilfe war bisher mein größter Helfer, jetzt bitte ich euch
ich habe von Programierung im allgemeinen sehr wenig Ahnung. Projekt bedingt will/muss ich mich jetzt jedoch damit befassen.
Für die kurze Zeit bin, so denke ich schon recht weit gekommen. Jetzt allerdings benötige ich doch Hilfe.
Ich habe ein batch skript geschrieben welches bei unseren Usern defekte VPN Profile durch neue ersetzt.
Es gibt insgesamt 4 Profile, eins davon wird immer kopiert. Die anderen 3 werden abhängig vom Standort des Users kopiert ( EU, NA, AP ).
Wenn das Profil durch ein neues default Profil ersetzt wird, ist das Username Feld nicht ausgefüllt. Daher soll dem entsprechenden Profil der Username gleich mit übergeben werden.
Beide Werte ( Standort & Username ) liegen in der registry vor. Der erste Punkt mit dem Standort funktioniert soweit , der zweite, der mit dem Username allerdings nicht.
erster teil ( funktioniert ) :
(die variablen %FIX% & %Profiles% wurden vorher gesetzt)
for /f "skip=2 delims=,= tokens=8" %%i in ('reg query "HKLM\SOFTWARE\ICP" /v AD_OU ') do set AD_OU=%%i
IF "%AD_OU%"=="Europe" copy %FIX%\vpn_profil.pcf %Profiles%
wie gesagt das klappt soweit.
Nun möchte ich das diese "frischen" Dateien den Username aus der registry verpasst bekommen. Die .pcf Datei läßt sich im Notepad editieren.
Der gesuchte Eintrag findet sich in Zeile 12 und so dachte ich mir das ich den Username aus der registry hole und als variable setze :
for /f "skip=2 tokens=3" %i in ('reg query "HKLM\SOFTWARE\ICP" /v fmno_gra ') do set username=%i
weiter dachte ich mir was da oben klappt muss doch hier auch klappen :
for /f "skip=12 delims== tokens=1" %i in ( "%Profiles%\*.pcf" ) do echo Username=i%
geht aber nicht ....
Mein Problem ist das ich mir das alles so zusammen "gefrickelt" habe ohne das entsprechende Hintergrundwissen.
Die DOS Hilfe war bisher mein größter Helfer, jetzt bitte ich euch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126020
Url: https://administrator.de/contentid/126020
Ausgedruckt am: 23.11.2024 um 08:11 Uhr
4 Kommentare
Neuester Kommentar
Servus,
wenn ich deine Zeilen richtig interpretiere:
und nachdem das kopiert wurde, soll ein Wert geändert werden?
nicht elegant, ujnd auch nicht selten...
Gruß
wenn ich deine Zeilen richtig interpretiere:
IF "%AD_OU%"=="Europe" copy %FIX%\vpn_profil.pcf %Profiles%
...hast du ein Original vpn_profil.pcf auf dem Server %fix%und nachdem das kopiert wurde, soll ein Wert geändert werden?
- Lösungsvorschlag:
- teile die originaldatei in zwei Teile Zeile -11 und ab Zeile 13
- kopiere (wie bisher) den ersten Teil
- schreibe via echo den gefundenen Wert dazu
- kopiere den Rest zusammen
for /f "skip=2 delims=,= tokens=8" %%i in ('reg query "HKLM\SOFTWARE\ICP" /v AD_OU ') do set AD_OU=%%i
IF "%AD_OU%"=="Europe" copy %FIX%\vpn_profil_1.pcf %Profiles%\vpn_profil.tmp
for /f "skip=2 tokens=3" %%i in ('reg query "HKLM\SOFTWARE\ICP" /v fmno_gra ') do echo Username=%%i >>%Profiles%\vpn_profil.tmp
copy %Profiles%\vpn_profil.tmp + %FIX%\vpn_profil_2 pcf %Profiles%\vpn_profil.pcf
nicht elegant, ujnd auch nicht selten...
Gruß