我希望创建一个脚本,通过打开ij并告诉ij运行setup.sql脚本来初始化apache数据库。
我已经成功地打开了ij,但是如何从脚本窗口向ij窗口传递命令呢?我相信在linux中使用这里的文档是可能的,但据我所知,这在windows命令提示符中是不可能的。
编辑:我使用这一行打开ij。
"C:\Program Files\Java\jdk1.8.0_101\db\bin\ij.bat"我希望在前面的命令打开的窗口中执行这一行:
run 'setup.sql'发布于 2016-11-23 10:51:19
这很蠢但应该有效..。我的想法是,您只需在批处理文件中放置其他代码,让它实际将其键入窗口。这通常是用SendKeys完成的。更多关于密钥这里。
这就是剧本:
@if (@CodeSection == @Batch) @then
@echo off
start "C:\Program Files\Java\jdk1.8.0_101\db\bin\ij.bat"
set SendKeys=CScript //nologo //E:JScript "%~f0"
timeout /t 3
%SendKeys% "run 'setup.sql'"
%SendKeys% "{ENTER}"
Goto:eof
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));看上去很大,但相当无害;)
@if (@CodeSection == @Batch) @then和
@end需要将批处理脚本从键入键的魔术中分离出来;JScript。
@echo off只会阻止批处理文件为每个命令打印的任何输出。
下一行启动批处理文件,该文件本身启动另一个命令行应用程序。
设置变量SendKeys并不是100%的要求,但是它可以简化阅读,并且保存字符串以激活JScript部分(->击键模拟)以使其更易于使用。
根据需要更改超时值。我不知道要多长时间才能开始工作。
下一行将愚蠢地为字符编写命令字符(不用担心.你什么也看不见!)
Goto:eof需要在读取JScript并到处抛出错误之前停止批处理脚本。
我不是100%确定,因为我还没有测试过它,但是您可能需要通过命令行本身启动批处理文件,如下所示:
start /min <your batch-file here>这将启动文件最小化,以确保它将键入正确的窗口。
随时可以问问题!
发布于 2020-06-17 06:29:35
因此,我的sql文件将如下所示:
CONNECT 'jdbc:derby://<my_hostname>:1527/<database_name>;create=true;user=akshay;password=akshay';
RUN 'C:\Users\akshay_chopra\Downloads\db-script\derby\derby_ddl.sql';
RUN 'C:\Users\akshay_chopra\Downloads\db-script\derby\derby_dml.sql';让这个sql文件名为derby_config.sql。
现在,创建一个批处理文件并添加以下行:
@echo off
cls
java -cp D:\derby\db-derby-10.14.2.0-bin\db-derby-10.14.2.0-bin\lib\* org.apache.derby.tools.ij "C:\Users\akshay_chopra\Desktop\derby_config.sql"
cmd /k上述命令的格式为
java -cp \lib\* org.apache.derby.tools.ij“
D:\derby\db-derby-10.14.2.0-bin\db-derby-10.14.2.0-bin\lib\*表示它可以在其中找到ij类的jars。这些jars可以在\lib文件夹中找到。最后,*表示它将搜索所有jar文件以找到ij类。
https://stackoverflow.com/questions/40761091
复制相似问题