在批处理和vbs混合脚本中,可以用wscript.echo 输出到命令提示符中,但是如何将命令提示符中的信息返回到

vbs脚本中?是返回到vbs脚本中,不是从vbs脚本到命令提示符中,麻烦了,如果可行,将加分那你就编一个dll,把源码发给我吧,谢谢了。要用VB的源码。我并不希望存在临时... vbs脚本中?
是返回到vbs脚本中,不是从vbs脚本到命令提示符中,麻烦了,如果可行,将加分

那你就编一个dll,把源码发给我吧,谢谢了。要用VB的源码。

我并不希望存在临时文件 ...
展开
 我来答
zjx20
推荐于2017-12-16 · TA获得超过114个赞
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:0
展开全部
可以用管道命令"|",将cmd的内容重定向到vbs的标准输入流,但必须以cscript作为脚本宿主

一个简单的demo:
-----------------------
test.bat文件内容:
dir | cscript test.vbs
pause

-----------------------
test.vbs文件内容:
Msgbox WScript.StdIn.ReadAll()

保存到同一目录,运行test.bat就看到效果了。输入流就看你怎么处理了。
追问
那个,请问我现在运行的是一个命令行程序,在这个程序后面加个参数,就不行了。若能回答,十分感谢!明天下午给你加分
追答
我不是很清楚为什么你的命令行程序不行,我估计是你那程序输出到了标准错误流,恰好我的方法只重定向了标准输出流。

我做了一下实验,引入一个err.vbs:
WScript.StdErr.Write "stderr" & Chr(13) '输出到标准错误流
WScript.StdOut.Write "stdout" & Chr(13) ‘输出到标准输出流

在cmd下运行err.vbs:
cscript /nologo err.vbs
黑窗口下输出两行,分别是"stderr"和"stdout"

改写test.bat:
cscript /nologo err.vbs | cscript test.vbs
结果只在msgbox中显示了“stdout”,证实了我的想法

要解决也很简单,先将标准错误流重定向到标准输出流,再将之重定向到test.vbs。

最后test.bat就像这样:
cscript /nologo err.vbs 2>&1 | cscript test.vbs
这次msgbox中就有"stderr"和"stdout"了。

你可以试试像我这样执行你的命令,在后面多写个"2>&1"。只是我的猜测,不保证在你这成功,再不行我也不知道什么原因了。
escortmnm
2011-03-12 · TA获得超过3393个赞
知道大有可为答主
回答量:1890
采纳率:0%
帮助的人:3275万
展开全部
使用for /f获取,例子如下:
批处理代码:

::═════代═══码═══开═══始═════
@echo off
for /f "tokens=*" %%i in ('cscript /nologo 123.vbs') do (
echo %%i)
pause
::Created By escortmnm from VBS团队
::═════代═══码═══结═══束═════

用到的vbs示例文件(123.vbs):

'═════代═══码═══开═══始═════
dim data
data=date()
wscript.echo data
'═════代═══码═══结═══束═════

将vbs代码保存到与批处理同目录下面为123.vbs,运行批处理代码即可获得数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麦兜Terran
2011-03-12 · TA获得超过2571个赞
知道小有建树答主
回答量:1786
采纳率:0%
帮助的人:1168万
展开全部
escortmnm的是错的 题目都说的很清除了

建一个test.vbs和test.bat
vbs代码:
dim return
for each i in wscript.arguments
return=trim(return&space(1)&i)
next
msgbox return

bat代码
test.vbs hello! world.
//你可以这样得到返回值,另外是运行bat不是vbs
更多追问追答
追问
哦,这个我知道,比如像dir输出的就不行了。dir只能先输出到文件,然后再读取这个文件,绕这么一个大圈才行。我遇到的就是这种问题。我需要的就是在批处理中如何将dir所输出的信息直接赋值给一个变量。
追答
你可以利用临时文件来解决这个问题

bat代码:
dir/b>tmp
test.vbs tmp

vbs代码:
set open=createobject("scripting.filesystemobject")
public function readfile(files)
readfile=open.opentextfile(files).readall
end function
'----------------------
'以上为读取文本
'----------------------
public function arg
for each i in wscript.arguments
arg=arg&i&vbcrlf
next
if right(arg,2)=vbcrlf then arg=left(arg,len(arg)-2)
end function
'----------------------
'以上为命令参数
'----------------------
public function delete(files)
open.getfile(files).delete
end function
'----------------------
'以上为删除文件
'----------------------
'以下是主要调用的参数
msgbox readfile(arg)
delete(arg)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-12
展开全部
cqmdco hisjai hqpws ijasapa bwoqw shiaoi,khsiuxwe uieijww.ciwjijwjqie cnuiij,ihiqjsijiasqw dewcwuijsx siajsijijws ciqoqeud cdbsbxsdoewufewu.

参考资料: oiw ei

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式