2015-09-14 79 views
-1

所以我想做一個批處理文件,將像我的便攜式應用程序閃存驅動器啓動程序,一切正常工作,直到我嘗試添加字母數字輸入。我主要嘗試做的是,用戶輸入「1」,打開應用程序1,用戶輸入「1H」,並打開所述應用程序的幫助屏幕,可能列出應用程序的主要功能。我主要使用Windows 7.這是我現有代碼的一部分。批量菜單,接受字母數字輸入

:: Menu 12 
:Antivirus 
%T% ANTIVIRUS 
CLS 
%L% 
ECHO ==================== ANTIVIRUS LAUNCHER ==================== 
%L% 
%F% 
%M%1) AVZ4      10) Simple Machine Protect = 
%M%2) ClamWin         11) Sophos = 
%M%3) Emsisoft       12) Spy BHO Remover = 
%M%4) Kaspersky         13) Spybot = 
%M%5) Keylogger Detector    14) Spy DLL Remover = 
%M%6) McAfee        15) Stream Armor = 
%M%7) Norman        16) Trend Micro = 
%M%8) Norton          17) Vipre = 
%M%9) Remove Fake Antivirus     18) ViruClean = 
%M%    19) Virus Total Scanner     = 
%F% 
%L% 
%M%20) RETURN TO PREVIOUS MENU      21) QUIT = 
%L% 
SET /A XO=0 
SET OX= 
SET /P OX=Please Make A Selection: 
SET /A XO=%XO%+%OX% 
IF %XO%==1 (%S%Antivirus\avz4\avz.exe" && %G%) 
IF %XO%==2 (%S%Antivirus\ClamWin\ClamWinPortable.exe" && %G%) 
IF %XO%==3 (%S%Antivirus\EEK\Start Emergency Kit Scanner.exe" && %G%) 
IF %XO%==4 (SET Menu=13 && %G%) 
IF %XO%==5 (%S%Antivirus\Keylogger Detector\KL-Detector.exe" && %G%) 
IF %XO%==6 (SET Menu=14 && %G%) 
IF %XO%==7 (%S%Antivirus\Norman\Norman.exe" && %G%) 
IF %XO%==8 (%S%Antivirus\Norton Security Scan\Engine\4.3.0.43\Nss.exe" && %G%) 
IF %XO%==9 (%S%Antivirus\Remove Fake Antivirus\Remove Fake Antivirus.exe" && %G%) 
IF %XO%==10 (%S%Antivirus\Simple Machine Protect\SMP.exe" && %G%) 
IF %XO%==11 (%S%Antivirus\Sophos\sargui.exe" && %G%) 
IF %XO%==12 (%S%Antivirus\Spy BHO Remover\SpyBHORemover.exe" && %G%) 
IF %XO%==13 (%S%Antivirus\Spybot\SpyDLLRemover.exe" && %G%) 
IF %XO%==14 (%S%Antivirus\Spy DLL Remover\SpybotPortable.exe" && %G%) 
IF %XO%==15 (%S%Antivirus\Stream Armor\StreamArmor.exe" && %G%) 
IF %XO%==16 (SET Menu=15 && %G%) 
IF %XO%==17 (%S%Antivirus\VIPRERESCUE\VipreRescueScanner.exe" && %G%) 
IF %XO%==18 (%S%Antivirus\ViruClean\ViruClean.exe" && %G%) 
IF %XO%==19 (%S%Antivirus\Virus Total Scanner\VirusTotalScanner.exe" && %G%) 
IF %XO%==20 (SET Menu=11 && %G%) 
IF %XO%==21 (%E%) 
%MER% 

回答

0

您現有的方法正在使用一種黑客手段來強制將數值設爲數值,即使它不是以數值開頭。相反,與困擾,你可以只使用文本比較:

SET /P SEL=Please Make A Selection: 
if "%SEL%"=="1" echo AVZ4 chosen 
if "%SEL%"=="1H" echo AVZ4 HELP chosen 
... 

您可以添加/I開關,如果你不關心資本:

if /I "%SEL%"=="1H" echo AVZ4 HELP chosen 

鑑於你的菜單的大小,添加每個項目的單獨IF語句將爲您做很多工作,尤其是當您想在中間添加或刪除菜單項時。但是,用一種更智能的方法來優化這個問題實際上超出了你的問題的範圍。

+0

簡單是更好,有時它只需要第二組眼睛。謝謝。 –