выполнить несколько пакетных команд для каждого файла одновременно - PullRequest
0 голосов
/ 26 октября 2011

Как выполнить несколько пакетных команд для нескольких файлов по одному.Это означает, скажем, если я хочу сначала переместить файл из одной папки в рабочую папку, переименовать файл в формат csv, вызвать скрипт sqlloader, вызвать второй скрипт sql и, наконец, вызвать другой скрипт sql - все вышеперечисленные действия не должныдля всех файлов, но для одного файла за раз.Я попробовал что-то вроде этого, как показано ниже, но получить сообщение об ошибке «\ Downloads \ Validation \ Prestage * .psa) было неожиданно».Разве я не могу передать подстановочный знак * .psa в критерии цикла?

Большое спасибо и спасибо за ваше время на это.

    echo off

    :MAIN


    copy C:\Downloads\Prevalidation\*.psa C:\Downloads\Validation\Prestage\

    FOR %A IN (C:\Downloads\Validation\Prestage\*.psa) DO ( move C:\Downloads\Validation\Prestage\*.psa C:\Downloads\Validation\WIP\
      ren C:\Downloads\Validation\WIP\*.psa *.csv
    <call sqlloader now>
    <call update script now> 
    <call validation script now> 
   )

   exit

Спасибо, Сандерс.

1 Ответ

0 голосов
/ 26 октября 2011

Ваша стратегия верна.

Существует одна незначительная синтаксическая ошибка: вам нужно использовать %%A вместо %A в команде FOR внутри BAT-файла. И затем вам нужно сослаться на %%A внутри цикла как на имя обрабатываемого файла.

@echo off
copy C:\Downloads\Prevalidation\*.psa C:\Downloads\Validation\Prestage\
FOR %%A IN (C:\Downloads\Validation\Prestage\*.psa) DO ( 
  move %%A C:\Downloads\Validation\WIP\%%~nA.psa
  ren C:\Downloads\Validation\WIP\%%~nA.psa *.csv
  <call sqlloader now>
  <call update script now> 
  <call validation script now> 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...