WScript.Shell.Exec - 从 stdout 读取输出

2024-05-01

我的 VBScript 不显示我执行的任何命令的结果。我知道命令被执行,但我想捕获结果。

我已经测试了多种方法来执行此操作,例如以下方法:

Const WshFinished = 1
Const WshFailed = 2
strCommand = "ping.exe 127.0.0.1"

Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)

Select Case WshShellExec.Status
   Case WshFinished
       strOutput = WshShellExec.StdOut.ReadAll
   Case WshFailed
       strOutput = WshShellExec.StdErr.ReadAll
 End Select

WScript.StdOut.Write strOutput  'write results to the command line
WScript.Echo strOutput          'write results to default output

但它不打印任何结果。我如何捕捉StdOut and StdErr?


WScript.Shell.Exec()回报立即地,即使它启动的进程没有。如果你尝试阅读Status or StdOut马上,那里就不会有任何东西了。

The MSDN 文档 https://msdn.microsoft.com/en-us/library/ateytk4a(v=vs.84).aspx建议使用以下循环:

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

这检查Status每 100 毫秒一次,直到发生变化。本质上,您必须等到该过程完成,然后才能读取输出。

通过对代码进行一些小的更改,它就可以正常工作:

Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2
strCommand = "ping.exe 127.0.0.1"

Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)

Do While WshShellExec.Status = WshRunning
     WScript.Sleep 100
Loop

Select Case WshShellExec.Status
   Case WshFinished
       strOutput = WshShellExec.StdOut.ReadAll()
   Case WshFailed
       strOutput = WshShellExec.StdErr.ReadAll()
 End Select

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

