поиск добавить и заменить на пакет - PullRequest
0 голосов
/ 20 марта 2012

Мне нужен командный файл, который будет искать строку «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>

1 Ответ

0 голосов
/ 20 марта 2012
@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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...