标题:计数的问题
作者:scriptor | 时间:2007-01-01 12:11 | 标题:计数的问题
怎么写一个批处理,让他自动的记住是第几次运行?
作者:youxi01 | 时间:2007-01-01 12:32
将运行次数写进一个文件或注册表吧
作者:scriptor | 时间:2007-01-01 12:46
不能在P中实现吗,不改写注册表,不用另外的文件?
作者:youxi01 | 时间:2007-01-01 12:53
当然也可以,不过稍微麻烦一点
作者:scriptor | 时间:2007-01-01 13:11
那就请贴代码
谢谢
作者:zh159 | 时间:2007-01-01 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-01-02 01:07
Many Thanks
Happy New Year
作者:scriptor | 时间:2007-01-02 01:09
调试了
很好的
不过还要研究一下,我还没有仔细看代码
先谢谢了
作者:scriptor | 时间:2007-01-07 02:28
那个代码由问题啊
只能记到2
往后就总是2,谁来解决??
作者:jmz573515 | 时间:2007-01-07 04:55
是不是可以用VBS写一个,怪我无知,汗~~
[ Last edited by jmz573515 on 2007-1-22 at 10:16 PM ]
作者:scriptor | 时间:2007-01-07 04:59
waw。。。
又来了一个vbs的
呵呵。。。。
好的,谢谢。
作者:scriptor | 时间:2007-01-07 05:00
能不能只用BAT的格式把这个问题解决阿?
谢谢
作者:namejm | 时间:2007-01-07 05:18
演示代码:
@echo off
:: 只有在不关闭这个脚本的情况下才能计数
:loop
cls
set /a num+=1
echo 这是第 %num% 次运行
pause
goto loop
作者:scriptor | 时间:2007-01-07 05:37
我要的不是这个情况,我说的是每次运行就一次数
怎么实现?只用bat
作者:dikex | 时间:2007-01-07 05:43
echo 内容 >> 批处理自身
使用这个就可以了
原理大致这样,有兴趣作出一些修正之类的
[ Last edited by dikex on 2007-1-6 at 04:45 PM ]
作者:jmz573515 | 时间:2007-01-07 05:52
我写的这个VBS原理是这样的。
读取tmp.txt这个文件,如果没有则表示第一次运行,就建立tmp.txt这个文件在里面输入“1”。
如果有就读取里面的“1”之后再加上1,重新写入这个文件。并且显示运行第几次。(跟据tmp.txt里的数字显示)
BAT怎么写,这实在是门外汉无能为力。:(
在这写上我的思路,仅供参考。
作者:9527 | 时间:2007-01-07 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-01-07 06:24
不使用注册表或者临时文件而计算运行次数的话,不仅批处理办不到,其他的语言也是不可能办到的,因为始终要把使用次数放到某个不容易丢失数据的地方保存起来,以便下次运行的时候把它读取出来——BTW,把这个使用次数放到批处理文件自身也可以看作是使用了临时文件,只不过是变相地使用而已。
作者:vkill | 时间:2007-01-07 08:15
Originally posted by namejm at 2007-1-7 06:24:
不使用注册表或者临时文件而计算运行次数的话,不仅批处理办不到,其他的语言也是不可能办到的,因为始终要把使用次数放到某个不容易丢失 ...
同意
作者:scriptor | 时间:2007-01-07 10:07
既然都这么说,,那就暂时结束。嘿嘿
作者:zh159 | 时间:2007-01-07 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-01-07 13:42
没注意看已经有好方法了,呵呵
[ Last edited by 26933062 on 2007-1-7 at 12:48 AM ]
作者:scriptor | 时间:2007-01-08 01:53
好了,很好的
是不是加一个'type "%~nx0"'就可以处理含有空格的文件名阿?
来源:https://www.cn-dos.net/forum/viewthread.php?tid=26242 · 打印时间 2026-06-16 06:23