我有一个批处理脚本,它将首先删除从上一次运行中创建的所有文件,然后在子文件夹“script”中调用18个单独的批处理脚本。
18个脚本中的每个脚本运行一个SQL并将输出作为csv放在子文件夹“script”中,然后将结果复制到另一个子文件夹“Result”,删除原始输出。
当我手动分配18个批处理文件时,它们按要求工作。但是当我使用主调用脚本时,文件被复制到主文件夹而不是子文件夹“Result”
这是两个缩短版本
主脚本
del J:\BatchSQL\Result\ala.csv
start J:\BatchSQL\script\ALA.bat
exit
子脚本
Run SQLPlus call here
copy J:\BatchSQL\script\ALA.csv J:\BatchSQL\Result\ALA.csv
del J:\BatchSQL\script\ALA.csv
exit
答案 0 :(得分:0)
由于缺乏完整信息,我建议main
执行sub
,并且就main
脚本而言,创建文件的目标是当前目录,而当您手动执行sub
时(可能来自J:\batchsql\script
),然后 是创建文件的位置。
所以 - main
从main
目录运行(无论你在哪里 - 你没说),因此SQLplus将报告存放在那里。 sub
中的副本和del无效,因为主题文件不存在。
如果您使用当前目录sub
手动运行J:\BatchSQL\script
,那么SQLplus会将其输出放在哪里,而copy/del
可以找到输出文件。
测试:
添加
echo %cd%
pause
在sub
的开头,查看报告的目录是否熟悉。