2012-03-19 54 views
0

我需要一个批量文件来搜索字符串“Gen_1_X”。当找到字符串并且假定“X”是“4”时,该脚本将在之前和之后添加“Gen_1_3”和“Gen_1_5”。基本上从原始数字中加入和减去一个,并相应地在前后添加新的条目。第一块代码是最终产品的外观。第二块是你必须使用的。搜索使用批量添加和替换

<span class="O verse Gen_1_3" data-osis="Gen.1.3"><span class="verse-num v-4">4&nbsp; 
<span class="O verse Gen_1_4" data-osis="Gen.1.4"><span class="verse-num v-4">4&nbsp; </span></span> 
<span class="O verse Gen_1_5" data-osis="Gen.1.5"><span class="verse-num v-4">4&nbsp; 

<span class="O verse Gen_1_5" data-osis="Gen.1.5"><span class="verse-num v-5">5&nbsp;</span></span> 
<span class="O verse Gen_1_6" data-osis="Gen.1.6"><span class="verse-num v-6">6&nbsp;</span></span> 
<span class="O verse Gen_1_7" data-osis="Gen.1.7"><span class="verse-num v-7">7&nbsp;</span></span> 
<span class="O verse Gen_1_8" data-osis="Gen.1.8"><span class="verse-num v-8">8&nbsp;</span></span> 
<span class="O verse Gen_1_9" data-osis="Gen.1.9"><span class="verse-num v-9">9&nbsp;</span></span> 
+0

你有什么试过?你有什么问题?另外,我可能会丢失一些东西,但是,当找到字符串Gen_1_X时,X是X,而不是4. – 2012-03-19 20:22:40

+0

X可以是任意数字。假设X是3,那么“Gen_1_3”,那么脚本会在被称为“Gen_1_2”之前和之后添加一行,并且Gen_1_4“ – Blainer 2012-03-19 20:25:42

+0

向我们显示您尝试的初始批处理文件,以及哪些不起作用,然后我们可能会帮助您 – 2012-03-19 20:32:15

回答

0
@echo off 
setlocal EnableDelayedExpansion 
call :processFile <inputFile.ext> outputFile.ext 
goto :EOF 

:processFile 
    set line=EOF 
    set /P line= 
    if "!line!" == "EOF" goto :EOF 
    set X= 
    set "lineNoGen=!line:Gen_1_=$!" 
    if "!lineNoGen!" neq "!line!" (
     for /F "tokens=1-3 delims=$" %%a in ("!lineNoGen:Gen.1.=$!") do (
     set "beforeGen=%%a" 
     set "betweenGens=%%b" 
     set "afterGen=%%c" 
     set "X=!betweenGens:~0,1!" 
     set /A Xm1=X-1, Xp1=X+1 
     echo !beforeGen!Gen_1_!Xm1!!betweenGens:~1!Gen.1.!Xm1!!afterGen:~1! 
    ) 
    ) 
    echo !line! 
    if defined X (
     echo !beforeGen!Gen_1_!Xp1!!betweenGens:~1!Gen.1.!Xp1!!afterGen:~1! 
    ) 
goto :processFile 

注:

1-先前批文件在输入文件中的第一个空行结束。如有需要,可以解决这个问题。

2-输入行有一定限制。有些可能会解决,但有些可能不会。请做一个测试并报告结果。

3-我想输入行没有$字符。如果是这样,请更改另一个未使用字符的批处理文件中的$。

编辑:我修复了一个小错误,它不会更新Gen.1.X部分中的数字。

+0

这很好用!是否有编辑原始文件而不是生成新文件? – Blainer 2012-03-20 15:09:11