从批处理文件返回错误消息

2024-02-08

我正在从 VBA 对批处理文件进行脱壳,以启动 exec 文件,例如 Notepad.exe。如果未找到 exec 文件,我想向 VBA 返回指示或消息。到目前为止,我一直通过让bat 将消息写入文本文件,然后让VBA 检查该文件来完成此操作。这种方法似乎有点笨拙,但到目前为止我还没有遇到替代方法。

@echo off

set EM="C:\Msg.txt"
if exist %EM% del %EM%

set FL=%SystemRoot%\system32\xnotepad.exe

if not exist %FL% (
echo %FL% not found > %EM%
goto done
)

Start "" %FL%

:done

in VBA,

Dim oSHELL, batchname, usr, pass, exitcode
Set oSHELL = VBA.CreateObject("WScript.Shell")
usr="username"
pass="password"
batchname="batchFile.bat"

' Arguments ToRun, Style (0=hide), Waitforend
exitcode = oSHELL.Run(""""+batchname+""" """+usr+""" """+pass+"""", 0, True)

在你的批次中

exit somenumber

应该返回somenumber to exitcode


我使用的实际代码:

Sub q27097252()
Dim oSHELL, batchname, usr, pass, exitcode
Set oSHELL = VBA.CreateObject("WScript.Shell")
usr = ""
pass = ""
batchname = "c:\106x\q27097252.bat"

' Arguments ToRun, Style (0=hide), Waitforend
exitcode = oSHELL.Run("""" + batchname + """ """ + usr + """ """ + pass + """", 0, True)
MsgBox (exitcode)
End Sub

带批次c:\106x\q27097252.bat

@ECHO OFF
SETLOCAL
EXIT %time:~-1%

GOTO :EOF

在 VBA 代码编辑器/F5 中运行得非常好(预期结果:消息框随机显示 0..9)


使用 Windows XP 时的以下评论/解决方案:

会出现exit /b number选项只是设置errorlevel然而exit number实际上设置终止代码。
XP 下终止代码为 0,因为cmd.exe实际上正常终止 - 而 Windows 7(及更高版本)似乎分配当前errorlevel作为退出代码cmd.exe过程。
因此,使用exit number优先考虑与 XP 的兼容性 — 代码经过调整以适应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从批处理文件返回错误消息 的相关文章

随机推荐

  • 在MYSQL中复制表而不一次复制一行

    我想复制一个非常大的表 但我不想逐行复制它 有办法复制吗 例如 您可以 TRUNCATE 不删除行 行 所以我想知道是否有类似的东西可以复制整个表 更新 逐行插入非常痛苦 因为有 120M 行 无论如何要避免这种情况 MySQL 不再具有可
  • ggplot2:修复因子水平的颜色

    我正在开发一个更大的项目 我正在 ggplot2 中创建多个绘图 这些图涉及在几个不同的谨慎类别 例如 国家 物种 类型 中绘制几种不同的结果 我想完全修复离散类型到颜色的映射 以便 Type A 始终显示为红色 Type B 始终显示为蓝
  • ngrx 中的多个商店

    我正在使用 Angular 和 ngrx 编写一个企业级应用程序 目的是自始至终使用 Flux 和 ngrx 为了重用和可分离性 我们 至少 需要两个彼此不交互的状态存储 但我们确实需要两个存储同时处于活动状态 并且可能从相同的组件进行访问
  • 使用 jquery fileupload basic 以编程方式删除文件

    我使用blueimp文件上传插件 基础版 来实现多文件上传 我正在尝试实现允许用户删除排队上传文件的功能 我无法弄清楚如何正确访问文件数组 每次add回调中 索引为0 文件数组长度为1 仅包含用户点击删除的文件 我正在为排队到 div 的每
  • Android 文本转语音库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我将开发需要实现文本转语音的应用程序 请给我任何强大的图书馆链接 这对我来说太好了 除了 Flite 到引擎库 哪个图书馆最适合这样做 提
  • 我是否“不想”使用读/写锁而不是普通互斥锁?

    同步对共享资源的访问时 是否有原因not使用读 写锁而不是普通互斥锁 这基本上只是一个写锁 besides它具有比我可能需要的更多功能的哲学原因 换句话说 如果我只是默认将读 写锁作为我首选的同步结构 我是否会搬起石头砸自己的脚 在我看来
  • NGINX + Gunicorn + Flask - 502 错误网关 - 套接字文件权限被拒绝

    我们正在尝试将 NGINX 设置为 Gunicorn Python 应用程序的反向代理 我们一直在关注 Digital Ocean 的本指南 https www digitalocean com community tutorials ho
  • GMap.Net 在控件中不显示完整地图

    我正在尝试制作一个能够显示地图的小型应用程序 我遇到了 GMap Net 它非常适合我的目的 除了地图没有完全显示在控件中 我附上一张图片 希望您能理解我的问题 My code of the load button is private v
  • 在 swagger UI 尝试中发送动态自定义标头

    我在java中使用swagger 我正在代码中通过 requestAttributes 读取名为 callerId 的标头 我没有通过注释 HeaderParam 使用标头 由于这个原因 标题部分不会显示在 swagger UI 中进行尝试
  • 在 C# 中使用 byte/short 等有什么理由?

    超过int类型 很多代码要么使用 int 要么使用 double floats 我知道有 NET 移动版本 因此 byte short 有自己的用途 但对于桌面应用程序有什么意义吗 当我从事 C 工作 游戏编程 时 我非常了解我使用的每种数
  • Java中Thread的自定义实现:通过JNI可以吗?

    是否可以以安全 正确的方式在 Java 中 使用 JNI 实现自定义 Thread 类 假设我自己写NewThread类 与本地人start 方法 它分叉执行 调用run 在分叉线程中并返回 那可能吗 JVM 会抱怨吗 根据规范 它 合法
  • 选中时更改切换按钮的背景颜色

    我正在尝试区分单击时切换按钮的状态 我有下面的片段
  • 如何使用 Xamarin.Forms 将搜索栏添加到页面顶部,例如工具栏项目图标

    我正在此页面中使用 masterdetail 页面 我正在使用选项卡式页面 现在我想在页面顶部显示工具栏图标和搜索栏 我能够放置工具栏图标 但与搜索栏斗争 如何将其放置在其顶部行为应与 Whatsapp 应用程序和 YouTube 应用程序
  • 检查变量是否属于 Typescript 中的自定义类型

    我正在尝试检查变量是否属于某种类型 Code type GeneralType SubTypeA SubTypeB type SubTypeA type1 type2 type SubTypeB type3 type4 function s
  • 在 ggplot2 示例中绘制来自 vegan 的 ordiellipse 不起作用

    我正在尝试在 ggplot 中绘制一个带有椭圆体的 pca 双图 我在中找到了一个例子这个线程在这里 https stackoverflow com questions 13794419 plotting ordiellipse funct
  • Ninject 会调用 dispose 并关闭 NHibernate Isession 吗?

    我将 ASP NET MVC 3 与 Ninject 和 NHibernate 一起使用 当想到 DI 时 我认为获得资源的人也确保关闭它 在这种情况下 Ninject 应该负责 但我不确定 Ninject 在使用 InRequestSco
  • Google日历api CalendarList列表返回空元素

    EDIT 原来的海报要求这个C 但是无论使用什么库都会出现同样的问题 其解决方案是独立于语言 使用 C 库 string service account email protected cdn cgi l email protection
  • 对话框中存在的数字选择器 (Android)

    我正在尝试在我的应用程序中实现 NumberPicker 我希望视图如图所示对话指南 http developer android com guide topics ui dialogs html 即 当我实现数字选择器时我得到什么 另外
  • 在 Javascript 中将属性附加到冒泡事件对象

    在 Chrome Firefox 中 我可以将自定义属性附加到一个处理程序中的事件对象 并在同一事件的不同处理程序中读取它们 即使事件处理是冒泡的 我不能在 IE 中做同样的事情 当事件冒泡时 我的自定义属性丢失了 您知道是否有任何解决方案
  • 从批处理文件返回错误消息

    我正在从 VBA 对批处理文件进行脱壳 以启动 exec 文件 例如 Notepad exe 如果未找到 exec 文件 我想向 VBA 返回指示或消息 到目前为止 我一直通过让bat 将消息写入文本文件 然后让VBA 检查该文件来完成此操