다음 배치 스크립트 작업을 얻으려고했는데 배치에 대한 더 많은 전문 지식을 가진 사람에게 질문해야 할 것 같습니다. 단서가 없기 때문에 작동 안함. 나는 목록을 얻기 위해 노력하고배치 파일 : 중첩 루프의 목록 요소 작업
@echo off
rem enable delayed expansion, required for extended usage of environment variables
SETLOCAL EnableDelayedExpansion
SETLOCAL EnableExtensions
set VAR=abcd efgh ijkl mnopq rstvw qwert yxcva rtzewrw yxvys
set fst=qwert
set scnd=rstvw
call :test %VAR%
:test
SETLOCAL
for %%i in (%*) do (
for %%j in (%* %%i) do (
if %scnd% equ %%i (
if %fst% equ %%j (
echo "gotcha before swapping: " "i: " %%i "j: " %%j
set tempor=%%i
set i=%%j
set j=!tempor!
echo "gotcha after swapping: " "i: " !i! "j: " !j!
set List=!List! %%j %%i
)
)
)
set List=!List! %%i
echo "List: " !List!
)
ENDLOCAL
goto :eof
:ende
같이하기 : 내 의도는 목록 VAR
의 두 가지 요소가 교체됩니다 얻는 것입니다
abcd efgh ijkl mnopq qwert rstvw yxcva rtzewrw yxvys
(첫 번째 요소의 경우) FST와 scnd (두 번째 요소)가 바뀝니다.
결과는 다음과 같다 : "List: " abcd efgh ijkl mnopq qwert rstvw rstvw qwert yxcva rtzewrw yxvys
, 그래서 qwert
및 rstvw
의 복식을 얻는다면, 나는 그것이 때문에 set List=!List! %%i
의 위치를 알고있다.
최소한을 교환하는 이 작동 중입니다. 하지만 내 문제는 : 나는 else
지점에 넣고 있다면 일반적으로 다른 스크립트 언어로 할 것 같은 목록이 모든 루프에서 %%i
및 %%j
가득합니다, 그래서 쓸모 ....
큰 for 루프를 if-else 분기/절 (호출되는 모든 항목)에 넣으면 여전히 작동해야합니다. – Poypoyan
'% scnd % neq %% i'와 'if % fst % neq %% j'?를 의미합니다.'%% i '와'%% j '는이 시점에서 초기화되지 않았으므로 당신의 제안이 무엇인지 모르겠습니까? – user9145300