>source

선택을 요청하는 배치 파일이 있습니다. 선택하면 "확실합니까?"라고 묻는 메시지가 표시됩니다. 대답이 빈 문자열이고 Enter를 누르면 대답이 "h"이고 Enter가 "아니오"이면 "예"로 승인됩니다. 그러나 문제는 두 번째로 작동하지 않는다는 것입니다 (엔터를 눌렀을 때 예로 받아들이지 않습니다), (문제는 set /p ).

PC에서 확인하려면 코드의 첫 부분을 변경해야합니다.

@echo off
@for %%a in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do @if exist %%a:\TAM_IMAGES set The_Drive=%%a
@for %%b in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do @if exist %%b:\DenemeJpg.bat set applyimage=%%b
REM @dir %The_Drive%:\TAM_IMAGES
REM @dir %applyimage%:\DenemeJpg.bat
cd %The_Drive%:\TAM_IMAGES
setlocal enabledelayedexpansion
:input
set count=100
for /f "delims=" %%a in ('dir /b /a-d') do (
  set /a count+=1
  echo !count:~-2!] %%a
)
set /a countMax=count-100
set "countNr=%count:~-2%"
<nul set /p "= Yuklemek istediginiz imaji seciniz " 
choice /c 1234567890 /n >nul
set first=%errorlevel:~-1%
<nul set /p "=%first%"
choice /c 1234567890 /n >nul
echo %errorlevel:~-1%
set ch=%first%%errorlevel:~-1%
REM echo [%file%] Imajini sectiniz.
set /a line=1%ch%-101
REM echo debug: ch=%ch%;CountNr=%countNr%;CountMax=%CountMax%,Line=%line%
if "%ch%" == "00" goto escape
if %ch% gtr %countMax% echo bad input&goto :input
for /f "delims=" %%a in ('dir /b /a-d^|more +%line%') do set "file=%%a"&goto :cont
:cont
SET /P KeyPressed=%file% imajini sectiniz, emin misiniz?
IF [%KeyPressed%] EQU [] goto devam
IF %KeyPressed% EQU h goto input
:devam
REM echo %ch% - %file% imajını sectiniz.
start "" %applyimage%:\DenemeJpg.bat 
REM %The_Drive%:\TAM_IMAGES\%file%
REM goto :eof
cmd /k
:escape
echo you choosed '00' for exit.

  • 답변 # 1

    아무 것도 입력하지 않으면 ({ENTER} 만) set /p 프롬프트에서 변수를 지우지는 않지만 변경되지 않은 상태로 둡니다. 코드 ( goto :input ), 전에 변수를 지워야합니다. set /p :

    ...
    :cont
    set "KeyPressed="
    SET /P KeyPressed=%file% imajini sectiniz, emin misiniz?
    IF [%KeyPressed%] EQU [] goto devam
    IF %KeyPressed% EQU h goto input
    ...
    
    

    더 안전한 구문을 사용하겠습니다. if "%KeyPressed" == ""if /i "%KeyPressed" == "h" .

관련 자료

  • 이전 vscode settings - 내 사용자 지정 테마를 디버깅하기 위해 새 창을 열기 위해 VS 코드에서 F5를 눌러도 작동하지 않습니다
  • 다음 javascript - 동적으로 생성 된 ID에서 클릭 이벤트 트리거 (상위 요소를 기반으로하는 ID 사용)