WScript.Shell.Exec - 从 stdout 读取输出 的相关文章

  • 此脚本(使用 Outlook 发送电子邮件)如何工作?

    谁能帮助我了解 MAPI 的工作原理 我有一个简单的 vbscript 它使用 MAPI 发送电子邮件 它工作得很好 但是 我不知道它是如何做到的 后台发生了什么 Const ForReading 1 Set args WScript Ar
  • HTA 如何获取当前用户的用户名?

    我想获取当前用户的用户名 然后在我的应用程序名称中创建一个链接 该链接看起来像 http localhost id username I tried Dim objNetworkSet objNetwork CreateObject WSc
  • 如何通过 VBA 从 javascript 计算 vbscript 表达式

    最新的 MS Office 更新禁用了 vbscript 我在 Excel VBA 中使用它来计算表达式 我发现这比过去的 VBA 评估 功能要快得多 因此希望避免这样做 Javascript 仍然可以工作 所以我正在尝试迁移到它 然而 我
  • 使用或不使用“执行”语句在 UFT 中设置对象引用

    最近 我被分配了一个项目 其中使用 执行 语句设置对象引用 如下所示 Execute Set objButton XamRibbonWindowAddin XamWindow DashBoard WpfButton Save 然而 我设置对
  • 复制并重命名文件 VBScript

    我需要将一个基于日期的名称的文件移动到另一个文件夹 文件结构为 Source network location folder Filename 09 11 2012 txt 目的地 C Dump Filename txt 源文件总是落后 1
  • MSGBOX 在 WSH/VBS 中的位置

    这是我的下一个问题 我希望有人可以帮助我 是否可以在 wsh vbs 中放置 msgbox 替代文本 http www 4freeimagehost com uploads a9b04cde0527 jpg http www 4freeim
  • 获取 VBScript 中变量的类型

    如何使用 VBScript 获取变量的类型 Is VarType https msdn microsoft com en us library aa263402 v vs 60 aspx你需要什么 返回一个指示变量子类型的值 Constan
  • VBScript 运行时错误“800a000d”

    在我们的业务中 我们使用安全向导来控制和管理活动目录安全性 并对所做的更改进行审计跟踪 这是一个带有 ASP 前端的 SQL 数据库 它还可以与我们的 Active Directory 进行通信 编写该向导的人已经在我们的网站上为公司的另一
  • 在 VBS 中使用环境变量的值时出现问题

    我是 VBScript 新手 编写了一个可以修改 XML 文件的小脚本 但我在将计算机名称放入 XML 时遇到问题 我从以下位置获取了计算机名称HOST使用这些行的环境变量 Set wshShell CreateObject WScript
  • 如何在独立的 .vbs 文件中从 VBScript 调用 DotNetFactory?

    我一直在探索扩展 QuickTest Professional 脚本编写功能的选项 并发现今天早上 所以我决定尝试一下 下面的代码在 QTP 环境中执行时工作正常 但我也可以看到它在 QTP 环境之外的用途 不幸的是 从独立的 vbs 文件
  • 使用VBS脚本检查字符串是否包含特定字符

    我的脚本正在做以下几点 检索所有我选择的文件夹文件 按日期对它们进行分类 从最近的到较早的 在窗口中显示它们 这是我的 VBS 脚本 我检索它here http codes sources commentcamarche net sourc
  • 如何将 VBScript 转换为可执行 (EXE) 文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我四处寻找转换 VBScript 的信息 vbs 到可执行文件 并意识到大多数可用的工具实际上是将脚本包装在可执行文件中 尝试了一些工
  • VBScript 中的对象/类字典

    vbscript 中是否可以有对象 类的字典 例如 Class employeeclass Public first last salary End Class Dim employeedict Set employeedict Creat
  • 使用 qtp 功能单击特定链接

    我想通过创建一个在操作中调用的函数来自动执行 Flipkart 的登录过程 Function Website this is the function Systemutil Run iexplore exe http www flipkar
  • 使用 VBScript 重命名 IIS 中的虚拟目录?

    如何使用 VBScript 重命名 IIS 6 0 7 0 中的虚拟目录 或 Web 应用程序 如果您只想更改 IIS 7 中的站点名称 编辑applicationHost config文件 该文件可以在以下位置找到c Windows Sy
  • 如何从 HTA 中启动批处理文件

    我有一个基本的 HTA 其中我尝试通过按钮启动批处理文件 但是当我尝试启动批处理文件时 它不会运行 当我按下按钮时 将启动命令提示符窗口 但不会运行脚本 这是代码的简单示例
  • VBScript:从 Scripting.Dictionary 中对项目进行排序

    我有下面的代码 它获取这样的数据 姓名 1 姓名 4 姓名 2 姓名 3 并像这样列出 是一个复选框 姓名 1 姓名 4 姓名 2 姓名 3
  • 如何在远程机器上执行vbs文件

    如何在不使用 PsExec 的情况下执行位于同一域中的远程计算机上的 VBScript 我尝试了以下代码 但没有运气 Sub RunCommand strComputer Command Set objWMIService GetObjec
  • 经典的asp字符编码

    我在经典 asp 网站中遇到西班牙字符问题 用户可以在 aspx 页面上的表单中提交他们的姓名 地址 然后 aspx 页面将 ajax post 发送到经典的 asp 页面 它所做的所有操作都存储在我们的 Sql 2008 DB 中 我可以
  • 尝试绑定到 AD 用户对象时出现错误 2147463168

    我正在 Windows 2012 不是 R2 并且无法升级 AD 环境上工作 当我使用管理员 非管理员 帐户从 vbscript 运行以下代码时 它运行完美 然而 当我以普通用户运行它时 我得到一个 2147463168 这似乎是一个绑定错

