不能在一个 .bat 文件中 运行 两个 .sql
Can't run two .sql in a single .bat file
我有一个带有 .bat 文件的计划任务,每天早上从 Web 服务器下载一些文件,然后处理数据并更新数据库。然后它触发另一个 .bat 文件到 SELECT 数据并导出到 .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.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。
- 以前,它用于制作两个 SELECTs,然后重命名两个文件。这样做,有时有效,有时无效,然后我尝试更改顺序:select1, rename1, select2, rename2.
- 当我们每天下载文件时,我们会将数据连接到一个名为 DT-date 的文件中。第一个代码是这样的:
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 所说,我在第一个 SELECT 之后尝试了
echo exit
,但同样,它只提取了第一个文件而不是第二个文件。
正如@WilliamRobertson 所建议的,在 sqlplus 命令之前写 echo exit |
解决了问题。
我有一个带有 .bat 文件的计划任务,每天早上从 Web 服务器下载一些文件,然后处理数据并更新数据库。然后它触发另一个 .bat 文件到 SELECT 数据并导出到 .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.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。
- 以前,它用于制作两个 SELECTs,然后重命名两个文件。这样做,有时有效,有时无效,然后我尝试更改顺序:select1, rename1, select2, rename2.
- 当我们每天下载文件时,我们会将数据连接到一个名为 DT-date 的文件中。第一个代码是这样的:
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 所说,我在第一个 SELECT 之后尝试了
echo exit
,但同样,它只提取了第一个文件而不是第二个文件。
正如@WilliamRobertson 所建议的,在 sqlplus 命令之前写 echo exit |
解决了问题。