-webu-
Goto Top

Bei XP-CMD sind keine VAR-Abfragen innerhalb von Klammern möglich?

set VAR=aussen
echo VAR-Inhalt ausserhalb der Klammern = %VAR%

echo (
IF 1==1 (
set VAR=innen
echo VAR-Inhalt innererhalb der Klammern = %VAR%
)
echo )

echo VAR-Inhalt ausserhalb der Klammern = %VAR%

pause & Exit

DIe Variable VAR bekommt innerhalb des Klammerteiles zwar einen neuen Inhalt, aber dieser ist innerhalb dieses Klammerteiles leider (noch) nicht abfragbar, sondern erst (wieder) außerhalb der Klammern. Somit gilt scheinbar innerhalb von Klammerteilen, daß zwar Umdefinierungen, aber noch keine Abfragen auf diese neuen Inhalte möglich sind.

Das ist sehr blöd, wenn man innerhalb von Klammerteilen mehr tun will, z. B. auf eine Abfrage reagieren will:

set USB_Drive=X:\
if exist *.SNA (
  dir *.SNA
  set jn=j
  set /p jn=Obige SNA-Dateien nach %USB_Drive% verschieben? ENTER=%jn% 
  echo jn=%jn%
  if "%jn%"=="j" goto :SNA_Move
)
pause & exit

:SNA_Move
echo SNA_Move

pause & exit

Gibt es einen workaround, daß man auch schon innerhalb von Klammerteilen auf veränderte Variableninhalte reagieren kann?

Dies sind einfache Beispiele oben und es geht auch nur um die Darstellung des Problems der Inhaltsabfrage.

Content-Key: 133720

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

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: bastla
bastla 18.01.2010 um 14:36:41 Uhr
Goto Top
Hallo -WeBu-!

Über die Suche findest Du sicher eine Menge zum Thema "delayedExpansion" - für Dein Beispiel würde das (ungetestet) so gehen:
@echo off & setlocal enabledelayedexpansion
set USB_Drive=X:\ 
if exist *.SNA ( 
  dir *.SNA 
  set "jn=j"  
  set /p jn=Obige SNA-Dateien nach %USB_Drive% verschieben? ENTER=!jn! 
  set jn
  if /i "!jn!"=="j" goto :SNA_Move   
) 

pause & goto :eof

:SNA_Move 
echo SNA_Move 
pause & goto :eof
Grüße
bastla
Mitglied: -WeBu-
-WeBu- 18.01.2010 um 15:49:28 Uhr
Goto Top
Danke, bastla, das war es!

Ich habe früher viel in bash gemacht, da ist EnableDelayedExpansion Standard und ich habe früher sehr viel mit dem COMMAND.COM von W9x gemacht und da war EnableDelayedExpansion noch unmöglich, bzw, nicht nötig.

Jetzt freunde ich mich langsam mit den erweiterten Möglichkeiten der CMD.EXE ab XP an und diese lassen es überhaupt erst sinnvoll erscheinen, mit der CLI mal etwas mehr zu tun.

Gibt es eine gutes Tutorial zur CMD.EXE auf deutsch? Die Original-Hilfe von Windows ist deshalb wenig hilfreich, weil sie sehr wenig Beispiele enthält, die meist mehr sagen würden, als tausend (Erläuterungs)worte!
Mitglied: bastla
bastla 18.01.2010 um 15:57:44 Uhr
Goto Top
Hallo -WeBu-!
Beispiele ... die meist mehr sagen würden, als tausend (Erläuterungs)worte!
findest Du hier eigentlich in Hülle und Fülle - hinsichtlich Tutorials kann ich Dir speziell Bibers Workshops ans Herz legen ...

Grüße
bastla