首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bat-script:打开程序并在该程序中执行命令。

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

Stack Overflow用户
提问于 2016-11-23 09:56:14
回答 2查看 2.9K关注 0票数 0

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

我已经成功地打开了ij,但是如何从脚本窗口向ij窗口传递命令呢?我相信在linux中使用这里的文档是可能的,但据我所知,这在windows命令提示符中是不可能的。

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

代码语言:javascript
复制
"C:\Program Files\Java\jdk1.8.0_101\db\bin\ij.bat"

我希望在前面的命令打开的窗口中执行这一行:

代码语言:javascript
复制
run 'setup.sql'
EN

回答 2

Stack Overflow用户

发布于 2016-11-23 10:51:19

这很蠢但应该有效..。我的想法是,您只需在批处理文件中放置其他代码,让它实际将其键入窗口。这通常是用SendKeys完成的。更多关于密钥这里

这就是剧本:

代码语言:javascript
复制
@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));

看上去很大,但相当无害;)

代码语言:javascript
复制
@if (@CodeSection == @Batch) @then

代码语言:javascript
复制
@end

需要将批处理脚本从键入键的魔术中分离出来;JScript。

@echo off只会阻止批处理文件为每个命令打印的任何输出。

下一行启动批处理文件,该文件本身启动另一个命令行应用程序。

设置变量SendKeys并不是100%的要求,但是它可以简化阅读,并且保存字符串以激活JScript部分(->击键模拟)以使其更易于使用。

根据需要更改超时值。我不知道要多长时间才能开始工作。

下一行将愚蠢地为字符编写命令字符(不用担心.你什么也看不见!)

Goto:eof需要在读取JScript并到处抛出错误之前停止批处理脚本。

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

代码语言:javascript
复制
start /min <your batch-file here>

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

随时可以问问题!

票数 1
EN

Stack Overflow用户

发布于 2020-06-17 06:29:35

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

因此,我的sql文件将如下所示:

代码语言:javascript
复制
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执行命令

现在,创建一个批处理文件并添加以下行:

代码语言:javascript
复制
@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类。

  1. 运行这个批处理文件 当您运行这个批处理文件时,它将打开ij工具,并执行在步骤1中创建的sql文件中编写的命令。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40761091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档