배치 파일을 사용하여 속성 파일을 업데이트하려고합니다. 키 "comp.array"에는 "comp1, comp2, machine2, state1"과 같은 값이 들어 있습니다 (이것은 단지 샘플 값이지만 실제로는 매우 길다). 이 배치 파일을 완료하는 데 필요한 다음 요점이 있습니다. 정렬 부분은 내가 곤경에 처해있는 곳이다. 웹에서 사용할 수있는 예제에서 정렬은 명령 행에서 숫자 배열 또는 사용자가 지정한 입력 배열에서 수행됩니다. 내부적으로 생성 된 배열을 어떻게 정렬 할 수 있습니까?배치에서 텍스트 배열 정렬
- 오름차순으로
- (완료) 종료시 정렬 새로운 값을 추가 (완료) 문자열
- 는 (완료) 배열로 변환로 comp.array의 값을 취득 순서 (할일)
변환 쉼표로 구분 된 문자열로 배열 다시 키에 할당합니다. (할일)
@echo off SETLOCAL EnableExtensions SETLOCAL EnableDelayedExpansion SET PKEY=comp.array SET PVAL=myval SET FILE=app.properties FINDSTR /B %PKEY% %FILE% >nul IF %ERRORLEVEL% EQU 1 ( ECHO No matching Key %PKEY% in %FILE%. Exiting.. EXIT 0 ) MOVE /Y "%FILE%" "%FILE%.tmp" FOR /F "USEBACKQ tokens=*" %%A IN (`TYPE "%FILE%.tmp" ^|FIND /N /I "%PKEY%"`) DO ( SET LINE=%%A ) SET VALUE=%LINE:~18% ECHO %VALUE% SET /A J=0 SET VALARR[0]="" FOR %%i in (%VALUE%) do ( SET VALARR[!J!]=%%i SET /A J+=1 ) SET VALARR[!J!]=%PVAL% for /l %%n in (0,1,!J!) do ( echo !VALARR[%%n]! ) :: PLACE TO ADD SORT LOGIC FOR /F "tokens=1,2* delims=]" %%S in ("%LINE%") DO SET LINE=%%S SET /A LINE=%LINE:~1,6% SET /A COUNT=1 FOR /F "USEBACKQ tokens=*" %%A IN (`FIND /V "" ^<"%FILE%.bak"`) DO ( IF "!COUNT!" NEQ "%LINE%" ( ECHO %%A>>"%FILE%" ) ELSE ( ECHO %PKEY%=%PVAL%>>"%FILE%" ) SET /A COUNT+=1 )