source

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

lovecheck 2023. 4. 17. 21:58
반응형

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%다른 로서 "Data"와 같은 다른 배치파일에 대한 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에서 다양한 버전의 Windows OS 배치 파일을 사용한 사용자 입력에 대한 자세한 내용을 확인하십시오.

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

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

%VariableName% 변경

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

에 있는 공간=매우 중요합니다.

모든 버전의 Windows에 해당하는지 모르겠지만, 현재 사용하고 있는 XP 머신에서는 다음을 사용해야 합니다.

set /p Var1="Prompt String"

따옴표 안에 프롬프트 문자열이 없으면 텍스트에 따라 다양한 결과를 얻을 수 있습니다.

@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 

SETX에는 SET와 마찬가지로 문서화된 /prompt 파라미터가 없습니다.

재부팅 후에도 존속할 환경변수를 입력해야 하는 경우 SETX를 사용하여 저장할 수 있습니다.

SETX에 의해 작성된 변수는 명령 프롬프트를 재시작할 때까지 사용할 수 없습니다.단, 같은 이름을 가진 변수라도 이미 설정된 변수를 SETX로 설정할 수 있습니다.

Windows 8.1 Pro에서는 다음과 같이 동작합니다.

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

(기존 변수 주변의 따옴표는 필수입니다).

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

(코드 단락의 형식을 올바르게 지정하기 위해 편집)

html 입력 요소를 사용하는 userInput.bat에서도 시도할 수 있습니다.

여기에 이미지 설명 입력

그러면 입력이 jstackId 값에 할당됩니다.

call userInput.bat jstackId
echo %jstackId%

할 수 .FOR /F:

call userInput.bat
@echo off
:start
set /p var1="Enter first number: "
pause

두 가지 가능성이 있습니다.

  1. %id% jstack

    jstack %id% > jstack.txt
    

따라서 올바른 배치 파일 전체는 다음과 같습니다.

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

그리고/또는 2.코드에 입력(질문에 기입하는 것을 잊었습니다)했지만, 배치 파일을 실행할 때 ID를 입력하는 대신 Enter 키를 누릅니다(예: 1234).

있는 이 두 실수가 입니다.jstack아이디

단, 고객님의 경우 (질문에 입력한 코드에 따라) 변수 없이 호출했습니다.다음과 같이 기입:

jstack > jstack.txt

★★★★★★★▼jstack과 같이합니다.

Terminate batch file Y/N? 

는 프로그램에서과 같은 질문을 받았을 때 키를 입니다.Enter ID: 예를 들어 1234라고 「ID」, 「ID」, 「ID」를 입력합니다.%id%1234년입력해 주세요. 않은 는 다른 값으로 설정됩니다.%id% 、 [ ]의 프롬프트로 설정되어 있습니다.의 되어 있습니다.set★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」%id%로 설정되어 있다.Enter ID:jstack.jstack을 되었습니다.

당신이 있는 생각합니다.jstack %id% > jstack.txt와 Batch 파일코드로 합니다.%id(질문에서 실수로 빠뜨린 경우), id를 입력하지 않고 Enter 키를 누릅니다.으로 배치 은 현재 ID가 된 ID를하고 "Enter ID:"를 했습니다.jstack Enter ID: > jstack.txt

Jstack 자체에서 입력이 반복되어 오류가 발생하여 종료를 요청했습니다.
「jstack」의 「jstack의 「jstack」.파일.txt 파 t 。

클라이언트에 PC를 준비할 때 사용하는 약간의 cmd가 있습니다.사용자를 호출하여 입력을 요구하고 PC의 이름을 그 cmd로 변경합니다.

@ECHO "remember to run this as admin."
@ECHO OFF
SET /P _inputname= Please enter an computername:
@ECHO Du intastede "%_inputname%"
@ECHO "The pc will restart after this"
pause
@ECHO OFF
wmic computersystem where name="%COMPUTERNAME%" call rename name="%_inputname%"

shutdown -r -f

변수 주변의 달러 기호는 Vista 기계에서 작동하지 않지만 백분율 기호는 작동합니다.또한 프롬프트와 사용자 입력 사이에 "set" 행의 후행 공백이 표시됩니다.

방금 추가했습니다.

set /p NetworkLocation= Enter name for network?

echo %NetworkLocation% >> netlist.txt

시퀀스를 내 netsh 배치 작업.이제 해당 샘플의 포인트로 응답한 위치가 표시됩니다.출력파일을 계속 >>그래서 '집', '직장', '스타벅스' 등을 알 수 있게 되었습니다.깨끗한 공기를 찾고 있는 경우, 사용 빈도가 가장 낮은 채널과 주변에 5개의 2.4MHz WLAN이 있는지 또는 모든 WLAN을 사용할 수 있습니다.

변수의 기본값을 유지하기 위해서입니다.Enter 키를 눌러 .bat의 최근 실행에서 기본값을 사용합니다.

@echo off
set /p Var1=<Var1.txt
set /p Var1="Enter new value ("%Var1%") "
echo %Var1%> Var1.txt

rem YourApp %Var1%

첫 번째 실행에서는 변수의 초기 값을 가진 파일이 없다는 메시지를 무시하거나 Var1.txt를 수동으로 생성하십시오.

흥미로운 또 다른 방법이 있습니다.파워셸 스크립트를 호출하여 데이터 바흐를 cmd로 전송하거나 이와 같은 작업을 수행할 수 있습니다.

set var=myvar; 
call "c:\input2.cmd" %var%. 

좀 더 유연합니다(powershell에서도 동일한 방법으로 데이터를 전송할 수 있습니다).

따라서 cmd에서는 ps 스크립트가 다음 위치에 있는 것을 고려하여 이 내용을 기입합니다.C::

PowerShell.exe -ExecutionPolicy unrestricted -Command "& {. C:\Input.ps1}"

그리고 input.ps1 스크립트에 다음과 같이 적습니다.

$var = Read-Host -Prompt "Your input"
Write-Host "Your var:",$var
#Do stuff with your variable

언급URL : https://stackoverflow.com/questions/1223721/in-windows-cmd-how-do-i-prompt-for-user-input-and-use-the-result-in-another-com

반응형