请教高手在DOS下用批处理怎么实现计数,开一次机自动某个值加一
具体描述:
在DOS下面编一个批处理,要求开机的时候会自动调用批处理,然后做一次计数(如第一次运行这个批处理,他计数1,第二次再调用他时,他计数2,)这个计数是一个绝对值,就是开多少次机,他这个值就是多少。这个值能赋予某个变量,允许其他程序来调用这个变量值,或是利用这个变量来命名文件名。(比如开机51次。那么这个值就应该是51 。那就是有这么一个N=51,N这个变量就可以让其他程序调用。例如某程序运行后,输出一个文件的时候,命名为TEST"N".
有高手帮我把计数弄出来了。
把当前版本写到文件或者是注册表里三。。。
比如
@echo off
setlocal
set TMPFILE=curr.ver
if exist %TMPFILE% for /f %%a in ('type %TMPFILE%') do ( set CURRVER=%%a ) else ( set CURRVER=1 )
echo currver == %CURRVER%
set /a NEXTVER = CURRVER + 1
echo %NEXTVER% > %TMPFILE%
结果:
16:55:57.38>111.cmd && 111.cmd && 111.cmd && 111.cmd
currver == 1
currver == 2
currver == 3
currver == 4
这个我测试了,在WINXP下的DOS能正常运行,在MSDOS下不能运行。提示有几个错误。
有高手也帮我用C编了一个程序
先写一个这样的C++程序
C/C++ code#include <fstream>
using namespace std;
int main()
{
ifstream instuf("count.dat", ios::in);
int n;
if (instuf)
{
instuf>>n;
instuf.close();
}
else
{
n = 0;
}
ofstream outstuf("count.dat", ios::out);
n++;
outstuf<<n;
outstuf.close();
return 0;
}
上面这个程序是用来更新count.dat里面的数值的。每运行一次加1。
接着,把这个程序编译一下,把生成的.exe文件放到C盘根目录(假设那个.exe文件名是count.exe)
最后,在C盘根目录下新建一个叫autoexec.bat的文件(可能已经存在,如果存在,在这个文件后面加上下面语句就行),然后输入
count.exe
至于我后面的部分则没有加进去。不知道如何实现。
能做到像下面的这样吗?
@echo off
setlocal
set TMPFILE=curr.ver
if exist %TMPFILE% for /f %%a in ('type %TMPFILE%') do ( set CURRVER=%%a ) else ( set CURRVER=1 )
echo currver == %CURRVER%
set /a NEXTVER = CURRVER + 1
echo %NEXTVER% > %TMPFILE%
这段是计数
调用某个程序生成了一个文件AA.XX
REN AA.XX (调用上面的计数).XX
OVER
就是调用这个程序不知道在什么地方调用。望高手指点。
[解决办法]
没这么麻烦吧,逻辑很清晰:
aotuexec在windows启动的时候调用count.exe;
count.exe读取count.dat:
存在count.dat,那么读文件得到当前启动次数,把该值加1,写文件;
没有count.dat文件,则新建一个。把开机次数0写入文件。
关闭文件。
[解决办法]
涉及到开关机,只能用文件计数比较合适了
[解决办法]
程序里面加个文件是否存在的判断
批处理命令:
@echo off
cd 存放目录
程序名
type count.dat