Board logo

标题: 批处理按运行次数替换文档内容 [打印本页]

作者: 26933062     时间: 2007-1-10 08:24    标题: 批处理按运行次数替换文档内容

问题
有两个文档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 ]
作者: namejm     时间: 2007-1-10 09:07
  居然又是在同一帖子里问两个不相干的内容,最后一次提醒你:不相干的问题不要放在同一个帖子中,最好一帖一问。否则,嘿嘿……

  1、start "" "路径"
  2、按照你所描述的规律,没法类推,请检查你的描述是否正确。
作者: 26933062     时间: 2007-1-10 09:47
不好意识,看来我还是不太懂这里的规矩,一定改正.

我觉得已经描述的很清楚了,难道这不是规律?
就是每次将上一次改的内容再改为这一次提取的a.txt的内容.

[ Last edited by 26933062 on 2007-1-9 at 08:52 PM ]
作者: namejm     时间: 2007-1-10 10:01
  那第四次运行的时候,是把192.168.1.3替换掉呢,还是把192.168.1.2.3替换掉?第五次呢?……
作者: 26933062     时间: 2007-1-10 10:49
版主可能没看清我的问题,我在运行了第三次以后b.txt中就已经没有192.168.1.2了,因为192.168.1.2已经被替换成192.168.1.3了,那么第四次运行当然是把192.168.1.3替换为192.168.1.4
作者: namejm     时间: 2007-1-10 11:08
  哦,看来确实是我理解错了一些地方,但是我觉得你描述的规律似乎是不能“依次类推”的,因为你第二次运行的时候,要替换的是 192.168.1 而非 192.168.1.1
作者: 26933062     时间: 2007-1-10 11:17
哦  是我笔误,以改正
作者: xyzup     时间: 2007-1-10 12:24
依我看来应该需要设一个变量,然后每次运行后'自加'并保存在一个特定的地方...
这个变量代表行数.也就是运行的次数!~~
大约这样吧!@!
具体就不会了,...其他兄弟看看怎样写吧
作者: vkill     时间: 2007-1-11 01:16
写起来有点麻烦
作者: corz     时间: 2007-12-16 09:12
可以这么考虑,对两个文件进行比较,当第一行相同时,继续比较第二行,如果还相同就一直往下比较,不同的话,就将a文件的该行替换进b文件,执行一次退出。
下次再运行就会自动替换下一行了。
作者: ybxcyx     时间: 2007-12-30 22:01
统计运行次数,就是相应行数已经解决,但如何在楼主说的b.txt中查找IP,并替换还在思考之中.文件中任意位置的ip地址,不依赖文本中的ip怎样查找并提取,替换呢?
作者: ybxcyx     时间: 2007-12-31 22:57    标题: 可以统计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

我是初学者,在这里学习有了一些收获.希望大家多帮助,多鼓励.
只要把上面代码加到程序前面,就可以统计运行次数,很有趣.
作者: ybxcyx     时间: 2007-12-31 23:02
文件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