VBA 从 shell 命令捕获输出(一个数字)

VBA 从 shell 命令捕获输出(一个数字)

以下批处理命令生成一个数字,即大小大于阈值的文件数,在本例中为 512K,尽管计数相差 1。

forfiles /P C:\ /M *.* /S /C "CMD /C if @fsize gtr 512000 echo @PATH @FSIZE"|findstr /r /n "^" |find /c ":"

如何在 VBA 中捕获输出?

我发现了一个文章这样做的效果是一样的,但答案对我来说似乎相当复杂。我想知道是否有更简单的方法来捕获输出,比如为 shell 命令分配一个整数?

答案1

您可以尝试使用 Shell 的 Exec 方法。

例如:

  Dim WSH As WshShell
  Dim sOut As String

Set WSH = New WshShell
sOut = WSH.Exec("your_cmd_string").StdOut.ReadAll

我发现此方法的一个问题是,在执行命令时,命令窗口保持打开状态。它可以被隐藏,但需要调用 Windows API。

因此,当从 VBA 运行 shell 命令时,我一直在使用Run带有Hidden参数的方法,并将结果重定向到临时文件。

相关内容