gpt4 book ai didi

vba - 从 VBA 运行带有多行的 Shell 命令/批处理文件

转载 作者:行者123 更新时间:2023-12-04 21:22:52 25 4
gpt4 key购买 nike

我有 2 行必须每天在 cmd 中运行多次。这些行类似于以下行:

set_someclasspaths.bat
java -Xmx1024m foo.bar.stuff.Dashboard -var varone -from 20160701 -to 20160731 -outputdir c:\stuff -ir @ -dashboard

我已经想到了两种自动化的方法。第一个是批处理文件,第二个是发送 key 。我制作了一个标记为 something.bat 的文件并粘贴在上面的两行中。这很快在 cmd 中打开一个窗口并再次关闭(即使我在最后添加了暂停),并且没有做我所期望的 - 事实上,据我所知,它运行第一个命令然后什么也没有。

发送 key 方法似乎只运行第一行,我试过:
Sub testcreate()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1

wsh.Run "cmd.exe /K C:\a\b\set_someclasspaths.bat", windowStyle, waitOnReturn
wsh.sendkeys "java -Xmx1024m foo.bar.stuff.Dashboard -var varone -from 20160701 -to 20160731 -outputdir c:\stuff -ir @ -dashboard"
End Sub

我的批处理文件和 java 能力充其量是可疑的,看起来解决这个问题的更简洁的方法是批处理文件,所以我更愿意这样做。

我想我正在将参数传递给第二行中的 java 脚本,我不确定是否有语法,并且没有学习一些 java 和批处理文件的东西,我已经停止了。

澄清一下,我的问题有两个:首先,批处理文件是更好的方法吗?其次,为什么这不起作用?

非常感谢帮助。

最佳答案

当您从另一个调用一个批处理文件时,控制权将传递给第二个批处理文件,并且不会返回。

如果你想返回,你需要传入 call ,因此您的批处理文件将如下所示:

call set_someclasspaths.bat
java -Xmx1024m foo.bar.stuff.Dashboard -var varone -from 20160701 -to 20160731 -outputdir c:\stuff -ir @ -dashboard

关于vba - 从 VBA 运行带有多行的 Shell 命令/批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38594509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com