2010-09-19 76 views
1

在vbscript中,如何在当前cmd提示窗口中运行批处理文件或命令,而不启动新进程,而不是启动新进程。在vbscript中,如何使用当前cmd提示窗口的环境运行批处理文件或命令?

例如。据script56.chm(VBScript的帮助显然) Windows脚本宿主
运行方法(Windows脚本宿主)
“在新的进程中运行的程序”

所以,如果我有代码,使用的是如一个VBS文件和一个BAT文件。 环境变量g的值abc g = abc 来自该命令窗口, VBS文件使用Windows脚本主机运行调用BAT文件。 蝙蝠处理设置g = z。并完成..和vbs过程完成。 环境变量保持不变,因为g = abc。

我知道 的CreateObject( “Wscript.Shell”)运行。 “C:\ test.bat的”,0 开始一个新的窗口,使用1而不是0时是明确的(因为0隐藏窗口)

我该如何 - 在vbs被调用的同一个cmd环境中,从vbs运行bat文件,所以更改会影响它被调用的cmd环境? - 在这两个窗口的情况下,如何从批处理文件访问父级cmd窗口的环境?

+1

在[如何在调用批处理脚本中可以读取的vbs中设置环境变量](http://stackoverflow.com/q/3737725/37941) – bacar 2010-09-21 10:07:47

+0

也问这个问题,这是很好的,这是一个类似的问题相关信息。 – barlop 2010-09-21 13:37:27

+0

这里最简单的解决方案不是混合技术。放弃批处理文件并完成VBScript中的所有工作。 – Nilpo 2012-03-26 12:14:08

回答

2

如何在当前cmd提示窗口中运行批处理文件或命令,而无需启动新进程?

我不认为你可以;您的vbscript在脚本主机引擎(例如cscript.exewscript.exe)下运行,批处理文件由命令解释程序解释(通常为cmd.exe)。两者都是单独的可执行文件,就我所知,它们都不能用作进程内库,因此您无法在同一进程中解释.vbs和.cmd文件。我也非常怀疑运行VBScript的脚本宿主引擎也可以在其父文件cmd.exe中运行批处理文件 - 我不认为你可以将一个新的批处理文件“注入”到正在运行的cmd.exe中。

如何从批处理文件访问父级cmd窗口的环境? 。

不只是访问,但变化 - MSDN's "Changing Environment Variables"是对这个很明确的:“创建进程中改变一个子进程的环境变量,唯一的办法一个过程可以直接改变另一个进程的环境变量进程不能直接更改另一个不属于该进程子进程的进程的环境变量。“您正在尝试更改父级的环境,而不是子级进程。 (不过,我确实想知道这个引用中“直接”意味着什么)。

我猜想这是安全的原因;想象一下,如果任意进程可能(恶意或意外)更改正在运行的进程的PATH(或COMSPEC)环境变量(如vbscript主机引擎进程)可能会造成的破坏 - 它可能无法完全启动您的bat文件,破坏您的程序。

看起来你运气不好 - 但是,还有很多其他机制在进程之间传递信息。这里有一对夫妇的是一个批处理文件&的VBScript之间交谈时实现起来非常简单的建议,虽然它并不详尽:

  • 退出代码
  • 写&解析consoleoutput(标准输出)或临时文件

如果你绝对需要设置父CMD.EXE环境变量(也绝对需要一个VBScript的中间步骤),那么你米ay必须编写一个运行vbscript的包装器批处理文件,消耗由它产生的信息,然后设置环境变量;因为wrapper cmd正在执行顶级cmd进程,所以它将能够在那里更改env vars。脚本注意:你需要注意的是,可以从更改VBScript中的永久系统/用户环境变量(而不是过程环境变量),但是如果你试图创建一个瞬态状态,我不会推荐这个;而且这不会影响已经运行的进程(比如父进程cmd.exe)。

+0

[This solution](http://stackoverflow.com/questions/3737725/how-to-set-environment-variables-in-vbs-that-c​​an-be-read-in-calling-batch-script/3737791# 3737791)给出了如何编写建议的包装器批处理文件的例子。 – bacar 2010-09-21 10:09:45

+0

我会添加..因为它是一个cmd窗口,调用vbs调用bat(它运行在它自己的cmd窗口中)..这更多的是一个子进程和祖父进程通信或设置对方的环境变量的问题;-)但我看...看起来不可能。有趣的是看到不同的方法,但在这个问题/“解决方案”你链接到。 – barlop 2010-09-21 13:47:17

相关问题