随机推荐

  • HTML 到 CALS 表?

    我正在检查是否有人拥有可将 HTML 表转换为 CALS 的 XSLT 我发现了很多关于采用其他方式 CALS 到 HTML 的材料 但没有找到来自 HTML 的材料 我认为以前可能有人这样做过 所以我不必重新发明轮子 我并不是在寻找完整的
  • 将 Pandas GroupBy 多索引输出从 Series 转换回 DataFrame

    我有一个数据框 City Name 0 Seattle Alice 1 Seattle Bob 2 Portland Mallory 3 Seattle Mallory 4 Seattle Bob 5 Portland Mallory 我执
  • Dagger2自定义@Qualifier用法

    假设我正在制造一辆汽车 并且我有几个具有不同实现的 Brake beans class Car Inject Car BrakeType value abs Brake frontBrake BrakeType value nonabs B
  • 文本组件中的 ASCII 不可打印字符

    我的情况是 我必须扫描文本字段中的二维码 我必须解析该文本字段附带的不可打印字符 顺便说一句 它总是相同的字符 而这些字符永远不会出现在相同的位置 我尝试获取此代码但没有成功 textfield getText 失败 textfield g
  • 基本编程/算法概念[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我即将 与其他程序员一起 在我的高中
  • 在不同时区之间格式化时间的正确方法是什么?

    我想将 19 19 00 之类的时间格式化为不同的时区 如果我使用SimpleDateFormat它始终考虑纪元的开始 1970 01 01 有些时区在纪元开始时和现在有不同的偏移量 例如 现在与欧洲 基辅的默认偏移量是 UTC 0200
  • Power Query 按组的列总和作为新列

    所以我对电源查询很陌生 我只是浪费了一个多小时来寻找可以在许多其他程序中轻松完成的事情 我只想创建一个新列来总结另一列 例如 检查百分比是否正确 如果不正确则将其归一化 我不想分组并减少表格 我一直在左右搜索 并尝试使用诸如 Group S
  • websocket 订阅服务器不工作。无法到达订阅服务器 graphql-ws ws

    我遵循 相同的文档代码 1 使用websocket graphql创建订阅服务器 但它不适用于graphql ws和ws 当我删除 serverCleanup 定义时 代码有效 并且它也适用于旧的订阅库 subscription trans
  • 定期运行 python 程序作为 firebase 中的后台服务

    刚开始使用 firebase React 来构建一个网站 我网站的设计功能之一是抓取并向用户显示从另一个网站解析的数据 例如股票价格变化 我已经有一个 python 爬虫负责解析数据 但我不知道如何在 firebase 中执行我的服务器的这
  • 循环遍历文件扩展名,excel vba

    我正在使用文件扩展名数组并循环访问工作簿文件夹 该代码正在命名 Sheet 1 name MyName 我注意到尽管 xlsm 不在数组中 它仍在打开并命名工作表 这是代码 任何人都可以看看他们是否遇到同样的问题并且能够解决它 Sub Lo
  • 如何创建设置为太平洋标准时间午夜的 DateTimeOffset

    我正在使用 Quartz NET http quartznet sourceforge net http quartznet sourceforge net 我试图将开始日期设置在午夜 但我在创建这个日期时遇到问题 该应用程序将位于不同时区
  • 如何在自动完成地点中获取城市和州名称 _ Places API

    我正在使用地点自动完成功能从用户中选择城市 其工作正常 但现在我想要城市和州名 我的代码 正在初始化 List
  • 如何在 git 中使用 --work-tree 选项?我不断收到错误消息

    我有一个普通的存储库 其中有一个工作树和一个与工作树位于同一目录中的 git 文件夹 我正在尝试使用以下命令从该位置外部运行 git 命令 git git dir path to repo git work tree path to rep
  • 使用 ajax 渲染部分视图

    我查过这个问题 https stackoverflow com questions 4888521 asp net mvc3 razor views and partialviews with ajax postbacks它解决了我最初的问
  • Java EE 6 中的多租户支持

    我有一个现有的 Java EE 6 应用程序 部署在 Glassfish v 3 1 中 并且希望支持多个租户 我当前在应用程序中使用的技术 API 是 EJB 包括EJB定时器服务 JPA 2 0 EclipseLink JSF 2 0
  • 高级自定义字段 – 具有多个输入的自定义字段类型

    我正在尝试为 ACF 创建一个新的字段类型 其中包含多个输入或存储值数组 原因是我希望为一组输入字段提供一些交互性和自定义布局 我按照这个教程http www advancedcustomfields com resources tutor
  • 在 jQuery 中从 asp.net runat 服务器获取 ID

    我正在尝试使用 ASP NET 在 jQuery 中制作一些东西 但身份证来自runat server 与 HTML 中使用的 id 不同 我曾经用它来从这种情况中获取ID val 但在这种情况下 它不起作用 我不知道为什么 JavaScr
  • Neo4j 2.0 唯一约束错误“节点已存在”,当它不存在时

    我在 Neo4j 唯一约束方面遇到了一些麻烦 其中 CREATE cypher 语句由于节点已经存在而无法执行 问题是 它不 存在 此外 昨天使用这些确切数据的精确流程也有效 我的neo4j版本是ubuntu 12 04 3上的commun
  • Javascript 'this' 覆盖 Z 组合器和所有其他递归函数

    背景 我有一个由a实现的递归函数Z 组合器如图所示here https stackoverflow com questions 17645356 anonymous recursion any way to replace javascri
  • WScript.Shell.Exec - 从 stdout 读取输出

    我的 VBScript 不显示我执行的任何命令的结果 我知道命令被执行 但我想捕获结果 我已经测试了多种方法来执行此操作 例如以下方法 Const WshFinished 1 Const WshFailed 2 strCommand pin