2017-08-24 61 views
-1

我已经知道如何让人们从0到9中选择,但我需要更多的选项。
你们有什么想法?
我已经尝试添加更多的数字,如10或11,但它只是选择第一个数字,所以10 = 1和11 = 1等等。
我需要这个修复,因为我有更多的选择,子目录看起来非常糟糕。
我到处搜索过。我如何让人们在批处理文件中选择

这是可以从0到9(我知道它不好的IM初学者)

:net 
ECHO off  
cls  
:netstart  
ECHO.  
ECHO Net...  
ECHO 0. Accounts  
ECHO 1. Config  
ECHO 2. Continue  
Echo 3. Help  
Echo 4. Localgroup  
Echo 5. Pause  
Echo 6. Session  
Echo 7. Statistics  
Echo 8. Stat  
Echo 9. View  
set /p choice=  
rem if not '%choice%'=='' set choice=%choice:~0;1%  
if '%choice%'=='' ECHO "%choice%" Is Not An Option  
if '%choice%'=='0' goto 0  
if '%choice%'=='1' goto 1  
if '%choice%'=='2' goto 2  
if '%choice%'=='3' goto 3  
if '%choice%'=='4' goto 4  
if '%choice%'=='5' goto 5  
if '%choice%'=='6' goto 6  
if '%choice%'=='7' goto 7  
if '%choice%'=='8' goto 8  
if '%choice%'=='9' goto 9  
ECHO.  
goto netstart  
:0  
cls  
ECHO Wait...  
net accounts  
pause  
exit  
:1  
cls  
ECHO Wait...  
net config  
pause  
exit  
:2  
cls  
ECHO Wait...  
net continue  
pause  
exit  
:3  
cls  
ECHO Wait...   
net help  
pause  
exit  
:4  
cls  
ECHO Wait...  
net localgroup  
pause  
exit  
:5  
cls  
ECHO Wait...  
net pause  
pause  
exit  
:6  
cls  
ECHO Wait...  
net session  
pause  
exit  
:7  
cls  
ECHO Wait...  
net statistics  
pause  
exit  
:8  
cls  
ECHO Wait...  
netstat  
pause  
exit  
:9  
cls  
ECHO Wait...  
net view  
pause  
goto end  
:end  
cls  
exit  
+0

你有什么尝试到目前为止自己解决这个问题? – Ian

+0

用户可以输入任何字符串。例如“10”或“10”。应该很容易找到在批处理文件中获取用户输入的示例。 – Julien

回答

1

确实喜欢你这样的工作想要的代码?

@Echo Off 

:StartNet 
ClS 
Echo. 
Echo Net... 

Echo 0. Accounts 
Echo 1. Computer 
Echo 2. Config 
Echo 3. Continue 
Echo 4. File 
Echo 5. Group 
Echo 6. Help 
Echo 7. Helpmsg 
Echo 8. Localgroup 
Echo 9. Pause 
Echo 10. Session 
Echo 11. Share 
Echo 12. Start 
Echo 13. Statistics 
Echo 14. Stop 
Echo 15. Time 
Echo 16. Use 
Echo 17. User 
Echo 18. View 

Set/P "selection=" 

GoTo %selection% 2>Nul 

Echo. 
"%choice%" is not an option 
Timeout 3 /NoBreak>Nul 
GoTo StartNet 

:0 
ClS 
Echo Wait... 
Net Accounts 
Timeout -1 
Exit/B 

:1 
ClS 
Echo Wait... 
Net Computer 
Timeout -1 
Exit/B 

:2 
ClS 
Echo Wait... 
Net Config 
Timeout -1 
Exit/B 

:3 
ClS 
Echo Wait... 
Net Continue 
Timeout -1 
Exit/B 

:4 
ClS 
Echo Wait... 
Net File 
Timeout -1 
Exit/B 

:5 
ClS 
Echo Wait... 
Net Group 
Timeout -1 
Exit/B 

:6 
ClS 
Echo Wait... 
Net Help 
Timeout -1 
Exit/B 

:7 
ClS 
Echo Wait... 
Net Helpmsg 
Timeout -1 
Exit/B 

