【问题标题】:Get an echo batch-file answer with VBA使用 VBA 获取回显批处理文件答案
【发布时间】:2018-08-10 10:05:43
【问题描述】:

在我的 VBA 代码中,我使用 Call Shell(....) 调用 bat。

我现在需要在 VBA 的批处理文件中获取“Echo answer”。

我该怎么做?

我的批处理文件:

@echo off
IF exist %3 (robocopy %1 %2 /e ) ELSE (echo 1)

我想在 VBA 中得到那个“1”。

【问题讨论】:

  • 请包含您的代码和预期的返回值。
  • 你有。
  • @QHarr Oo 最受好评的答案使用 14 行函数来完成我通常只在单行中执行的操作。并且接受的答案使用了一大堆 WinAPI 的东西!
  • @ErikvonAsmuth 我知道。我在这里的回答中使用了与您相同的内容stackoverflow.com/a/50073239/6241235

标签: excel vba batch-file


【解决方案1】:

您无法使用Call Shell 回复答案。您需要使用WScript.Shell,并且可以使用它返回的执行对象中的读取行。

Dim sh As Object
Set sh = CreateObject("WScript.Shell")
Dim ex As Object
Set ex = sh.Exec("C:\Path\To\File.bat")
Dim ans As String
ans = ex.StdOut.ReadAll

简写,如果你想节省行数:

Dim ans As String
ans = CreateObject("WScript.Shell").Exec("C:\Path\To\File.bat").StdOut.ReadAll

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多