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

use*_*643 2 batch-file

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

  1. POST后自动执行。
  2. 增加一个代表 POST 数量的值。
  3. 保存、显示值并重新启动 PC。

我试图编写一个访问 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
Run Code Online (Sandbox Code Playgroud)

Mag*_*goo 5

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

它将执行的操作是将 的内容分配TEST.txt给元变量(循环控制变量)%%x

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

x由于尚未设置user-variable ,因此分配1给 user-variable +

这应该重写

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

也就是说,将从var文件读取到元变量中的值分配给用户变量%%x+ 1。/a上的修饰符set意味着resolve the assignment as an arithmetic expression, not a string-assignment

然后您需要将值写入文件,因此替换例程是

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

请注意,由于文件中只有一个标记,因此tokensdelims短语是多余的。

这还假设TEST.TXT已经存在并且初始内容为0。为了确保安全,最终版本应该是:

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

如果该文件尚不存在,则将创建首行为“0”的文件。


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