我一直在尝试编写一个批处理代码,它将:
- POST 后自动执行。
- 增加一个代表 POST 数量的值。
- 保存、显示值并重新启动电脑。
我尝试编写一个访问 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
请注意,由于文件中只有一个标记,因此 tokens
和 delims
短语是多余的。
这还假设 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/