如何通过具有多个用户输入的批处理文件多次提示用户?
How to prompt a user multiple times by a batch file with multiple user inputs?
我想更改大约250台服务器的序列号和产品编号(暂时不正确)。我知道我需要使用的命令,但我需要能够在该命令中输入某些选项,然后 运行 它。
我需要的选项是:
- 选择更新序列号或产品编号的提示
- 序列号更新前多次提示实际序列号、IP地址、用户名和密码
- 产品编号更新前多次提示实际产品编号、IP地址、用户名和密码
我希望通过批处理文件运行的命令是:
asu64 set SYSTEM_PROD_DATA.SysInfoSerialNum XXXXXXX --host XXX.XXX.XXX.XXX --user XXXX --password XXXX
XXX
是用户定义的输入。我也想完成然后返回初始选择菜单。
这是我到目前为止所做的。 (请原谅它的简单性。我对这些东西很陌生。)
@ECHO OFF
ECHO Test Code
ECHO.
ECHO 1.Serial Number
ECHO 2.Product Name
ECHO.
CHOICE /C 12 /M "Enter your choice:"
ECHO.
IF CHOICE 1 GOTO SerialNumber
IF CHOICE 2 GOTO ProductName
:SerialNumber
ECHO Serial Number
GOTO End
:ProductNumber
ECHO Product Number
GOTO End
PAUSE
非常感谢您提供的任何帮助。
可以用于此任务:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "IpAddress="
set "NameUser="
set "Password="
:MainMenu
cls
echo/
echo 1 ... Serial number
echo 2 ... Product number
echo E ... Exit
echo/
%SystemRoot%\System32\choice.exe /C 12E /N /M "Enter your choice:"
if errorlevel 3 exit /B
if not errorlevel 1 goto MainMenu
echo/
if errorlevel 2 goto ProductNumber
set "NumberText=serial"
set "NumberOption=SYSTEM_PROD_DATA.SysInfoSerialNum"
goto NumberPrompt
:ProductNumber
set "NumberText=product"
set "NumberOption=SYSTEM_PROD_DATA.SysInfoProductNum"
:NumberPrompt
set "NumberValue="
set /P "NumberValue=Please enter %NumberText% number: " || goto NumberPrompt
set "NumberValue=%NumberValue:"=%"
if not defined NumberValue goto NumberPrompt
echo/
if defined IpAddress (set "Default= [%IpAddress%]") else set "Default="
:IpPrompt
set /P "IpAddress=Please enter IP address%Default%: "
if not defined IpAddress goto IpPrompt
set "IpAddress=%IpAddress:"=%"
if not defined IpAddress goto IpPrompt
echo/
if defined NameUser (set "Default= [%NameUser%]") else set "Default="
:NamePrompt
set /P "NameUser=Please enter user name%Default%: "
if not defined NameUser goto NamePrompt
set "NameUser=%NameUser:"=%"
if not defined NameUser goto NamePrompt
echo/
if defined Password (set "Default= [%Password%]") else set "Default="
:PasswordPrompt
set /P "Password=Please enter password%Default%: "
if not defined Password goto PasswordPrompt
set "Password=%Password:"=%"
if not defined Password goto PasswordPrompt
echo/
"%~dp0ASU64.exe" set %NumberOption% "%NumberValue%" --host "%IpAddress%" --user "%NameUser%" --password "%Password%"
echo/
if not errorlevel 1 (
echo The update of the %NumberText% number "%NumberValue%" was successful.
) else echo ERROR: The update of the %NumberText% number "%NumberValue%" failed!
echo/
%SystemRoot%\System32\choice.exe /C CE /N /T 10 /D C /M "Press C to continue or E to exit ..."
if not errorlevel 2 goto MainMenu
endlocal
可执行文件 ASU64.exe
引用了批处理文件的完整路径,这意味着可执行文件必须始终与批处理文件位于同一目录中。 cmd.exe
处理批处理文件的当前目录在这种情况下无关紧要。
代码解释请阅读以下答案:
- How does the Windows Command Interpreter (CMD.EXE) parse scripts?
- Why is no string output with 'echo %var%' after using 'set var = text' on command line?
- Single line with multiple commands using Windows batch file
- DosTips 论坛主题:ECHO. FAILS to give text or blank line - Instead use ECHO/
为了了解使用的命令及其工作原理,请打开 command prompt window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
call /?
... 解释 %~dp0
... 参数 0 的驱动器和路径,即批处理文件路径。
choice /?
echo /?
endlocal /?
exit /?
goto /?
if /?
set /?
setlocal /?
我想更改大约250台服务器的序列号和产品编号(暂时不正确)。我知道我需要使用的命令,但我需要能够在该命令中输入某些选项,然后 运行 它。
我需要的选项是:
- 选择更新序列号或产品编号的提示
- 序列号更新前多次提示实际序列号、IP地址、用户名和密码
- 产品编号更新前多次提示实际产品编号、IP地址、用户名和密码
我希望通过批处理文件运行的命令是:
asu64 set SYSTEM_PROD_DATA.SysInfoSerialNum XXXXXXX --host XXX.XXX.XXX.XXX --user XXXX --password XXXX
XXX
是用户定义的输入。我也想完成然后返回初始选择菜单。
这是我到目前为止所做的。 (请原谅它的简单性。我对这些东西很陌生。)
@ECHO OFF
ECHO Test Code
ECHO.
ECHO 1.Serial Number
ECHO 2.Product Name
ECHO.
CHOICE /C 12 /M "Enter your choice:"
ECHO.
IF CHOICE 1 GOTO SerialNumber
IF CHOICE 2 GOTO ProductName
:SerialNumber
ECHO Serial Number
GOTO End
:ProductNumber
ECHO Product Number
GOTO End
PAUSE
非常感谢您提供的任何帮助。
可以用于此任务:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "IpAddress="
set "NameUser="
set "Password="
:MainMenu
cls
echo/
echo 1 ... Serial number
echo 2 ... Product number
echo E ... Exit
echo/
%SystemRoot%\System32\choice.exe /C 12E /N /M "Enter your choice:"
if errorlevel 3 exit /B
if not errorlevel 1 goto MainMenu
echo/
if errorlevel 2 goto ProductNumber
set "NumberText=serial"
set "NumberOption=SYSTEM_PROD_DATA.SysInfoSerialNum"
goto NumberPrompt
:ProductNumber
set "NumberText=product"
set "NumberOption=SYSTEM_PROD_DATA.SysInfoProductNum"
:NumberPrompt
set "NumberValue="
set /P "NumberValue=Please enter %NumberText% number: " || goto NumberPrompt
set "NumberValue=%NumberValue:"=%"
if not defined NumberValue goto NumberPrompt
echo/
if defined IpAddress (set "Default= [%IpAddress%]") else set "Default="
:IpPrompt
set /P "IpAddress=Please enter IP address%Default%: "
if not defined IpAddress goto IpPrompt
set "IpAddress=%IpAddress:"=%"
if not defined IpAddress goto IpPrompt
echo/
if defined NameUser (set "Default= [%NameUser%]") else set "Default="
:NamePrompt
set /P "NameUser=Please enter user name%Default%: "
if not defined NameUser goto NamePrompt
set "NameUser=%NameUser:"=%"
if not defined NameUser goto NamePrompt
echo/
if defined Password (set "Default= [%Password%]") else set "Default="
:PasswordPrompt
set /P "Password=Please enter password%Default%: "
if not defined Password goto PasswordPrompt
set "Password=%Password:"=%"
if not defined Password goto PasswordPrompt
echo/
"%~dp0ASU64.exe" set %NumberOption% "%NumberValue%" --host "%IpAddress%" --user "%NameUser%" --password "%Password%"
echo/
if not errorlevel 1 (
echo The update of the %NumberText% number "%NumberValue%" was successful.
) else echo ERROR: The update of the %NumberText% number "%NumberValue%" failed!
echo/
%SystemRoot%\System32\choice.exe /C CE /N /T 10 /D C /M "Press C to continue or E to exit ..."
if not errorlevel 2 goto MainMenu
endlocal
可执行文件 ASU64.exe
引用了批处理文件的完整路径,这意味着可执行文件必须始终与批处理文件位于同一目录中。 cmd.exe
处理批处理文件的当前目录在这种情况下无关紧要。
代码解释请阅读以下答案:
- How does the Windows Command Interpreter (CMD.EXE) parse scripts?
- Why is no string output with 'echo %var%' after using 'set var = text' on command line?
- Single line with multiple commands using Windows batch file
- DosTips 论坛主题:ECHO. FAILS to give text or blank line - Instead use ECHO/
为了了解使用的命令及其工作原理,请打开 command prompt window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
call /?
... 解释%~dp0
... 参数 0 的驱动器和路径,即批处理文件路径。choice /?
echo /?
endlocal /?
exit /?
goto /?
if /?
set /?
setlocal /?