이것은 사소한 질문처럼 보이지만 이에 대한 우아한 해결책을 찾지 못했습니다.
환경 변수에 할당 된 단어 목록이 있습니다 A
. 환경 변수에 할당 된 새 단어 목록을 얻기 위해 b
문자열 값이 단어 목록의 각 단어와 연결되어야하는 또 다른 변수 가 있습니다 .A
C
이것은 지금까지 가지고있는 코드입니다.
@echo off
set A=test batch
set b=ing
for %%a in (%A%) do (
set C=%%a%b%
)
echo %C%
Pause
명령 줄 echo %C%
이 출력되어야 testing batching
하지만이 코드를 사용한 출력은 단지 batching
.
변수 b
에 A
할당 된 새 단어 목록을 얻기 위해 변수의 단어 목록에서 각 단어에 변수의 문자열 값을 추가하는 방법은 C
무엇입니까?
명령 프롬프트 창 에서 실행할 때 명령 SET 출력에 대한 도움말은 지연된 환경 변수 확장 을 사용하는시기와 방법에 대한 문제의 코드와 유사한 IF 및 FOR 예제 에 대해 설명합니다 .set /?
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "A=test batch"
set "b=ing"
set "C="
for %%I in (%A%) do set "C=!C! %%I%b%"
rem Remove the space character at beginning.
set "C=%C:~1%"
echo %C%
endlocal
pause
!
위의 코드에서 모든 문자열은 지연된 확장 환경 변수 참조의 시작 / 끝으로 해석 set "b=ing!"
되어 네 번째 줄에서 사용 하거나 set "A=!test! batch"
세 번째 줄에서 사용하면 더 나빠질 수 있으므로 잘못된 처리가 발생 합니다.
지연된 환경 변수 확장의 사용을 피하는 또 다른 솔루션이 있으며 그 이유는 하나 이상의 느낌표가 포함 된 문자열에서도 작동합니다.
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "A=test batch"
set "b=ing"
set "C="
for %%I in (%A%) do call set "C=%%C%% %%I%b%"
rem Remove the space character at beginning.
set "C=%C:~1%"
echo %C%
endlocal
pause
환경 변수 C
로 참조되는 %%
결과 양쪽에 대한 명령의 실행 전에 다음에 Windows 명령 프로세서에 의해 처리 될 명령 행 FOR :
for %I in (test batch) do call set "C=%C% %Iing"
명령은 CALL의 하나 개 이상의 처리 결과 set "C=%C% %Iing"
명령의 실행 전에 SET가 있는 %C%
환경 변수의 현재 값에 의해 대체된다 C
.
또한보십시오:
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다