:8 
ClS 
Echo Wait... 
Net Localgroup 
Timeout -1 
Exit/B 

:9 
ClS 
Echo Wait... 
Net Pause 
Timeout -1 
Exit/B 

:10 
ClS 
Echo Wait... 
Net Session 
Timeout -1 
Exit/B 

:11 
ClS 
Echo Wait... 
Net Share 
Timeout -1 
Exit/B 

:12 
ClS 
Echo Wait... 
Net Start 
Timeout -1 
Exit/B 

:13 
ClS 
Echo Wait... 
Net Statistics 
Timeout -1 
Exit/B 

:14 
ClS 
Echo Wait... 
Net Stop 
Timeout -1 
Exit/B 

:15 
ClS 
Echo Wait... 
Net Time 
Timeout -1 
Exit/B 

:16 
ClS 
Echo Wait... 
Net Use 
Timeout -1 
Exit/B 

:17 
ClS 
Echo Wait... 
Net User 
Timeout -1 
Exit/B 

:18 
ClS 
Echo Wait... 
Net View 
Timeout -1 
Exit/B 
+0

OMG非常感谢你! – AuditionCSBlock

0

还有就是命令CHOICE这也是为什么choice不好的环境变量名的原因。在命令提示符窗口choice /?中运行以获取有关此命令的帮助。它具有防止用户错误输入的优点。

@echo off 
goto StartNet 

:NextRun 
echo/ 
pause 

:StartNet 
cls 
echo/ 
echo Net ... 
echo/ 
echo A ... Accounts 
echo B ... Computer 
echo C ... Config 
echo D ... Continue 
echo E ... File 
echo F ... Group 
echo G ... Help 
echo H ... Helpmsg 
echo I ... Localgroup 
echo J ... Pause 
echo K ... Session 
echo L ... Share 
echo M ... Start 
echo N ... Statistics 
echo O ... Stop 
echo P ... Time 
echo Q ... Use 
echo R ... User 
echo S ... View 
echo/ 
echo X ... Exit 
echo/ 
%SystemRoot%\System32\choice.exe /C ABCDEFGHIJKLMNOPQRSX /N /M "Your choice: " 
if errorlevel 20 exit /B 
cls 
echo Wait ... 
echo/ 
goto Option%ERRORLEVEL% 

:Option1 
%SystemRoot%\System32\net.exe Accounts & goto NextRun 
:Option2 
%SystemRoot%\System32\net.exe Computer & goto NextRun 
:Option3 
%SystemRoot%\System32\net.exe Config & goto NextRun 
:Option4 
%SystemRoot%\System32\net.exe Continue & goto NextRun 
:Option5 
%SystemRoot%\System32\net.exe File & goto NextRun 
:Option6 
%SystemRoot%\System32\net.exe Group & goto NextRun 
:Option7 
%SystemRoot%\System32\net.exe Help & goto NextRun 
:Option8 
%SystemRoot%\System32\net.exe Helpmsg & goto NextRun 
:Option9 
%SystemRoot%\System32\net.exe Localgroup & goto NextRun 
:Option10 
%SystemRoot%\System32\net.exe Pause & goto NextRun 
:Option11 
%SystemRoot%\System32\net.exe Session & goto NextRun 
:Option12 
%SystemRoot%\System32\net.exe Share & goto NextRun 
:Option13 
%SystemRoot%\System32\net.exe Start & goto NextRun 
:Option14 
%SystemRoot%\System32\net.exe Statistics & goto NextRun 
:Option15 
%SystemRoot%\System32\net.exe Stop & goto NextRun 
:Option16 
%SystemRoot%\System32\net.exe Time & goto NextRun 
:Option17 
%SystemRoot%\System32\net.exe Use & goto NextRun 
:Option18 
%SystemRoot%\System32\net.exe User & goto NextRun 
:Option19 
%SystemRoot%\System32\net.exe View & goto NextRun 

又见回答Batch file choice loop on unexpected input说明为什么echo/而不是echo.使用的信息以及如何CHOICE结合errorlevel拿着以前的命令/可执行作品的退出/返回代码。

+0

Thx!这个社区太快了! – AuditionCSBlock