![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 12:13 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理按运行次数替换文档内容 |
| 可打印版本 2,955 / 12 |
| 第1楼 26933062 | 发表于 2007-01-10 08:24 |
| 银牌会员 发帖 879 积分 2,268 | |
|
批处理按运行次数替换文档内容 问题
有两个文档a和b a.txt内容如下 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 等等............. b.txt里的内容乱七八糟,但没有特殊字符 要求:建立一批处理zzz.bat 第一次运行zzz.bat将b.txt中的myip换成a.txt中的第一行的内容,然后退出. 第二次运行zzz.bat将b.txt中的192.168.1.1换成a.txt中的第二行内容,然后退出 第三次运行zzz.bat将b.txt中的192.168.1.2又换成a.txt中的第三行内容,退出 依次类推............ [ Last edited by 26933062 on 2007-1-9 at 10:17 PM ] |
|
| 第2楼 namejm | 发表于 2007-01-10 09:07 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
居然又是在同一帖子里问两个不相干的内容,
最后一次提醒你:不相干的问题不要放在同一个帖子中,最好一帖一问。否则,嘿嘿……1、start "" "路径" 2、按照你所描述的规律,没法类推,请检查你的描述是否正确。 |
|
| 第3楼 26933062 | 发表于 2007-01-10 09:47 |
| 银牌会员 发帖 879 积分 2,268 | |
|
不好意识,看来我还是不太懂这里的规矩,一定改正.
我觉得已经描述的很清楚了,难道这不是规律? 就是每次将上一次改的内容再改为这一次提取的a.txt的内容. [ Last edited by 26933062 on 2007-1-9 at 08:52 PM ] |
|
| 第4楼 namejm | 发表于 2007-01-10 10:01 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
那第四次运行的时候,是把192.168.1.3替换掉呢,还是把192.168.1.2.3替换掉?第五次呢?……
|
|
| 第5楼 26933062 | 发表于 2007-01-10 10:49 |
| 银牌会员 发帖 879 积分 2,268 | |
|
版主可能没看清我的问题,我在运行了第三次以后b.txt中就已经没有192.168.1.2了,因为192.168.1.2已经被替换成192.168.1.3了,那么第四次运行当然是把192.168.1.3替换为192.168.1.4
|
|
| 第6楼 namejm | 发表于 2007-01-10 11:08 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
哦,看来确实是我理解错了一些地方,但是我觉得你描述的规律似乎是不能“依次类推”的,因为你第二次运行的时候,要替换的是 192.168.1 而非 192.168.1.1。
|
|
| 第7楼 26933062 | 发表于 2007-01-10 11:17 |
| 银牌会员 发帖 879 积分 2,268 | |
|
哦 是我笔误,以改正
|
|
| 第8楼 xyzup | 发表于 2007-01-10 12:24 |
| 初级用户 发帖 16 积分 39 | |
|
依我看来应该需要设一个变量,然后每次运行后'自加'并保存在一个特定的地方...
这个变量代表行数.也就是运行的次数!~~ 大约这样吧!@! 具体就不会了,...其他兄弟看看怎样写吧 |
|
| 第9楼 vkill | 发表于 2007-01-11 01:16 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
写起来有点麻烦
|
|
| 第10楼 corz | 发表于 2007-12-16 09:12 |
| 新手上路 发帖 3 积分 6 | |
|
可以这么考虑,对两个文件进行比较,当第一行相同时,继续比较第二行,如果还相同就一直往下比较,不同的话,就将a文件的该行替换进b文件,执行一次退出。
下次再运行就会自动替换下一行了。 |
|
| 第11楼 ybxcyx | 发表于 2007-12-30 22:01 |
| 初级用户 发帖 11 积分 26 | |
|
统计运行次数,就是相应行数已经解决,但如何在楼主说的b.txt中查找IP,并替换还在思考之中.文件中任意位置的ip地址,不依赖文本中的ip怎样查找并提取,替换呢?
|
|
| 第12楼 ybxcyx | 发表于 2007-12-31 22:57 |
| 初级用户 发帖 11 积分 26 | |
|
可以统计bat文件运行次数 @ECHO OFF
if not exist 1.txt @ECHO On 0>1.txt @ECHO OFF setlocal enabledelayedexpansion for /f "delims=" %%i in (1.txt ) do ( set /a num+=1 if !num! equ 1 set var=%%i ) set /a var=!var!+1 echo !var! >1.txt echo 程序第!var!次运行! pause 我是初学者,在这里学习有了一些收获.希望大家多帮助,多鼓励. 只要把上面代码加到程序前面,就可以统计运行次数,很有趣. |
|
| 第13楼 ybxcyx | 发表于 2007-12-31 23:02 |
| 初级用户 发帖 11 积分 26 | |
|
文件ReadLine2.Bat(这个是别人编的)
@echo off&SetLocal ENABLEDELAYEDEXPANSION :::::::::::ReadLine2.Bat:::::::::::::::::: if "%1"=="" (goto --help) else (set file=%1) if not exist %file% goto :eof if "%2"=="" ( for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%file%"') do echo/%%b goto :eof ) else ( set args=%* for %%a in (!args!) do ( if not "%%a"=="%1" (for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%file%"') do ( if "%%b"=="%%a" echo/%%c&&echo/%%c>b.txt) ) ) ) goto :eof ::%%c就是要读行的内容。怎样去查询与替换b.txt的myip! 按运行次数读取a.txt中相应行数.bat echo on if not exist 1.txt @ECHO On 0>1.txt @ECHO OFF setlocal enabledelayedexpansion for /f "delims=" %%i in (1.txt ) do ( set /a num+=1 if !num! equ 1 set var=%%i ) set /a var=!var!+1 echo !var! >1.txt Call ReadLine2 a.txt !var! pause |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |