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