2 ответов:
Вы можете включить отложенное расширение в командной строке с помощью команды
cmd /V:ONИз
cmd /?:/V:ON Enable delayed environment variable expansion using ! as the delimiter. For example, /V:ON would allow !var! to expand the variable var at execution time. The var syntax expands variables at input time, which is quite a different thing when inside of a FOR loop.
Узнайте на примере:
Copy&Pasteиз моего окна CMD:==>echo !os! %pp% !os! %pp% ==>cmd /E:ON /V:ON /K set "pp=yy" & set pp & echo !os! !pp! ==>echo !os! %pp% Windows_NT yy ==>exit Environment variable pp not defined !os! !pp! ==>cmd /E:ON /V:ON /K set "pp=yy" ^& set pp ^& echo !os! !pp! pp=yy Windows_NT yy ==>echo !os! %pp% Windows_NT yy ==>exit ==>echo !os! %pp% !os! %pp% ==>Пояснение:
echo !os! %pp%возвращает!os! %pp%отображение отложенного расширения отключено иppпеременная не определена в текущем CLI;cmd /E:ON /V:ON /K set "pp=yy" & set pp & echo !os! !pp!ничего не возвращает, новый экземпляр интерпретатора команд Windows имеет отложенное расширение включено (см.echo !os! %pp%Вывод);exitвозвращает результатset pp & echo !os! !pp!в Родительском экземпляре CLI:Environment variable pp not definedи!os! !pp!;cmd /E:ON /V:ON /K set "pp=yy" ^& set pp ^& echo !os! !pp!возвращаетpp=yyиWindows_NT yyв новом CLI экземпляр (обратите внимание, что все&экранированы^);echo !os! %pp%возвращаетWindows_NT yyв новом экземпляре CLI (он показывает отложенное расширение enabled иppпеременную defined в дочернем CLI);exitк родительскому экземпляру CLI;echo !os! %pp%возвращает!os! %pp%снова.
Comments