嗨,我想制作批处理文件菜单,询问"选择要安装的应用程序?" 例如
选择什么应用程序:_
我想要的是,例如我想安装App2,App3和App5,所以我可以通过App ID的'选择什么应用程序:2,3,5'来输入.当用户选择选项6时,它将安装所有应用程序!
我知道这可以用于bash脚本,但我不确定批处理脚本?
批处理菜单的一个示例是http://mintywhite.com/software-reviews/productivity-software/create-multiple-choice-menu-batchfile/
这将做你想要的.如果您有任何疑问,请告诉我.您所要做的就是按照脚本中列出的两个步骤操作.
:: Hide Command and Set Scope
@echo off
setlocal EnableExtensions
:: Customize Window
title My Menu
:: Menu Options
:: Specify as many as you want, but they must be sequential from 1 with no gaps
:: Step 1. List the Application Names
set "App[1]=One"
set "App[2]=Two"
set "App[3]=Three"
set "App[4]=Four"
set "App[5]=Five"
set "App[6]=All Apps"
:: Display the Menu
set "Message="
:Menu
cls
echo.%Message%
echo.
echo. Menu Title
echo.
set "x=0"
:MenuLoop
set /a "x+=1"
if defined App[%x%] (
call echo %x%. %%App[%x%]%%
goto MenuLoop
)
echo.
:: Prompt User for Choice
:Prompt
set "Input="
set /p "Input=Select what app:"
:: Validate Input [Remove Special Characters]
if not defined Input goto Prompt
set "Input=%Input:"=%"
set "Input=%Input:^=%"
set "Input=%Input:<=%"
set "Input=%Input:>=%"
set "Input=%Input:&=%"
set "Input=%Input:|=%"
set "Input=%Input:(=%"
set "Input=%Input:)=%"
:: Equals are not allowed in variable names
set "Input=%Input:^==%"
call :Validate %Input%
:: Process Input
call :Process %Input%
goto End
:Validate
set "Next=%2"
if not defined App[%1] (
set "Message=Invalid Input: %1"
goto Menu
)
if defined Next shift & goto Validate
goto :eof
:Process
set "Next=%2"
call set "App=%%App[%1]%%"
:: Run Installations
:: Specify all of the installations for each app.
:: Step 2. Match on the application names and perform the installation for each
if "%App%" EQU "One" echo Run Install for App One here
if "%App%" EQU "Two" echo Run Install for App Two here
if "%App%" EQU "Three" echo Run Install for App Three here
if "%App%" EQU "Four" echo Run Install for App Four here
if "%App%" EQU "Five" echo Run Install for App Five here
if "%App%" EQU "All Apps" (
echo Run Install for All Apps here
)
:: Prevent the command from being processed twice if listed twice.
set "App[%1]="
if defined Next shift & goto Process
goto :eof
:End
endlocal
pause >nul
Run Code Online (Sandbox Code Playgroud)
您想使用set /p
下面的示例:
echo What would you like to install?
echo 1 - App1
echo 2 - App2
set /p whatapp=
if %whatapp%==1 (
codetoinstallapp1
) else if %whatapp%==2 (
codetoinstallapp2
) else (
echo invalid choice
)
Run Code Online (Sandbox Code Playgroud)
批处理文件是命令提示符命令的列表。以下代码打印到终端:
echo whateveryouwant
Run Code Online (Sandbox Code Playgroud)
使用批处理文件中的这些 echo 语句打印菜单。
获取用户输入可以在这里找到:如何在批处理文件中从控制台读取输入?
应用程序的安装稍微复杂一些 - 您需要了解应用程序的要求以及文件应移动到哪里 - 这也应该很简单;在适当的位置使用move
适当的文件。