Warum ist die verzögerte Erweiterung in einer batch-Datei funktioniert nicht in diesem Fall?

Dieser code

@echo off
setlocal EnableDelayedExpansion

set myvar=first
set first=second

echo myvar:!myvar!
set myvar=!myvar!
echo myvar:!myvar!

gibt

myvar:first
myvar:first

unter Windows Vista SP2.

Die Ausgabe, die ich erwartet hatte ist

myvar:first
myvar:second

Warum der Unterschied und wie Sie die gewünschte Wirkung?

  • Das problem ist, dass set myvar=!myvar! erweitert, um set myvar=first legen Sie es mit dem gleichen Inhalt, und dann Fragen Sie echo myvar:!myvar! den Inhalt von myvar
  • Gut, Sie sind völlig richtig. Wie könnte ich verpasst haben dies... Könnten Sie bitte geben Sie diese als Antwort (evtl. mit Zusatz von zusätzliche Informationen, die Sie nützlich finden)?
Schreibe einen Kommentar