热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GNUPLOT与VBA-STDERR去了哪里?

如何解决《GNUPLOT与VBA-STDERR去了哪里?》经验,为你挑选了1个好方法。

我在VBA的范围内运行Gnuplot,效果出奇的好.我可以使用GNUPLOT和Word VBA生成一本大约一百个图表的书.(使用Excel图表,我可能得到大约四个)

有一个小问题 - 在VBA下运行时,STDERR会消失,或者没有被创建.没有诊断.

鉴于以下小型GNUPLOT脚本,

set key bmargin left horizontal Right noreverse enhanced autotitle box lt black linewidth 1.000 dashtype solid
set samples 800, 800
set title "Simple Plots" 
set title  font ",20" norotate
DEBUG_TERM_HTIC = 119
DEBUG_TERM_VTIC = 119
plot [-30:20] sin(x*20)*atan(x)

我的VBA代码将其写入临时文件并尝试运行它.VBA生成

"C:\temp\Gnuplot\bin\gnuplot.exe" C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt 2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"

然后使用Windows Shell运行它,如下所示调用:

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")

然后

wsh.Run x, 0, True ' x contains the generated GNUPLOT expression

GNUPLOT执行完美.

在GNUPLOT表达式中,第一项是GNUPLOT程序的位置,在我的系统上恰好是"C:\temp\Gnuplot\bin\gnuplot.exe".第二个文件是在Microsoft官方位置生成的临时文件C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E0.txt.最后是STDERR的位置,2>"C:\Users\VVKOZLOV\AppData\Local\Temp\gnuA5E2.err"其中2>表示这是STDERR,而不是正常输出STDOUT.

现在假设我在GNUPLOT源中引入了一个故意的错误,我希望写一个包含类似内容的错误文件

scooby doo where are you?
^
"C:\Users\VVKozlov\AppData\Local\Temp\gnuEC55.txt", line 4: invalid command

使用VBA外部的常用CMD.EXE执行时,将按预期创建STDERR文件.

使用Windows Shell在VBA范围内执行时,不会创建任何STDERR文件.

我怎么能在VBA下生成这个STDERR文件?



1> 小智..:

CreateObject("WScript.Shell").Run 直接执行命令行.

输出重定向(2>您正在使用的语法)是cmd.exe Windows命令处理器的一项功能.

你想要做的是:

    使用所需的参数和重定向执行cmd.exe .

    CreateObject("WScript.Shell").Exec相反,使用它可以直接访问输入,输出和错误流.然后,如果要将它们记录到文件中,则需要从流中读取并将内容自己写入脚本中.


推荐阅读
author-avatar
GYuan83_844
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有