У меня запланированное задание с файлом .bat, который загружает некоторые файлы с веб-сервера каждый день к утру, затем обрабатывает данные и ОБНОВЛЯЕТ базу данных. Затем он запускает другой файл .bat для выбора данных и вставки в файл .xls.
Второй файл .bat выглядит так:
set a=%date:/=-%
del /q F:\file_path\file1_%a%.xls
del /q F:\file_path\file2_%a%.xls
echo %time%_%date%
cd /D D:\oracle\product\10.2.0\db_1\BIN
sqlplus usrname/psswd@ORCL @F:\select_path\select1.sql
timeout /t 30 /nobreak > nul
ren F:\file_path\file1.xls file1_%a%.xls
sqlplus usrname/psswd@ORCL @F:\select_path\select2.sql
timeout /t 30 /nobreak > nul
ren F:\file_path\file2.xls file2_%a%.xls
cd /D F:\KMB-SP\TI\Scripts\script_select
::Command to send file1 and file2 via e-mail.
Но когда я прихожу в офис и проверьте прогресс, только первый .xls сделан. Поэтому я должен запустить второй .bat вручную, и он отлично работает.
Что может быть причиной этого?
Примечания:
- Я положил время ожидания между двумя SELECT, потому что в прошлом код останавливался после INSERT и не вызывал второй .bat. Мой коллега сказал, что это может быть исключением исполнения. Задание времени ожидания дало бы время для правильного завершения INSERT.
- Раньше он выполнял оба SELECT, а затем переименовывал оба файла. Делая так, иногда это работало, иногда нет, затем я попытался изменить порядок: select1, rename1, select2, rename2.
- Поскольку мы загружаем файлы каждый день, мы объединяем данные на один файл называется DT-дата. Первый код выглядит так:
rem The data is downloaded and the files are organized in their files
if exist F:\path\DT-date (
Data_consolidation.exe
timeout /t 300 /nobreak > nul
F:\path\second_bat.bat
) else (exit)
Как сказал @William Robertson, я попытался echo exit
сразу после первого SELECT, но, опять же, он извлек только первый файл, а не второй.