java - 从 bat 文件或 Jupyter Notebook 运行 Java 实用程序
问题描述
试图从 Domo 编写一些下载实用程序。它们以 jar 文件的形式提供 CLI。我可以从实用程序中正常工作,但我正在尝试编写脚本以按计划运行。加载 jar 文件可以正常工作,但无法像从 CMD 交互式运行它时那样运行后续命令。
java -jar C:\domo\java\domoUtil.jar
&&
connect -s yourdomain.domo.com -t mytokenhere
&&
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv
帮助将不胜感激,Java新手,所以不知道为什么我似乎无法让它工作..
解决方案
您在这里尝试解决的问题似乎是通过 Domo CLI 运行一些脚本化的 Domo 命令。
执行此操作的方法是将要运行的命令放入脚本文件中,然后使用该-script
选项运行它。
例如,将以下内容放入名为/path/to/myscript.domo
.
connect -s yourdomain.domo.com -t mytokenhere
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv
然后使用domoUtil.jar
运行脚本如下:
java -jar domoUtil.jar -script /path/to/myscript.domo
CLI 工具的文档中对此进行了说明。
您当前的方法不起作用的原因是&&
它没有达到您想要的效果。实际上。
A && B && C
告诉外壳执行以下操作:
- 运行外壳命令 A
- 如果 A 返回零返回码,则运行 shell 命令 B
- 如果 B 返回零返回码,则运行 shell 命令 C
这对您不起作用,因为connect
并且query-data
不是 shell 命令。相反,它们是 CLI 运行的命令。此外,您不想等待 CLI 返回一个返回码(即完成),然后再向它发出连接和查询数据命令。
Domo CLI(可能)希望从其标准输入中读取命令。因此,以下可能作为替代方案(使用 Linux shell):
java -jar domoUtil.jar <<EOF
connect -s yourdomain.domo.com -t mytokenhere
query-data -i datasetid -sql "SELECT * FROM `hs_users_raw`" -xf test3.csv
EOF
可能有一个使用 Windows 批处理脚本语言的等价物。
无论哪种方式,该-script
方法都是 Domo 手册所推荐的。
推荐阅读
- javascript - 使用 Redux Form 设置默认选中单选按钮
- java - 如何消除同一个包中两个类之间的循环依赖?
- javascript - HTML5-Canvas:如何删除刚刚绘制的对象?
- excel - 使用提供的字符串更新“文本连接”路径并将文本保留到列设置
- hyperledger-fabric - 移动应用程序的超级账本框架?
- android - 短信权限问题再次浮出水面,Play 商店现在拒绝了我的应用更新
- python - 从 PyCharm 中的 PYTHONPATH 中删除路径无法正常工作?
- swift - 循环遍历数组的范围
- c# - 使用 AudioConfig 和 PushAudioOutputStreamCallback 时,SpeakTextAsync 抛出异常“在垃圾收集委托上进行了回调”
- java - 如何在 Eclipse 上恢复已删除的项目?