我正在编写一个vbscript来解决sqlite shell中的sql查询,并想知道我是否需要使用.quit或.exit。当我在任务调度程序中设置任务来运行此vbscript时,sqlite shell不会正确退出/退出,因为每次任务调度程序运行时我都会创建一个新实例,这会导致sql查询无法执行。当我双击vbscript时,它运行正常,sqlite shell优雅地存在。
有人可以帮忙吗?
的VBScript:
Dim objShell
Dim main_database_file, main_output_file, main_sqlite_file
Dim TAB, LINE
'Set default values here if necessary
main_database_file = "G:\example\data\reporting\lastmonth"
main_sqlite_file = "G:\example\sqlite-shell.exe"
main_output_file="G:\example\scripts\display-time.csv"
Set objShell = createObject("Wscript.Shell")
sql = "select * from project;"
objShell.Run """"& main_sqlite_file &"""" & """"& main_database_file &""""
WScript.Sleep(500)
objShell.Sendkeys(".separator ,{ENTER}")
objShell.Sendkeys(".headers ON{ENTER}")
objShell.Sendkeys(".output '" & main_output_file &"'{ENTER}")
objShell.Sendkeys(sql & "{ENTER}")
WScript.Sleep(500)
objShell.Sendkeys(".quit{ENTER}")
Set objShell = Nothing
答案 0 :(得分:1)
嗯,根据the documentation,.quit
和.exit
的说明都是“退出此计划”,所以我不相信,不。
答案 1 :(得分:0)
我认为唯一的区别是.quit
在某些Unix系统上不起作用。
答案 2 :(得分:0)
我同意杰克的观点,即该文件没有区别。 但是,为什么不将命令传递给命令行处理器?您可以创建包含上述每个步骤的“SQL”文件,然后执行单个运行命令:
像(未经测试!)
SQL文件:
.seperator ,
.headers on
etc..
然后将此文件运行为:
shell.run "sqlite-clp.exe mydb.db < sqlfile.sql"
不需要arbirary超时,你也可以通过params。
PS:它可能是在计划任务的上下文中运行的sendkeys