如何在批处理文件中增加文本文件中的值?

时间:2014-01-13 22:30:42

标签: batch-file

我一直在尝试编写一个批处理代码:

  1. POST后自动执行。
  2. 增加一个值,表示POST的数量。
  3. 保存,显示值并重新启动PC。
  4. 我试过写一个访问txt文件的值;但是值不会增加。

    @echo off
    
    echo.This script is counting the # of POSTs.
    
    cd "C:\Users\HP-M6\Documents"
    for /f "tokens=* delims=" %%x in (TEST.txt)  do echo %%x
    
    call:myPOSTTest
    
    for /f "tokens=* delims=" %%x in (TEST.txt)  do echo %%x
    
    echo.&pause&goto:eof
    
    ::--------------------------------------------------------
    ::-- Function section starts below here
    ::--------------------------------------------------------
    -- 
    :myPOSTTest    - here starts my function identified by it's label
    
    cd "C:\Users\HP-M6\Documents"
    
    for /f "tokens=* delims=" %%x in (TEST.txt) do (
    
    set %x%+=1
    
    )
    
    goto:eof
    

2 个答案:

答案 0 :(得分:4)

for /f "tokens=* delims=" %%x in (TEST.txt) do (
 set %x%+=1
)

这样做是将TEST.txt的内容分配给元变量(循环控制变量)%%x

然后它将值“1”赋给用户变量“[用户变量的内容x] +”

由于尚未设置用户变量x,因此会将1分配给用户变量+

这应该重写

for /f "tokens=* delims=" %%x in (TEST.txt) do (
 set /a var=%%x+1
)

即,将从文件读取的值分配给用户变量var到元变量%%x + 1. /a上的set修饰符表示{{ 1}}。

然后您需要将值写出来,因此替换例程是

resolve the assignment as an arithmetic expression, not a string-assignment

请注意,由于文件中只有一个令牌,因此:myPOSTTest - here starts my function identified by its label cd "C:\Users\HP-M6\Documents" for /f %%x in (TEST.txt) do ( set /a var=%%x+1 ) >TEST.txt echo %var% goto:eof tokens短语是多余的。

这也假定delims已存在且初始内容为TEST.TXT。为了确保安全,最终版本应为:

0

如果该文件尚不存在,将创建一个简单为'0'的初始行的文件。


(次要编辑) - 应该在检测到文件之前完成目录更改。

答案 1 :(得分:0)

startnet.cmd包括:

wpeinit A:\ POSTcounter.cmd

POSTcounter.cmd包括:

@echo off

echo. This script is counting the # of POSTs.
echo.                                        

call:myPOSTTest

for /f "tokens=* delims=" %%x in (TEST.txt)  do echo POST# %%x

echo.&pause&goto:eof


:myPOSTTest    - here starts my function identified by its label

cd "A:\"

if not exist TEST.txt >TEST.txt echo 0

for /f %%x in (TEST.txt) do (

set /a var=%%x+1

)

>TEST.txt echo %var%

goto:eof