배치 파일에서 콘솔의 입력을 읽는 방법은 무엇입니까?


82

콘솔의 입력을 배치 파일로 어떻게 읽습니까? 내가 달성하려는 것은 C의 scanf 기능입니다. 배치 파일에서 어떻게 똑같이 할 수 있습니까?



@ Raymond : 아니요, 질문은 여러 문자를 키보드에서 변수로 문자열로 읽는 것입니다.
Nohsib

이 명령 set /p은 한 글자이든 여러 글자이든 사용자가 입력하는 모든 것을 읽습니다.
Raymond Chen

@ Raymond : 그것에 대한 코드 스 니펫을 친절하게 공유 할 수
있습니까

답변:


141

링크 된 제안 된 중복의 코드 조각은 사용자 입력을 읽습니다.

ECHO A current build of Test Harness exists.
set /p delBuild=Delete preexisting build [y/n]?: 

사용자는 원하는만큼 문자를 입력 할 수 있으며 delBuild 변수로 이동합니다.


35
참고 : 다음과 함께 사용자 입력을 사용할 수 있습니다.%delBuild%
Jacob

1
통지 할 echo !delBuild!때 당신에게 실행에보다 안정적으로 출력을 줄 것이다 setlocal EnableDelayedExpansion활성화
xacinay

29

cmd 인스턴스를 즉시 종료하는 대신 열어 두려는 경우 다음을 수행하면 충분합니다.

set /p asd="Hit enter to continue"

스크립트가 끝나면 창이 열린 상태로 유지됩니다.

이것은 asd환경 변수로 설정 되며 다른 것으로 바꿀 수 있습니다.


15
이를 위해 누군가가 pause명령을 발명했습니다 . 또한 set /p, 아닙니다 set \p.
Stephan

6
"모든 사람들이 말하는 것처럼"더 informatiion없이 다른 불필요한 그래서 답은 이미 주어진 것을 의미한다

1
@jeb 당신이 맞아요. 내 문제는 변수와 에코가 포함되어 있지만 필요하지 않다는 것입니다. 배치 경험이 없기 때문에 답변을 구문 분석하는 데 1 ~ 2 분 정도 걸렸습니다. 내 답변이 내 필요에 적합한 최소한의 답변을 충족한다고 생각합니다.
TankorSmash 2015 년

@Stephan 감사합니다 친구, 두 계산에. 스크립트가 완료된 후 종료를 위해 cmd 인스턴스를 유지하는 방법을 찾고 있었지만 X 시간 동안 일시 중지하는 것만으로는 충분하지 않았습니다.
TankorSmash 2015 년

@ArslanAhmad 방금 테스트 cmd했지만 여전히에서 작동 하지만 Powershell에서는 작동 하지 않습니다. 올바른 것을 사용하고 있는지 확인하십시오.
TankorSmash 2019

18

기존 답변 외에도 다음과 같이 기본 옵션을 설정할 수 있습니다.

echo off
ECHO A current build of Test Harness exists.
set delBuild=n
set /p delBuild=Delete preexisting build [y/n] (default - %delBuild%)?:

이렇게하면 사용자가 기본값을 입력하려는 경우 "Enter"를 누르기 만하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.