[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理for赋值问题,请高手执教

我通过for把文件内容赋值给不同的变量,但是几个menu切换以后,数据就重复了,就显示2个一样的sn,重现方法:菜单1-》菜单1返回
1.txt的内容如下

List of devices attached
c003 device
  1. @echo off
  2. :getsn
  3. setlocal enabledelayedexpansion
  4. #获取手机的sn并赋值给变量,可以有多个手机
  5. FOR /F "skip=1 tokens=1 delims= " %%i in (1.txt) do (
  6. if not defined d1 (set d1=%%i) else (
  7. if not defined d2 (set d2=%%i))
  8. )
  9. ::取出设备信息的sn
  10. FOR /F "usebackq tokens=1 delims= " %%a in ('%d1%') do set device1=%%a
  11. FOR /F "usebackq tokens=1 delims= " %%i in ('%d2%') do set device2=%%i
  12. :startsn
  13. cls
  14. echo =============请选择sn  =============
  15. echo     1.%device1%
  16. echo.
  17. echo     2.%device2%
  18. echo ==========================================
  19. set /p startsn1=你的选择是(输入序号):
  20. if %startsn1% ==1 (
  21. set startsn=%device1%
  22. goto menu
  23. )
  24. if %startsn1%==2 (
  25. set startsn=%device2%
  26. goto menu
  27. )
  28. :menu
  29. cls
  30. echo =============请选择 ==============
  31. echo     1.返回上一级                  2.开始
  32. echo ===========================
  33. set /p user_input=选择(输入序号):
  34. if %user_input% ==1 goto getsn
  35. if %user_input%==2 goto :run
  36. :run
  37. echo start test
  38. pause
复制代码

本帖最后由 idwma 于 2021-11-5 00:00 编辑
  1. @echo off
  2. :getsn
  3. setlocal enabledelayedexpansion
  4. #获取手机的sn并赋值给变量,可以有多个手机
  5. FOR /F "skip=1 tokens=1 delims= " %%i in (1.txt) do (
  6. if not defined d1 (set d1=%%i) else (
  7. if not defined d2 (set d2=%%i
  8. FOR /F "usebackq tokens=1 delims= " %%a in ('!d1!') do set device1=%%a
  9. FOR /F "usebackq tokens=1 delims= " %%i in ('!d2!') do set device2=%%i
  10. call :startsn
  11. set d1=
  12. set d2=
  13. )
  14. )
  15. )
  16. goto :eof
  17. ::取出设备信息的sn
  18. :startsn
  19. cls
  20. echo =============请选择sn  =============
  21. echo     1.%device1%
  22. echo.
  23. echo     2.%device2%
  24. echo ==========================================
  25. set /p startsn1=你的选择是(输入序号):
  26. if %startsn1% ==1 (
  27. set startsn=%device1%
  28. call :menu
  29. )
  30. if %startsn1%==2 (
  31. set startsn=%device2%
  32. call :menu
  33. )
  34. goto :eof
  35. :menu
  36. cls
  37. echo =============请选择 ==============
  38. echo     1.返回上一级                  2.开始
  39. echo ===========================
  40. set /p user_input=选择(输入序号):
  41. if %user_input% ==1 goto :eof
  42. if %user_input%==2 goto :run
  43. goto :eof
  44. :run
  45. echo start test
  46. pause
复制代码

TOP

返回列表