[windows] Windows cmd에서 사용자 입력을 요청하고 다른 명령에서 결과를 사용하려면 어떻게합니까?

사용자 입력을 수락하고 추가 명령 호출의 일부로 해당 입력 결과를 사용하려는 Windows .bat 파일이 있습니다.

예를 들어, 사용자로부터 프로세스 ID를 수락 한 다음 해당 ID에 대해 jstack을 실행하여 jstack 호출의 결과를 파일에 넣습니다. 그러나 이것을 시도하면 작동하지 않습니다.

다음은 샘플 박쥐 파일 내용입니다.

@echo off
set /p id=Enter ID:
echo %id%
jstack > jstack.txt

jstack.txt에 표시되는 내용은 다음과 같습니다.

ID 입력 : 일괄 작업 종료 (Y / N)?



답변

이 시도:

@echo off
set /p id="Enter ID: "

그런 %id%다음와 같은 다른 배치 파일에 매개 변수로 사용할 수 있습니다 jstack %id%.

예를 들면 다음과 같습니다.

set /P id=Enter id:
jstack %id% > jstack.txt


답변

구문은 다음과 같습니다. set /p variable=[string]

확인 http://commandwindows.com/batch.htm 또는 http://www.robvanderwoude.com/userinput.php를 윈도우 OS의 배치 파일의 서로 다른 버전의 사용자 입력에 더 깊이 잠수.

변수를 설정하면 다음과 같은 방식으로 변수를 사용할 수 있습니다.

@echo off
set /p UserInputPath=What Directory would you like?
cd C:\%UserInputPath%

%VariableName%구문에 주목


답변

이것이 모든 버전의 Windows에 해당되는지 확실하지 않지만 XP 시스템에서는 다음을 사용해야합니다.

set /p Var1="Prompt String"

quotes에 프롬프트 문자열이 없으면 텍스트에 따라 다양한 결과가 나타납니다.


답변

set /p choice= "Please Select one of the above options :"
echo '%choice%'

이후의 공간 =은 매우 중요합니다.


답변

@echo off
set /p input="Write something, it will be used in the command "echo""
echo %input%
pause

원하는 것을 얻으면 정상적으로 작동합니다. 다른 명령에서도 % input %을 사용할 수 있습니다.

@echo off
echo Write something, it will be used in the command "echo"
set /p input=""
cls
echo %input%
pause


답변

@echo off
:start
set /p var1="Enter first number: "
pause


답변

SET와 마찬가지로 SETX에 대해 문서화 된 / prompt 매개 변수가 없습니다.

재부팅 후에도 지속될 환경 변수를 묻는 메시지가 표시되면 SETX를 사용하여 저장할 수 있습니다.

SETX로 만든 변수는 명령 프롬프트를 다시 시작할 때까지 사용할 수 없습니다. 그러나 이름이 같은 경우에도 이미 SET 된 변수를 SETX 할 수 있습니다.

이것은 Windows 8.1 Pro에서 작동합니다.

set /p UserInfo= "What is your name?  "
setx UserInfo "%UserInfo%"

(기존 변수 주위에 따옴표가 필요합니다.)

이 절차를 통해 현재 세션 중에 임시 SET 작성 변수를 사용할 수 있으며 컴퓨터를 재부팅하거나 CMD 프롬프트를 다시 시작할 때 SETX 작성 변수를 재사용 할 수 있습니다.

(코드 단락의 형식을 올바르게 지정하도록 편집되었습니다.)