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

[文件操作] 批处理For循环过程中,每次循环过程中 i 的值,分别赋值给变量a、b、c、d

For循环过程中,每次循环过程中i的值,如何分别中断一下,分别赋值给变量a、b、c、d、e、f?
  1. for /r . %%i in (*.txt) do (
  2. set "a=%%i"
  3. )
  4. Echo %a%
  5. pause
复制代码
这个变量a 最后把结果全都放在一起了。
请问 能不能在循环的过程中,把每次的结果分别赋值给a b c d e f ?

  1. @Echo off&SetLocal EnableDelayedExpansion&set n=0
  2. for /r %%i in (*.txt)do set /a n+=1&call set "a%%n%%=%%i"
  3. for /l %%i in (1,1,%n%)do Echo !a%%i!
  4. pause
复制代码

TOP

本帖最后由 Echo11 于 2022-9-23 08:33 编辑

回复 1# andycker

注意计数器不能用n这种单字母,因为你可能把它当作变量了。
最多支持A-Z 26个变量
  1. @ECHO OFF
  2. setlocal EnableDelayedExpansion
  3. SET count=9
  4. SET "10=A"& SET "11=B"& SET "12=C"& SET "13=D"& SET "14=E"& SET "15=F"& SET "16=G"& SET "17=H"& SET "18=I"& SET "19=J"& SET "20=K"& SET "21=L"& SET "22=M"& SET "23=N"& SET "24=O"& SET "25=P"& SET "26=Q"& SET "27=R"& SET "28=S"& SET "29=T"& SET "30=U"& SET "31=V"& SET "32=W"& SET "33=X"& SET "34=Y"& SET "35=Z"
  5. for /r . %%i in (*.txt) do SET /A count+=1&CALL :SetValue !count! "%%~i"
  6. ECHO.1、直接按需调用:
  7. Echo.A:%A%
  8. Echo.B:%B%
  9. Echo.C:%C%
  10. Echo.D:%D%
  11. Echo..:...
  12. Echo.Y:%Y%
  13. Echo.Z:%Z%
  14. ECHO.
  15. ECHO.2、按A-Z顺序打印或调用:
  16. for /L %%i in (10,1,35) do CALL :Print !%%i!
  17. pause&goto:eof
  18. :SetValue <变量名词典索引> <赋值>
  19. SET !%~1!=%~2
  20. goto:eof
  21. :Print <变量>
  22. Echo.%~1:!%~1!
  23. goto:eof
复制代码

TOP

本帖最后由 qixiaobin0715 于 2022-9-23 09:06 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%i in (*.txt) do set /a n+=1&set m=000!n!&set "Var!m:~-4!=%%i"
  3. set Var
  4. pause
复制代码

TOP

回复 2# smss


    感谢你在百忙中解答。我需要研究一下,你写的代码中的几个百分号:call set "a%%n%%=%%i"  。乍一看还真蒙圈了

TOP

回复 3# Echo11


    谢谢你的杰作~~~ 牛

TOP

qixiaobin0715 发表于 2022-9-23 08:43



    学习了,这个方法真的太棒了~~ 不论有几个变量 他都自动set出来了。给你点赞

TOP

返回列表