Зацикливание на fart.exe и замена поиска и замена текста переменными - PullRequest
0 голосов
/ 25 октября 2018

У меня есть несколько сложный поиск и замена, которые мне нужно сделать.Я использую пакетный файл, который зацикливается и выполняет fart.exe, и я пытаюсь ввести строки из двух разных массивов в поле «поиск» и поле «заменить».

Все работает, КРОМЕ этого параметраокончательные переменные не работают, они вставляются в команды как пустые строки.Как мне получить значение моих массивов в эти переменные?

Обратите внимание, что причина, по которой я ищу идентификатор, а не заменяю его, заключается в том, что это является частью проверки того, что я заменяю правильную ссылку.

Мой код:

setlocal EnableDelayedExpansion

set i=0
for /F %%a in (merchants.txt) do (
   set /A i+=1
   set merArray[!i!]=%%a
)

for /F %%b in (merchant-ids.txt) do (
   set /A i+=1
   set idArray[!i!]=%%b
)

set n=%i%

for /L %%i in (0,1,%n%) do (
    set merDom=!merArray[%%i]!
    set merID=!idArray[%%i]!
    echo !merArray[%%i]!
    fart.exe -i -r "C:\css_js_test\*.css" http://%merDom%/merchant/%merId%/ http://www.example.com/merchant/%merId%/
)
pause

1 Ответ

0 голосов
/ 25 октября 2018

Три проблемы с вашим кодом.1) Вам необходимо сбросить переменную счетчика до нуля перед второй командой FOR /F.2) Команда FOR /l должна начинаться с 1. 3) Вам нужно использовать отложенное расширение для всех ваших переменных в блоке скобок.Также обратите внимание, что вы можете использовать переменные массива непосредственно с командой fart вместо назначения их другой переменной среды.

@echo off
setlocal EnableDelayedExpansion

set i=0
for /F "delims=" %%a in (merchants.txt) do (
   set /A i+=1
   set merArray[!i!]=%%a
)

set i=0
for /F "delims=" %%b in (merchant-ids.txt) do (
   set /A i+=1
   set idArray[!i!]=%%b
)

set n=%i%

for /L %%i in (1,1,%n%) do (
    fart.exe -i -r "C:\css_js_test\*.css" http://!merArray[%%i]!/merchant/!idArray[%%i]!/ http://www.example.com/merchant/!idArray[%%i]!/
)
pause

Чтобы показать вам, что это сработало с моим тестированием, я простоиспользуя один файл с именем input.txt в качестве входных данных.Я запускаю все из командной строки, чтобы я мог показать вам содержимое всех файлов перед запуском командного файла.Затем в конце я отображаю содержимое измененного входного файла.

C:\BatchFiles\FART\SO>type merchant.bat
@echo off
setlocal EnableDelayedExpansion

set i=0
for /F "delims=" %%a in (merchants.txt) do (
   set /A i+=1
   set merArray[!i!]=%%a
)

set i=0
for /F "delims=" %%b in (merchant-ids.txt) do (
   set /A i+=1
   set idArray[!i!]=%%b
)

set n=%i%

for /L %%i in (1,1,%n%) do (
    fart.exe -i "input.txt" http://!merArray[%%i]!/merchant/!idArray[%%i]!/ http://www.example.com/merchant/!idArray[%%i]!/
)

C:\BatchFiles\FART\SO>type merchants.txt
www.ibm.com
www.target.com

C:\BatchFiles\FART\SO>type merchant-ids.txt
101010
202020

C:\BatchFiles\FART\SO>type input.txt
http://www.ibm.com/merchant/101010/
http://www.target.com/merchant/202020/

C:\BatchFiles\FART\SO>merchant.bat
input.txt
Replaced 1 occurence(s) in 1 file(s).
input.txt
Replaced 1 occurence(s) in 1 file(s).

C:\BatchFiles\FART\SO>type input.txt
http://www.example.com/merchant/101010/
http://www.example.com/merchant/202020/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...