【发布时间】:2017-12-25 06:20:47
【问题描述】:
所以我试图获得一个非常简单的 shell 命令来执行创建的批处理文件,但由于某种原因,shell 命令没有执行任何操作。
批处理文件被创建,当我双击批处理文件时,它执行脚本就好了,但是如果我尝试在 VBA 中调用 shell 命令,它似乎试图打开一个命令窗口,但立即关闭它之后,不会产生任何错误。在我重新格式化这台笔记本电脑之前,这段代码可以正常工作,并且这段代码可以在另一个运行 Server 2012 R2 的系统上运行(我正在运行 Windows 10)
Dim SedjaShell
f = "C:\Temp\_SedjaScript.bat"
Open f For Output As #1
Print #1, Chr(34) & SedjaDir & Chr(34) & " merge --files " & Page1 & " " & Page2 & " " & TOS & " " & Disclosure & " --output " & OutputDir
Print #1, "Pause"
Close #1
SedjaShell = Shell("C:\Temp\_SedjaScript.bat", 1)
有什么我可能遗漏的吗?
编辑 添加_SedjaScript.Bat的内容
"C:\Users\User\Desktop\DealTracker\MergeFiles\sejda-console-3.0.4\bin\sejda-console.bat" merge --files C:\Temp\ContractSummary.pdf C:\Temp\Page2.pdf C:\Temp\TOS.pdf C:\Temp\Disclosure.pdf --output "C:\Users\User\Desktop\DealTracker\Completed Contracts\Company-Name-Inc-07-19-2017-Contract.pdf"
Pause
【问题讨论】:
-
您确定它不起作用吗?它本可以完成它的工作并自行关闭,因为这是批处理脚本的默认行为。
-
我知道它不起作用,因为输出文件不存在。我也刚刚在另一个系统上尝试了完全相同的代码,它工作得很好。此外,如果它正在工作,脚本窗口将保持打开状态,因为我在脚本末尾添加了暂停条件。但是,如果我手动启动 .bat 文件,脚本会启动并输出合并文件
-
您的批处理文件可能正在使用相对路径。尝试使用
ChDir更改Shell命令的工作目录(如果需要,还可以使用ChDrive)。如果我不得不猜测,你会想要ChDir "C:\Temp"。 -
不,那没用
-
尝试准确显示(Debug.Print 或 MsgBox)您正在写入批处理文件的内容。