找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30602|回复: 6

[文本处理] 【已解决】求助批处理for嵌套延迟变量set赋值

[复制链接]
发表于 2019-5-15 16:14:33 | 显示全部楼层 |阅读模式
本帖最后由 blooderfly 于 2019-5-15 21:01 编辑

我想计算一个文件夹下各个txt指定一列的和,并把这个结果替换对应文本里的固定字符串,代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set sum=0
  4. for /F %%f in ('dir /b *.txt') do (
  5.         for /F "tokens=7 delims=, " %%n in (%%f) do  (
  6.         set /a sum=sum+%%n
  7.         )
  8.     for /F "Usebackq Delims=" %%c in (%%f) do  (
  9.     set var=%%c
  10.     echo !sum!
  11.     set var:替换=!sum!
  12.     echo !var!>>求和结果.txt
  13.     )
  14. set sum=0
  15. )
  16. pause
复制代码
echo !sum!有值,但是我对批处理不熟,不知道set怎么写,试了很多办法set里面sum都是空值,特来请教各位大神!
发表于 2019-5-15 18:53:58 | 显示全部楼层
  1. call set %%var:替换=!sum!%%
复制代码
这样可以吗?
 楼主| 发表于 2019-5-15 19:32:24 | 显示全部楼层
回复 2# Batcher


    像这样会提示环境变量没有定义。第一层FOR里面set sum=0也能生效,如果set写%sum%值是空的,不打百分号写sum就会直接返回字符串sum不当作变量,call echo %%!sum!%%也有值,但是set A:B=C不太懂,我是不是应该精简一个FOR嵌套
发表于 2019-5-15 19:43:28 | 显示全部楼层
回复 3# blooderfly


    txt文件压缩之后传一个上来我试试
 楼主| 发表于 2019-5-15 20:09:27 | 显示全部楼层
回复 4# Batcher


    打包了BAT加几个例子麻烦您看看。
发表于 2019-5-15 20:48:43 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. for /f "delims=" %%f in ('dir /a-d /b *.txt') do (
  7.     set sum=0
  8.     for /f "tokens=7 delims=, " %%n in ('type "%%f"^|find "MonGenEx"') do set /a "sum=sum+%%n"
  9.     (for /f "delims=" %%n in ('type "%%f"') do (
  10.         set "line=%%n"
  11.         for %%a in (!sum!) do echo;!line:求和=%%a!
  12.     ))>"#.tmp"
  13.     move "#.tmp" "%%f"
  14. )
  15. echo;%info%
  16. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
blooderfly + 1 完美解决

查看全部评分

 楼主| 发表于 2019-5-15 21:00:31 | 显示全部楼层
回复 6# zaqmlp


    完美解决,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:23 , Processed in 0.021379 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表