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

[其他] [求助]for循环内如何endlocal&set %1=

本帖最后由 2198114498 于 2022-6-14 22:10 编辑

以下是我自己测试的代码,Test2和Test3均提示错误,
但我的需求是最外层不使用setlocal enabledelayedexpansion,所以不能用Test4。
有办法让endlocal&set %1=在for循环内成功吗?
  1. @echo off
  2. cd /d %~dp0
  3. call :#Test t 11
  4. echo %t%
  5. call :#Test2 t 12
  6. echo %t%
  7. call :#Test3 t 13
  8. echo %t%
  9. setlocal enabledelayedexpansion
  10. call :#Test4 t 14
  11. echo %t%
  12. pause
  13. goto :eof
  14. :#Test
  15. setlocal enabledelayedexpansion
  16. for /f "delims=" %%a in ("%2") do (
  17.         set d2=%%a000
  18.         goto :@1
  19. )
  20. goto :eof
  21. :@1
  22. endlocal &set /a %1=1%d2:~0,3%-1000
  23. goto :eof
  24. :#Test2
  25. setlocal enabledelayedexpansion
  26. for /f "delims=" %%a in ("%2") do (
  27.         set d2=%%a000
  28.         endlocal &set /a %1=1%d2:~0,3%-1000
  29.         goto :eof
  30. )
  31. goto :eof
  32. :#Test3
  33. setlocal enabledelayedexpansion
  34. for /f "delims=" %%a in ("%2") do (
  35.         set d2=%%a000
  36.         endlocal &set /a %1=1!d2:~0,3!-1000
  37.         goto :eof
  38. )
  39. goto :eof
  40. :#Test4
  41. setlocal enabledelayedexpansion
  42. for /f "delims=" %%a in ("%2") do (
  43.         endlocal &set d2=%%a000&set /a %1=1!d2:~0,3!-1000
  44.         goto :eof
  45. )
  46. goto :eof
复制代码

返回列表