在批处理和vbs混合脚本中,可以用wscript.echo 输出到命令提示符中,但是如何将命令提示符中的信息返回到
vbs脚本中?是返回到vbs脚本中,不是从vbs脚本到命令提示符中,麻烦了,如果可行,将加分那你就编一个dll,把源码发给我吧,谢谢了。要用VB的源码。我并不希望存在临时...
vbs脚本中?
是返回到vbs脚本中,不是从vbs脚本到命令提示符中,麻烦了,如果可行,将加分
那你就编一个dll,把源码发给我吧,谢谢了。要用VB的源码。
我并不希望存在临时文件 ... 展开
是返回到vbs脚本中,不是从vbs脚本到命令提示符中,麻烦了,如果可行,将加分
那你就编一个dll,把源码发给我吧,谢谢了。要用VB的源码。
我并不希望存在临时文件 ... 展开
4个回答
展开全部
可以用管道命令"|",将cmd的内容重定向到vbs的标准输入流,但必须以cscript作为脚本宿主
一个简单的demo:
-----------------------
test.bat文件内容:
dir | cscript test.vbs
pause
-----------------------
test.vbs文件内容:
Msgbox WScript.StdIn.ReadAll()
保存到同一目录,运行test.bat就看到效果了。输入流就看你怎么处理了。
一个简单的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"。只是我的猜测,不保证在你这成功,再不行我也不知道什么原因了。
展开全部
使用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,运行批处理代码即可获得数据。
批处理代码:
::═════代═══码═══开═══始═════
@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,运行批处理代码即可获得数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
建一个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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询