Board logo

标题: [数值计算] 批处理命令set表达式为啥不能累加计算? [打印本页]

作者: awool    时间: 2013-10-25 18:25     标题: 批处理命令set表达式为啥不能累加计算?

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. )
复制代码
想在第二行加入字符串,但是 set /a n=%n%+1并没有累加计算,谁能解决下》?
作者: foxJL    时间: 2013-10-25 18:33

本帖最后由 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
复制代码

作者: awool    时间: 2013-10-25 18:37

回复 2# foxJL

    真感谢呀!
   不过, 好像welcom you ! 的感叹号没有输出来? 为啥呀》?
作者: foxJL    时间: 2013-10-25 18:41

回复 3# awool

因为开启变量延迟后!号变成了引用变量的特殊符号,要加上^符号转义后才能输出.
上面更新了,你再试.
作者: terse    时间: 2013-10-25 18:44

如果文件不大 可以这样处理
  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
复制代码

作者: digger    时间: 2013-10-25 19:05

本帖最后由 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
复制代码

作者: 522235677    时间: 2013-10-25 23:09

开启延迟环境变量扩展




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2