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

标签 batch-file

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

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

我尝试编写一个访问 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

最佳答案

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
)

也就是说,将从文件读取到元变量%%x + 1 的值分配给用户变量var/a set 上的 > 修饰符表示将赋值解析为算术表达式,而不是字符串赋值

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

: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

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

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

:myPOSTTest    - here starts my function identified by its label
cd "C:\Users\HP-M6\Documents"
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

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


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

关于batch-file - 如何在批处理文件中增加txt文件中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21102693/

相关文章:

windows - 无法附加到批处理文件中的环境变量

batch-file - 调用可移动驱动器中的 vbs 文件运行

loops - .bat 文件循环遍历文件夹并 append 文本文件

Windows批量字符串比较if语句错误?

windows - 运行 .bat 文件时如何隐藏 ms-dos 窗口?

windows - 为什么 findstr 不能正确处理大小写(在某些情况下)?

mysql - JDBC 批量插入性能

windows - 在txt文件中循环并使用批处理文件列出内容

java - 如何在.bat上拖放多个文件?

python - 从 Python 2 返回的区别——版本检查和 Python 3