标题: [文件操作] 批处理For循环过程中,每次循环过程中 i 的值,分别赋值给变量a、b、c、d [打印本页]
作者: andycker 时间: 2022-9-22 21:56 标题: 批处理For循环过程中,每次循环过程中 i 的值,分别赋值给变量a、b、c、d
For循环过程中,每次循环过程中i的值,如何分别中断一下,分别赋值给变量a、b、c、d、e、f?- for /r . %%i in (*.txt) do (
- set "a=%%i"
- )
- Echo %a%
- pause
复制代码
这个变量a 最后把结果全都放在一起了。
请问 能不能在循环的过程中,把每次的结果分别赋值给a b c d e f ?
作者: smss 时间: 2022-9-23 08:00
- @Echo off&SetLocal EnableDelayedExpansion&set n=0
- for /r %%i in (*.txt)do set /a n+=1&call set "a%%n%%=%%i"
- for /l %%i in (1,1,%n%)do Echo !a%%i!
- pause
复制代码
作者: Echo11 时间: 2022-9-23 08:31
本帖最后由 Echo11 于 2022-9-23 08:33 编辑
回复 1# andycker
注意计数器不能用n这种单字母,因为你可能把它当作变量了。
最多支持A-Z 26个变量- @ECHO OFF
- setlocal EnableDelayedExpansion
- SET count=9
- 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"
- for /r . %%i in (*.txt) do SET /A count+=1&CALL :SetValue !count! "%%~i"
- ECHO.1、直接按需调用:
- Echo.A:%A%
- Echo.B:%B%
- Echo.C:%C%
- Echo.D:%D%
- Echo..:...
- Echo.Y:%Y%
- Echo.Z:%Z%
- ECHO.
- ECHO.2、按A-Z顺序打印或调用:
- for /L %%i in (10,1,35) do CALL :Print !%%i!
- pause&goto:eof
-
- :SetValue <变量名词典索引> <赋值>
- SET !%~1!=%~2
- goto:eof
-
- :Print <变量>
- Echo.%~1:!%~1!
- goto:eof
复制代码
作者: qixiaobin0715 时间: 2022-9-23 08:43
本帖最后由 qixiaobin0715 于 2022-9-23 09:06 编辑
- @echo off&setlocal enabledelayedexpansion
- for /r %%i in (*.txt) do set /a n+=1&set m=000!n!&set "Var!m:~-4!=%%i"
- set Var
- pause
复制代码
作者: andycker 时间: 2022-9-23 17:12
回复 2# smss
感谢你在百忙中解答。我需要研究一下,你写的代码中的几个百分号:call set "a%%n%%=%%i" 。乍一看还真蒙圈了
作者: andycker 时间: 2022-9-23 17:14
回复 3# Echo11
谢谢你的杰作~~~ 牛
作者: andycker 时间: 2022-9-23 17:21
qixiaobin0715 发表于 2022-9-23 08:43
学习了,这个方法真的太棒了~~ 不论有几个变量 他都自动set出来了。给你点赞
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |