【자신용】 배치 파일로 선택사항을 GUI 표시할 때의 템플리

여러 옵션. 어느 것을 선택하는지 WASD로 조작하고 싶을 때 이것을 복사합니다.
비스타 이후

외형


준비





어디에 어떤 옵션을 배치할지 미리 설정해 둡니다.
・가독성을 높이기 위해서 배열풍의 기술을 한다
・[0][0] 시작이 아닌 [1][1]로 한다. 계산시 음수를 발생시키지 않기 위해
・문자열의 폭이 다르면 어려워진다. 사전에 고치는 것
전망: 선택사항별 문자열의 폭을 조사하여 최대의 것에 맞추어 자동으로 공백 채우고 싶다
    선택사항을 각각 텍스트 파일에 돌진해, 순서대로 바이트수를 취해 가는 것이 확실한가.
   단점은 요소수에 비례하여 시간이 걸리는 일시적인 파일의 양산


command[1][1]
command[1][2]
command[1][3]



command[2][1]
command[2][2]
command[2][3]


command[3][1]
command[3][2]
command[3][3]


:
:
:





다음 명령을 실행합니다.
call :cursor 0 (縦のサイズ) (横のサイズ)
rem 例:call :cursor 0 3 2



선택의 위에 표시하고 싶은 문장이 있으면, 그것을 적절한 이름의 텍스트 파일에 돌입
미리 밀어 넣은 파일을 준비해도 좋다.
・반각 퍼센트의 개수에 주의한다
・배치내에서 준비하는 경우는 echo 문장 >> hoge.txt
미리 준비해 두는 경우, %% 변수명%%라고 써 두는 것으로 배치내에서 설정한 변수를 읽어들일 수 있다.

실행



다음 명령을 실행합니다.
call :select (WASD以外の選択肢) (さっき作ったテキストファイルの.txt以前)

· 당연히 txt를 사용하지 않으면 인수 2가 필요하지 않습니다.
·txt의 디렉토리가 다른 경우, 풀 패스로 기입. 전체 경로의 경우 공간이 있으면 버그합니다. 잃어버린

결과



WASD 이외의 선택사항이 선택되면, 몇번째가 선택되었는지를 errorlevel에 넣어 낸다.call :select jk 그렇다면 J 또는 K를 누르면 5,6이 돌아옵니다.
그 때 선택된 명령은 [cursorm] [cursorn]에 출력.

사용하고 있는 변수(중복 방지용)



arraym...세로 크기
arrayn... 수평 크기
cursorl[m][n]...전각 공간인가【
cursorr[m][n]...전각 공간인가]
cursorm... 지금 가리키는 세로
cursorn... 지금 가리키는 옆
command[m][n]... 각 명령
commandline[m]...

이하 코피페


@echo off
setlocal enabledelayedexpansion
cd /d %~dp0




:select
    for /l %%i in (1,1,%arraym%) do (
        set commandlist[%%i]= 
        for /l %%j in (1,1,%arrayn%) do (
            set commandlist[%%i]=!commandlist[%%i]!!cursorl[%%i][%%j]!!command[%%i][%%j]!!cursorr[%%i][%%j]!
        )
    )
    cls
    if exist "%2.txt" type "%2.txt"
    for /l %%i in (1,1,%arraym%) do (
        echo !commandlist[%%i]!
    )
    choice /c wasd%1 >nul
    if %errorlevel% leq 4 (
        call :cursor %errorlevel%
        goto select
    )
    exit /b

:cursor
    if not "%3" == "" set /a arraym=%2,arrayn=%3
    set cursorl[%cursorm%][%cursorn%]= 
    set cursorr[%cursorm%][%cursorn%]= 
    call :cursor_%1
    set cursorl[%cursorm%][%cursorn%]=set cursorr[%cursorm%][%cursorn%]=exit /b
:cursor_0
    for /l %%i in (1,1,!arraym!) do (
        for /l %%j in (1,1,!arrayn!) do (
            set cursorl[%%i][%%j]= 
            set cursorr[%%i][%%j]= 
        )
    )
    set /a cursorm=1,cursorn=1
    exit /b
:cursor_1
    set /a cursorm=(cursorm+arraym-2)%%arraym+1
    exit /b
:cursor_2
    set /a cursorn=(cursorn+arrayn-2)%%arrayn+1
    exit /b
:cursor_3
    set /a cursorm=cursorm%%arraym+1
    exit /b
:cursor_4
    set /a cursorn=cursorn%%arrayn+1
    exit /b

좋은 웹페이지 즐겨찾기