Board logo

标题: [其他] [已解决]批处理怎么做一个按上下键选择的菜单? [打印本页]

作者: ANSL    时间: 2022-3-30 08:56     标题: [已解决]批处理怎么做一个按上下键选择的菜单?

本帖最后由 ANSL 于 2022-3-30 21:02 编辑

我是bat新手才学2个月,我想做一个类似于Windows xp的操作系统选择菜单的那种,谢谢
作者: idwma    时间: 2022-3-30 16:43

  1. @echo off
  2. set i=1
  3. :l
  4. cls
  5. if %i%==1 set /p "=>" <nul
  6. echo a
  7. if %i%==2 set /p "=>" <nul
  8. echo b
  9. if %i%==3 set /p "=>" <nul
  10. echo c
  11. for /f %%i in ('powershell "[int][Console]::ReadKey(1).key"') do (
  12.     if not %%i==13 (
  13.         if %%i==38 if not %i%==1 set /a i-=1
  14.         if %%i==40 if not %i%==3 set /a i+=1
  15.         goto :l
  16.     )
  17. )
  18. echo %i%
  19. pause
复制代码

作者: ANSL    时间: 2022-3-30 21:00

2楼,代码我看到了很好用,谢谢!
作者: for_flr    时间: 2022-4-2 17:19

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in ('echo;prompt $h^|cmd') do set "b=%%i"
  4. for /f "delims=U" %%i in ('cmd/u/c echo;唉') do set "t=%%i"
  5. set "s=  "
  6. for /l %%a in (1,1,62) do set "bs=!bs!!b!"
  7. set c1=选项1
  8. set c2=选项2
  9. set c3=选项3
  10. set c4=选项4
  11. set cn=4
  12. set /a i=cn*1000
  13. set mod=0
  14. :l
  15. if %mod%==0 (echo;[%c1%]) else echo;%c1%%s%
  16. if %mod%==1 (echo;[%c2%]) else echo;%c2%%s%
  17. if %mod%==2 (echo;[%c3%]) else echo;%c3%%s%
  18. if %mod%==3 (echo;[%c4%]) else echo;%c4%%s%
  19. for /f %%i in ('powershell "[Console]::ReadKey(1).key"') do (
  20.     if /i %%i neq enter (
  21.         if /i %%i==uparrow  set /a i-=1
  22.         if /i %%i==downarrow  set /a i+=1
  23.         set/a mod=i%%cn
  24.         2>nul echo;!t!!bs! &set /p=!b!<nul
  25.         goto :l
  26.     )
  27. )
  28. echo %mod%
  29. pause
复制代码
我也来学习模仿一个。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2