标题: 计数的问题
[打印本页]
作者: scriptor
时间: 2007-1-1 12:11
标题: 计数的问题
怎么写一个批处理,让他自动的记住是第几次运行?
作者: youxi01
时间: 2007-1-1 12:32
将运行次数写进一个文件或注册表吧
作者: scriptor
时间: 2007-1-1 12:46
不能在P中实现吗,不改写注册表,不用另外的文件?
作者: youxi01
时间: 2007-1-1 12:53
当然也可以,不过稍微麻烦一点
作者: scriptor
时间: 2007-1-1 13:11
那就请贴代码
谢谢
作者: zh159
时间: 2007-1-1 16:25
必须在批处理最后一行换行为空行
1、最简单的办法,在批处理中加入:
set/p=:<nul>>%~nx0
计算“:”的个数
2、显示当前运行次数:
@echo off
for /f "tokens=1,2* delims=:" %%i in ('findstr /nv "`" %~nx0') do set /a N=%%i-1
for /f "skip=%N% delims=" %%i in (%~nx0) do (
for %%n in (%%i) do set /a %%n+=1)
set /a :+=1
echo.&echo. 第 %:% 运行。&echo.
set/p=: <nul>>%~nx0
pause
exit
作者: scriptor
时间: 2007-1-2 01:07
Many Thanks
Happy New Year
作者: scriptor
时间: 2007-1-2 01:09
调试了
很好的
不过还要研究一下,我还没有仔细看代码
先谢谢了
作者: scriptor
时间: 2007-1-7 02:28
那个代码由问题啊
只能记到2
往后就总是2,谁来解决??
作者: jmz573515
时间: 2007-1-7 04:55
是不是可以用VBS写一个,怪我无知,汗~~
[
Last edited by jmz573515 on 2007-1-22 at 10:16 PM ]
作者: scriptor
时间: 2007-1-7 04:59
waw。。。
又来了一个vbs的
呵呵。。。。
好的,谢谢。
作者: scriptor
时间: 2007-1-7 05:00
能不能只用BAT的格式把这个问题解决阿?
谢谢
作者: namejm
时间: 2007-1-7 05:18
演示代码:
@echo off
:: 只有在不关闭这个脚本的情况下才能计数
:loop
cls
set /a num+=1
echo 这是第 %num% 次运行
pause
goto loop
作者: scriptor
时间: 2007-1-7 05:37
我要的不是这个情况,我说的是每次运行就一次数
怎么实现?只用bat
作者: dikex
时间: 2007-1-7 05:43
echo 内容 >> 批处理自身
使用这个就可以了
原理大致这样,有兴趣作出一些修正之类的
[
Last edited by dikex on 2007-1-6 at 04:45 PM ]
作者: jmz573515
时间: 2007-1-7 05:52
我写的这个VBS原理是这样的。
读取tmp.txt这个文件,如果没有则表示第一次运行,就建立tmp.txt这个文件在里面输入“1”。
如果有就读取里面的“1”之后再加上1,重新写入这个文件。并且显示运行第几次。(跟据tmp.txt里的数字显示)
BAT怎么写,这实在是门外汉无能为力。:(
在这写上我的思路,仅供参考。
作者: 9527
时间: 2007-1-7 05:53
其实这种方法并不好,如果退出当前CMD SHELL无效,已经定义了变量A无效,还在寻求最佳方案
@echo off
if not defined a (set a=1) else (set/a a=%a%+1)
echo P处理运行了%a%次
[
Last edited by 9527 on 2007-1-7 at 05:54 AM ]
作者: namejm
时间: 2007-1-7 06:24
不使用注册表或者临时文件而计算运行次数的话,不仅批处理办不到,其他的语言也是不可能办到的,因为始终要把使用次数放到某个不容易丢失数据的地方保存起来,以便下次运行的时候把它读取出来——BTW,把这个使用次数放到批处理文件自身也可以看作是使用了临时文件,只不过是变相地使用而已。
作者: vkill
时间: 2007-1-7 08:15
Quote: |
Originally posted by namejm at 2007-1-7 06:24:
不使用注册表或者临时文件而计算运行次数的话,不仅批处理办不到,其他的语言也是不可能办到的,因为始终要把使用次数放到某个不容易丢失 ... |
|
同意
作者: scriptor
时间: 2007-1-7 10:07
既然都这么说,,那就暂时结束。嘿嘿
作者: zh159
时间: 2007-1-7 13:11
我 6 楼的代码有个缺点:批处理文件名不能包含有空格
改进可以包含空格:
@echo off
for /f "tokens=1,2* delims=:" %%i in ('findstr /nv "`" "%~nx0"') do set /a N=%%i-1
for /f "skip=%N% delims=" %%i in ('type "%~nx0"') do (
for %%n in (%%i) do set /a %%n+=1)
set /a :+=1
echo.&echo. 第 %:% 运行。&echo.
set/p=: <nul>>"%~nx0"
pause
exit
文件名不能包含有特殊符号!
编好后的的批处理必须在最后一行换行为空行
XP SP2测试通过
[
Last edited by zh159 on 2007-1-7 at 12:15 AM ]
作者: 26933062
时间: 2007-1-7 13:42
没注意看已经有好方法了,呵呵
[
Last edited by 26933062 on 2007-1-7 at 12:48 AM ]
作者: scriptor
时间: 2007-1-8 01:53
好了,很好的
是不是加一个'type "%~nx0"'就可以处理含有空格的文件名阿?