标题: [文本处理] 【已解决】求助批处理for嵌套延迟变量set赋值 [打印本页]
作者: blooderfly 时间: 2019-5-15 16:14 标题: 【已解决】求助批处理for嵌套延迟变量set赋值
本帖最后由 blooderfly 于 2019-5-15 21:01 编辑
我想计算一个文件夹下各个txt指定一列的和,并把这个结果替换对应文本里的固定字符串,代码如下:- @echo off
- setlocal enabledelayedexpansion
- set sum=0
- for /F %%f in ('dir /b *.txt') do (
- for /F "tokens=7 delims=, " %%n in (%%f) do (
- set /a sum=sum+%%n
- )
- for /F "Usebackq Delims=" %%c in (%%f) do (
- set var=%%c
- echo !sum!
- set var:替换=!sum!
- echo !var!>>求和结果.txt
- )
- set sum=0
- )
- pause
复制代码
echo !sum!有值,但是我对批处理不熟,不知道set怎么写,试了很多办法set里面sum都是空值,特来请教各位大神!
作者: Batcher 时间: 2019-5-15 18:53
- call set %%var:替换=!sum!%%
复制代码
这样可以吗?
作者: blooderfly 时间: 2019-5-15 19:32
回复 2# Batcher
像这样会提示环境变量没有定义。第一层FOR里面set sum=0也能生效,如果set写%sum%值是空的,不打百分号写sum就会直接返回字符串sum不当作变量,call echo %%!sum!%%也有值,但是set A:B=C不太懂,我是不是应该精简一个FOR嵌套
作者: Batcher 时间: 2019-5-15 19:43
回复 3# blooderfly
txt文件压缩之后传一个上来我试试
作者: blooderfly 时间: 2019-5-15 20:09
回复 4# Batcher
打包了BAT加几个例子麻烦您看看。
作者: zaqmlp 时间: 2019-5-15 20:48
- @echo off&setlocal enabledelayedexpansion
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- for /f "delims=" %%f in ('dir /a-d /b *.txt') do (
- set sum=0
- for /f "tokens=7 delims=, " %%n in ('type "%%f"^|find "MonGenEx"') do set /a "sum=sum+%%n"
- (for /f "delims=" %%n in ('type "%%f"') do (
- set "line=%%n"
- for %%a in (!sum!) do echo;!line:求和=%%a!
- ))>"#.tmp"
- move "#.tmp" "%%f"
- )
- echo;%info%
- pause
复制代码
作者: blooderfly 时间: 2019-5-15 21:00
回复 6# zaqmlp
完美解决,非常感谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |