Для L oop на файлах делает бесконечный цикл - PullRequest
0 голосов
/ 01 апреля 2020

Я застрял с проблемой для l oop в моем командном файле. Приведенный ниже код используется для изменения в каждом примере оператора «INSERT» в файле SQL на «INSERT IGNORE».

for %%f in (%folder%\*.sql) do (
   %~dp0\jager.exe -C "%%f" DROP \x23
   %~dp0\jager.exe -C "%%f" INSERT "INSERT IGNORE"
   %~dp0\jager.exe -C "%%f" "CREATE TABLE" "CREATE TABLE IF NOT EXISTS"
)

Так что в этом l oop файл jager.exe представляет собой «Найти и заменить» программа, но файлы изменены, и l oop принимает его снова. Итак, я сделал бесконечное l oop, но это не то, что я хочу.

Я пробовал много вещей, но сейчас я понятия не имею, как избежать этого бесконечного l oop.

Могу ли я получить Итератор от l oop? Или есть ли способ сделать это НЕ бесконечный цикл?

Спасибо за ваше время.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

изменить на:

for /f "delims=" %%f in ('dir /b "%folder%\*.sql"') do (

Команда dir полностью выполняется до того, как for начнет обрабатывать свой вывод, поэтому файлы, созданные во время процесса, не будут обрабатываться.

1 голос
/ 01 апреля 2020

Выведите результат в подпапку, затем, когда вы закончите, скопируйте все обратно в основную папку и удалите подпапку. Или переместите содержимое текущей папки в подпапку и переберите подпапку из текущей папки, а затем, когда вы закончите, переместите все обратно.

...