Korzystanie z wiersza polecenia systemu Windows XP CMD mogę poszerzyć dwukrotnie zmienną w następujący sposób:Jak poszerzyć zmienną powłoki CMD dwukrotnie (rekurencyjnie)
set AAA=BBB
set BBB=CCC
for /F "usebackq tokens=*" %i in (`echo %%AAA%%`) do echo %i
będzie echo CCC
. To znaczy. AAA
został rozszerzony na ciąg BBB
, a następnie zmienna BBB
została rozszerzona na CCC
.
To nie działa z poziomu skryptu wsadowego (tzn. Pliku .cmd). Zmiana %%AAA%%
na %%%AAA%%%
lubrównież nie działa.
Każdy pomysł, w jaki sposób mogę to osiągnąć z poziomu skryptu, a mianowicie, aby rozwinąć zmienną AAA do łańcucha znaków CCC?
Późno Edit
Odpowiedzi wysłane pracę dla mojej ograniczonej przykład jednak odpowiedź nie pokrętne nie działa w rzeczywistym przypadku. Oto przykład rozszerzonym (które nie działa), co ilustruje to, czego rzeczywiście próbuje zrobić:
setlocal enabledelayedexpansion
set LIST=BBB CCC DDD
set BBB=111
set CCC=222
set DDD=333
for %%i in (%LIST%) do (
for /F %%a in ('echo %%%i%') do echo !%%a!
)
Chciałbym zobaczyć
111
222
333
wyjście.
dinged bo ciebie są nadal w pliku wsadowym i nie używają powłoki powershell. ;) – Cheeso
Nie można używać PowerShell, jeszcze nie co najmniej. –
To nie jest Twoje oświadczenie * Odpowiedzi zamieszczone na stronie działają dla mojego zredukowanego przykładu, jednak niewerkowalna odpowiedź nie działa dla prawdziwego przypadku * w sprzeczności z Twoim komentarzem do postu * akf * * Dzięki, oba z nich rzeczywiście praca.*? –