[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理命令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: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
复制代码

TOP

回复 2# foxJL

    真感谢呀!
   不过, 好像welcom you ! 的感叹号没有输出来? 为啥呀》?

TOP

回复 3# awool

因为开启变量延迟后!号变成了引用变量的特殊符号,要加上^符号转义后才能输出.
上面更新了,你再试.

TOP

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

TOP

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

TOP

开启延迟环境变量扩展

TOP

返回列表