bat-script:打开程序并在该程序中执行命令

时间:2016-11-23 09:56:15

标签: batch-file cmd

我想创建一个脚本,通过打开ij并告诉ij运行setup.sql脚本来初始化apache derby数据库。

我设法打开了ij,但是如何从脚本窗口将命令传递给ij窗口?我相信这可以在linux中使用这里的文档,但据我所知,这在Windows命令提示符下是不可能的。

编辑:我用这一行打开ij。

"C:\Program Files\Java\jdk1.8.0_101\db\bin\ij.bat"

我希望这行在上一个命令打开的窗口内执行:

run 'setup.sql'

2 个答案:

答案 0 :(得分:0)

这是愚蠢但应该工作...我的想法是你只是在批处理文件中放置其他代码,告诉它实际上键入它进入窗口。这通常使用SendKeys完成。更多关于密钥here

所以这就是剧本:

@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-Section( - >击键模拟)以使其更易于使用。
根据您的需要更改超时值。我不知道ij需要多长时间才能开始 下一行将愚蠢地写出角色的命令字符(不用担心......你什么都看不见!) 在阅读JScript并全部抛出错误之前,需要Goto:eof来停止批处理脚本。

我不是100%肯定,因为我没有测试它,但您可能需要通过命令行本身启动批处理文件,如下所示:

start /min <your batch-file here>

这将启动文件最小化以确保它将键入正确的窗口。

随意提问!

答案 1 :(得分:0)

  1. 制作一个sql文件并列出要从ij运行的所有命令。
    例如:
    1. 我想连接到derby数据库。
    2. 然后我要运行DDL脚本来创建表
    3. 然后我要运行DML脚本以将数据插入表中。

所以我的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

  1. 制作一个批处理文件以运行ij工具并执行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 java类的jars。这些罐子可以在\ lib文件夹中找到。最后的*表示它将搜索所有jar文件以查找ij类。

  1. 运行此批处理文件
    当您运行该批处理文件时,它将打开ij工具并执行您在步骤1中创建的sql文件中编写的命令。