中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 12:12
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]如何让批处理修改自身的计数?
可打印版本  953 / 10
第1楼 bat-zw 发表于 2008-03-29 02:02
金牌会员 发帖 1,276 积分 3,105
[求助]如何让批处理修改自身的计数?
  怎么在运行批处理时将最后一行的数值加1,如最后一行是0,运行一次后变成1,运行两次后变成2。。。。。。。。。运行n次后变成n,也就是如何不调用外部数据下记录本身运行的次数?

[ Last edited by lxmxn on 2008-3-30 at 09:55 AM ]
第2楼 bat-zw 发表于 2008-03-29 02:05
金牌会员 发帖 1,276 积分 3,105
我想了个代码,但不能实现:
for /f "tokens=*" %%i in (b.bat) do (
set n=%%i
)
set /a n+=1
echo run %n%
ping /n 4 127.1 >nul
for /f "skip=9 tokens=1" %%i in (b.bat) do (
set /a %%i+=1
)
0

[ Last edited by zw19750516 on 2008-3-29 at 02:47 AM ]
第3楼 terse 发表于 2008-03-29 02:07
银牌会员 发帖 946 积分 2,404
我在你发的 批处理本身运行的次数里 回复的写在第一排的 其实原理是一样
第4楼 bat-zw 发表于 2008-03-29 02:11
金牌会员 发帖 1,276 积分 3,105
请明示啊,急啊,谢谢了!
第5楼 bat-zw 发表于 2008-03-29 02:15
金牌会员 发帖 1,276 积分 3,105
将最后一行用变量替换掉也可以,问题是如何实现?
第6楼 bat-zw 发表于 2008-03-29 02:22
金牌会员 发帖 1,276 积分 3,105
又想了个能实现的,但还有问题:
纪录次数是没问题了,但。。。。
for /f "tokens=*" %%i in (b.bat) do (
set n=%%i
)
set /a n+=1
echo run %n%
ping /n 4 127.1 >nul
echo %n% >>b.bat
0

[ Last edited by zw19750516 on 2008-3-29 at 02:23 AM ]
第7楼 bat-zw 发表于 2008-03-29 03:03
金牌会员 发帖 1,276 积分 3,105
解决了主要问题了:
  虽然还是会增长批处理本身的行数,但对于限使用程序次数(一般不会超过100次吧),还是足够了,也请高手们出个完善的代码吧!
第8楼 terse 发表于 2008-03-29 03:27
银牌会员 发帖 946 积分 2,404
不知道对你有用否?
@echo off
cd.>_emp
for /f "tokens=1,2 delims=:" %%i in ('findstr /n . %0') do set /a n=%%i 2>nul&set t=%%j
for /f "delims=" %%i in ('findstr /n .* %0') do (
set /a m=%%i 2>nul
set "src=%%i"
setlocal enabledelayedexpansion
set "src=!src:*:=!"
if !n! EQU !m! goto end
echo.!src!>>_emp
endlocal
)
:end
set/a t+=1
echo 运行第 %t% 次
>>_emp echo.: %t%
move /y "_emp" "%~f0" 2>NUL
pause
: 0
第9楼 bat-zw 发表于 2008-03-29 03:33
金牌会员 发帖 1,276 积分 3,105
谢谢了,我是要不生成临时文件的,还是非常感谢哈!
第10楼 ThinKing 发表于 2008-03-29 13:34
中级用户 发帖 207 积分 471
PS一下:以后不要搞这样的标题了,很没水准和道德。
第11楼 261621998 发表于 2008-05-08 05:10
初级用户 发帖 23 积分 32
:num
set /a n+=1
...
...
...
pause>nul&echo 你按了%n%次
if %n%==n exit
goto num


你看这样行不
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023