楼 主
[求助]如何让批处理修改自身的计数?
发表于 2008-03-29 02:02 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
怎么在运行批处理时将最后一行的数值加1,如最后一行是0,运行一次后变成1,运行两次后变成2。。。。。。。。。运行n次后变成n,也就是如何不调用外部数据下记录本身运行的次数?
[ Last edited by lxmxn on 2008-3-30 at 09:55 AM ]
本帖最近评分记录
(共 1 条)
点击查看详情
评分人 分数 时间
lxmxn
-8
2008-03-30 09:54
批处理之家新域名:www.bathome.net
第 2 楼
我想了个代码,但不能实现:
发表于 2008-03-29 02:05 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
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 ]
批处理之家新域名:www.bathome.net
第 3 楼
发表于 2008-03-29 02:07 · 中国 江苏 常州 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 UID 42345
状态 离线
我在你发的 批处理本身运行的次数里 回复的写在第一排的 其实原理是一样
简单!简单!再简单!
第 4 楼
发表于 2008-03-29 02:11 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
请明示啊,急啊,谢谢了!
批处理之家新域名:www.bathome.net
第 5 楼
发表于 2008-03-29 02:15 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
将最后一行用变量替换掉也可以,问题是如何实现?
批处理之家新域名:www.bathome.net
第 6 楼
又想了个能实现的,但还有问题:
发表于 2008-03-29 02:22 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
纪录次数是没问题了,但。。。。
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 ]
批处理之家新域名:www.bathome.net
第 7 楼
解决了主要问题了:
发表于 2008-03-29 03:03 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
虽然还是会增长批处理本身的行数,但对于限使用程序次数(一般不会超过100次吧),还是足够了,也请高手们出个完善的代码吧!
@echo off
for /f "tokens=2" %%i in (b.bat) do (
set n=%%i
)
set /a n+=1
echo run %n%
ping /n 4 127.1 >nul
echo goto %n% ^>nul 2^>nul >>b.bat
goto 0 >nul 2>nul
批处理之家新域名:www.bathome.net
第 8 楼
发表于 2008-03-29 03:27 · 中国 江苏 常州 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 UID 42345
状态 离线
不知道对你有用否?
@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 楼
发表于 2008-03-29 03:33 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 UID 112398 性别 男
状态 离线
谢谢了,我是要不生成临时文件的,还是非常感谢哈!
批处理之家新域名:www.bathome.net
第 10 楼
发表于 2008-03-29 13:34 · 中国 湖北 武汉 电信
中级用户
★★
积分 471 发帖 207 注册 2007-05-03 14:53 UID 87369 性别 男
状态 离线
PS一下:以后不要搞这样的标题了,很没水准和道德。
第 11 楼
发表于 2008-05-08 05:10 · 中国 广西 玉林 电信
初级用户
★
积分 32 发帖 23 注册 2008-05-05 08:01 UID 117787 性别 男
状态 离线
:num
set /a n+=1
...
...
...
pause>nul&echo 你按了%n%次
if %n%==n exit
goto num
你看这样行不
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正