132749
02.06.2018
1292
3
0
Frage zu SET - FOR in Batch
Hallo,
ich habe mal wieder eine Frage!
Wann benutzt man eine Abfrage als SET oder FOR und macht es Sinn diese zu kombinieren und warum?
Kann ich nachfolgenden Befehl so ohne weiteres als Sprungmarke nutzen und wo bzw. wie setze ich das reg:32 richtig!
Wo liegt der Unterschied zu nachfolgenden Befehl?
Als letztes möchte ich mich bei Euch für die permanente Unterstützung und Problemlösung hier im Forum bedanken was sicherlich zu kurz kommt!
Gruß
kampen
ich habe mal wieder eine Frage!
Wann benutzt man eine Abfrage als SET oder FOR und macht es Sinn diese zu kombinieren und warum?
@echo off &setlocal
set "key=HKLM\SOFTWARE\myProgramm"
reg query "%key%" /v Version /reg:32 | findstr 2017 >nul 2>&1 || (
exit /b
)
@echo off &setlocal
set "key=HKLM\SOFTWARE\myProgramm"
set "value=Drive"
set "validdata=CDEF"
set "drive="
for /f "tokens=3" %%i in ('2^>nul reg query "%key%" /v "%value%" /reg:32 ^| findstr /reic:"\<[%validdata%]:*"') do set "drive=%%i"
if not defined drive (
exit /b
)
set "drive=%drive:~,1%:"
Start "" "%drive%\myProgramm\start.exe
ping -n 10 127.0.0.1 > NUL 2>&1
Kann ich nachfolgenden Befehl so ohne weiteres als Sprungmarke nutzen und wo bzw. wie setze ich das reg:32 richtig!
@echo
FOR /F "tokens=3 delims= " %%A IN ('REG QUERY "HKCU\Control Panel\International" /v sLanguage') DO SET Language=%%A
:%Language%
@echo
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKCU\Control Panel\International" /v sLanguage') DO SET Language=%%B
:%Language%
Als letztes möchte ich mich bei Euch für die permanente Unterstützung und Problemlösung hier im Forum bedanken was sicherlich zu kurz kommt!
Gruß
kampen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 375825
Url: https://administrator.de/contentid/375825
Ausgedruckt am: 19.03.2024 um 06:03 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @132749:
Hallo,
Moin moin .Hallo,
ich habe mal wieder eine Frage!
Wann benutzt man eine Abfrage als SET oder FOR und macht es Sinn diese zu kombinieren und warum?
Wann benutzt man eine Abfrage als SET oder FOR und macht es Sinn diese zu kombinieren und warum?
> @echo off &setlocal
>
> set "key=HKLM\SOFTWARE\myProgramm"
> reg query "%key%" /v Version /reg:32 | findstr 2017 >nul 2>&1 || (
>
> exit /b
> )
>
For Schleifen benutzt man primär dazu um den Inhalt von Befehlsausgaben oder Text weiterzuverarbeiten.
Kann ich nachfolgenden Befehl so ohne weiteres als Sprungmarke nutzen
und wo bzw. wie setze ich das reg:32 richtig!
Hier:> @echo
> FOR /F "tokens=3 delims= " %%A IN ('REG QUERY "HKCU\Control Panel\International" /v sLanguage') DO SET Language=%%A
>
> :%Language%
>
@echo off
> FOR /F "tokens=2* delims= " %%a IN ('REG QUERY "HKCU\Control Panel\International" /v sLanguage /reg:32') DO SET "Language=%%b"
Wo liegt der Unterschied zu nachfolgenden Befehl?
Der Unterschied ist der das es bei der ersten Variante Probleme gibt wenn im Wert Leerzeichen vorkommen können, dann wird nämlich nur das dritte Token übernommen und alles was folgt verworfen. Bei der zweiten Variante mit tokens=2* wird quasi das zweite Token genommen und der komplette Rest (*) der danach kommt einer weiteren Variablen zugewiesen, hier machen dann Leerzeichen nichts aus und werden mit übernommen. Da man hier das zweite Token ebenfalls einer Variablen zuweist (%%A) nimmt man dann beim Setzen der Variablen das %%B weil das ja dann unserem Registry-Wert entspricht den wir haben möchten und nicht das zweite Token (bspw. das REG_SZ in der Ausgabe).> @echo
> FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKCU\Control Panel\International" /v sLanguage') DO SET Language=%%B
> :%Language%
>
Als letztes möchte ich mich bei Euch für die permanente Unterstützung und Problemlösung hier im Forum bedanken was sicherlich zu kurz kommt!
Zitat von @132749:
Moin,
okay als Sprungmarke nicht verwertbar aber als "Platzhalter" könnte man das dann schon nutzen!?
Kommt drauf an was du damit meinst, du kannst mit der Variablen natürlich Sprungmarken anspringen, nur eben die Marke selber kann nicht aus einer Variablen bestehen.Moin,
okay als Sprungmarke nicht verwertbar aber als "Platzhalter" könnte man das dann schon nutzen!?
Die /reg:32 gehört dann immer ans Ende!?
Nein, muss halt nur innerhalb der einfachen Anführungszeichen in der Befehlskette stehen, ist ja klar wie sonst sollte die Batch den Parameter zum Befehl zuordnen ...FOR /F "tokens=3 delims= " %%A IN ('REG QUERY "HKCU\Control Panel\International" /v sLanguage / reg:32') DO SET Language=%%A
Nachtrag:
Wenn ich Dateien von A nach B verschiebe, kopiere, ect. habe ich die Möglichkeit mir das anzeigen zu lassen wie bei einem Fortschrittsbalken? Ich bin der Meinung, ich hätte das mal mit einem Pfeil >>>>>>>>>>> und einem Zähler gesehen!
--> Robocopy.Wenn ich Dateien von A nach B verschiebe, kopiere, ect. habe ich die Möglichkeit mir das anzeigen zu lassen wie bei einem Fortschrittsbalken? Ich bin der Meinung, ich hätte das mal mit einem Pfeil >>>>>>>>>>> und einem Zähler gesehen!