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

[数值计算] 批处理命令set表达式为啥不能累加计算?

[复制链接]
发表于 2013-10-25 18:25:29 | 显示全部楼层 |阅读模式
afile.txt文件内容:
UserName1=  
UserName2=  
UserName3=

希望生成bfile.txt文件内容:
UserName1=  
welcom you!
UserName2=  
UserName3=

代码如下:
  1. @echo off
  2. set /a n=0
  3. FOR /F "delims=" %%i in (afile.txt) do (
  4.          echo %%i >> bfile.txt
  5.          set /a n=%n%+1
  6.          echo %n%
  7.          if %n% equ 1 (
  8.                 echo welcom you! >> bfile.txt
  9.          )
  10.          
  11. )
复制代码
想在第二行加入字符串,但是 set /a n=%n%+1并没有累加计算,谁能解决下》?
发表于 2013-10-25 18:33:24 | 显示全部楼层
本帖最后由 foxJL 于 2013-10-25 18:35 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a n=0
  3. FOR /F "delims=" %%i in (afile.txt) do (
  4.          echo %%i >> bfile.txt
  5.          set /a n+=1
  6.          echo !n!
  7.          if !n! equ 1 (
  8.                 echo welcom you^! >> bfile.txt
  9.          )
  10.          
  11. )
  12. pause
复制代码
 楼主| 发表于 2013-10-25 18:37:13 | 显示全部楼层
回复 2# foxJL

    真感谢呀!
   不过, 好像welcom you ! 的感叹号没有输出来? 为啥呀》?
发表于 2013-10-25 18:41:22 | 显示全部楼层
回复 3# awool

因为开启变量延迟后!号变成了引用变量的特殊符号,要加上^符号转义后才能输出.
上面更新了,你再试.
发表于 2013-10-25 18:44:24 | 显示全部楼层
如果文件不大 可以这样处理
  1. @echo off
  2. set /p str=<"a.txt"
  3. >bfile.txt (
  4. echo %str%
  5. echo welcom you!
  6. more +1 a.txt
  7. )
  8. pause
复制代码
发表于 2013-10-25 19:05:15 | 显示全部楼层
本帖最后由 digger 于 2013-10-25 19:06 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2.     set m=1
  3. for /f "delims=" %%i in (afile.txt) do (
  4.     if  "!m!"=="1" (echo.%%i&echo.welcom you^^!&set m=) else echo %%i
  5.     )>>bfile.txt
  6. pause
复制代码
发表于 2013-10-25 23:09:11 | 显示全部楼层
开启延迟环境变量扩展
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 16:05 , Processed in 0.021046 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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