1

Я хочу обновить / заменить данные таблицы, используя командный файл. И я храню old_data в файле old.txt и new_data в файле new.txt.

old.txt:
101
India

new.txt:
1001
0891

и вот мой пакетный скрипт: demo.bat

@echo off
for /f "tokens=1* delims= " %%a in (old.txt) do (
for /f "tokens=1* delims= " %%b in (new.txt) do (

mysql -u root -p tiger -host localhost -database empsrc -e "update table_name set col_name='%%b' where col_name='%%a'"

)
)
pause

когда я выполняю вышеуказанный командный файл

101 is replaced with 1001 and 
india is also replaced with 1001

Но мой ожидаемый результат

101 is replaced  with 1001
India should be replaced with 0891

Как я могу решить эту проблему ? Может кто-то помочь мне, пожалуйста

1 ответ1

1

Команды FOR будут выполняться одна внутри другой, создавая комбинации:

101, 1001
India, 1001
101, 0891
India, 0891

Вы хотели бы один цикл, который читает по одной записи из каждого файла, а затем выполнить код.

Основываясь на этом ответе, вот скрипт, который будет отображать строки попарно:

@echo off
setlocal EnableDelayedExpansion
Rem First file is read with FOR /F command
Rem Second file is read via standard handle 3
3< old.txt (for /F "delims=" %%a in (new.txt) do (
  Rem Read next line from file2.txt
  set /P line2=<&3
  Rem Echo lines of both files
  echo %%a,!line2!
))

Вот вывод:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .