我一直在尝试编写一个批处理代码:
我试过写一个访问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
答案 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