프롬프트에서이 명령을 실행 한 이유가 확실하지 않으면 배치 파일에서만 setlocal을 호출 할 수 있습니까?
setlocal EnableDelayedExpansion & for /l %i in (1,1,3) do (set text=%i & echo Hello !text!)
예상되는 결과는 다음과 같습니다.
안녕하세요 1
안녕하세요 2
안녕하세요 3
업데이트 :
Windows 8.1을 사용하고 있습니다.
답변
문제는 답입니다. cmd
Windows NT에서 Microsoft의 명령 인터프리터를 분명히 사용하고 있습니다 . 그 명령 인터프리터는 setlocal
실제로 명령 스크립트로 호출 할 때 아무런 영향을 미치지 않습니다.
다른 명령 해석기 setlocal
는 명령 스크립트로 호출 할 수 있는지 여부, 중첩 여부 및 제어하려는 항목을 제어하는지 에 따라 다릅니다 .
OS / 2 버전 1 setlocal
의 Microsoft에서 원본 cmd
은 현재 드라이브, 디렉토리 및 환경을 저장했습니다. 명령 스크립트로는 효과가 없었습니다. 그리고 둥지하지 않았다. 보시다시피 지난 4 세기 동안이 명령은 다른 방향으로 확장되었습니다.
차이점이있는 한 가지 이유는 JP Software의 TCC가 복합 명령에서 변수 확장을 점진적으로 수행하고 수행하려는 작업을 수행하기 위해 지연된 변수 확장 트릭이 필요하지 않기 때문입니다. 이:
(1,1,3)에서 / l % i의 경우 (set text = % i & echo Hello % text %)
… 인쇄하려는 것을 인쇄합니다.
추가 자료
답변
대답은 매우 간단합니다!
(1,1,3)에서 / l % i의 경우 (call set text = % i & echo hello % text %)