스크립트를 테스트 할 때 일괄 처리를 사용하여 문자열에서 문자를 추출하려고 할 때이 문제가 발생했습니다. 간단한 예제로 단순화했습니다. t.txt
에는 단어 hello
만 있습니다.지연된 확장 제한을 사용하여 문자열 분할
@echo off
setlocal enabledelayedexpansion
set a=0
set b=1
for /f %%a in (t.txt) do (
set x=%%a
echo !x:~!a!,!b!!
set /a x+=1
)
pause >nul
문제는 지연 확장을 사용하여 액세스 할 필요가 x
변수는, 그리고 나는 루프를 통해 a
및 b
의 값을 업데이트하고 있기 때문에이 또한 지연 확장을 사용하여 액세스 할 필요가있다.
그들은 모두 지연 확장을 필요로하는 문자열을 분할 변수 a
및 b
을 사용하려고하지만, !
마르크의 순서는 내가 의도 한 방식으로 해석되지 않음을 의미 할 때!
CMD는 내부 명령을 먼저 확장하는 대신 !x:~!
, !,!
및 !!
으로 명령을 확장합니다. 분명히 %
도 사용할 수 없습니다.
이 문제를 해결할 수있는 유일한 방법은 루프에없는 외부 함수를 호출하는 것이므로 %
을 사용할 수 있습니다.
@echo off
setlocal enabledelayedexpansion
set a=0
set b=1
set v=
for /f %%a in (t.txt) do (
set x=%%a
call :RETURN x
set /a x+=1
)
pause >nul
:RETURN
set v=%1
echo %v:~!a!,!b!%
I가 필요하거나,이 단지 제한 I가 call
을 사용해야합니다 얼마나 내 명령을 구문 분석 할 수 cmd를 가져 오는 방법이 있나요?
나는 그것이 단순 할 것이라고 알고 있었다. 고마워! –
그리고 이것은 너무 복잡합니다 – jeb