中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-24 04:02
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » 征集批处理接受脚本语言返回结果的方法!
可打印版本  2,904 / 26
第1楼 sunyao 发表于 2006-11-07 04:00
初级用户 发帖 60 积分 141 来自 天津
征集批处理接受脚本语言返回结果的方法!
在批处理文件中接受vbs等其他脚本语言的返回结果的方法!!
第2楼 sunyao 发表于 2006-11-07 04:02
初级用户 发帖 60 积分 141 来自 天津
先举一例子引用youxi01用户的例子:
看看以下代码:

@echo off
::写一个求字符串长度的vbs文件
echo temp=wscript.arguments(0) >temp.vbe
echo for i=1 to len(temp) >>temp.vbe
echo if asc(mid(temp,i,1))^<0 then >>temp.vbe
echo strlen=strlen+2 >>temp.vbe
echo else >>temp.vbe
echo strlen=strlen+1 >>temp.vbe
echo end if >>temp.vbe
echo next >>temp.vbe
echo wscript.echo strlen >>temp.vbe
:Start
set /p EN=请输入字符串:(直接回车退出)=
if not defined EN goto :Over
::获取vbe文件的执行结果
for /f %%i in ('cscript.exe temp.vbe %EN% //nologo') do echo.&echo 字符串长度为: %%i
set EN=
goto :Start
:Over
::删除生成的文件
del temp.vbe

这一句是关键:
for /f %%i in ('cscript.exe temp.vbe %EN% //nologo') do ......
利用for循环,读取vbs返回结果,也可以算是批处理接受脚本语言返回结果的一种解决办法吧。(当然在本程序中,没必要一定要使用for)
第3楼 electronixtar 发表于 2006-11-07 05:13
铂金会员 发帖 2,672 积分 7,493
1. 临时文件
2. 参数
3. 变量
4. 输出重定向
第4楼 sunyao 发表于 2006-11-07 05:28
初级用户 发帖 60 积分 141 来自 天津
高人举几个例子 解释一下吧
第5楼 youxi01 发表于 2006-11-07 05:39
高级用户 发帖 247 积分 846 来自 湖南==》广东
electronixtar的意思是,先用vbs脚本或者其它程序将返回结果写入文件,然后利用批处理读取文件就行了。
第6楼 sunyao 发表于 2006-11-07 05:48
初级用户 发帖 60 积分 141 来自 天津
哦 我明白了
youxi01可是用for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i方法不好使
第7楼 sunyao 发表于 2006-11-07 06:45
初级用户 发帖 60 积分 141 来自 天津
electronixtar
麻烦能不能举一个vbs脚本将返回结果写入文件,然后利用批处理读取文件的例子。
谢谢!!
第8楼 electronixtar 发表于 2006-11-07 08:34
铂金会员 发帖 2,672 积分 7,493
这个~~我写一个吧
a.vbs

b.bat


其实我的批处理真的很菜~
第9楼 sunyao 发表于 2006-11-07 22:56
初级用户 发帖 60 积分 141 来自 天津
我现在用
for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i
我想在startserver.py文件中取出变量status的值
怎么就去不出来呢 快疯了
第10楼 zerocq 发表于 2006-11-07 23:24
中级用户 发帖 196 积分 458
把批处理分成两部分第一部分调用vbs产生参数
再让vbs调用第二部分批处理带上参数这样可以不?

for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i这句括号里带 %status% //Nologo有什么用的啊??
第11楼 zjh7547 发表于 2006-11-07 23:44
新手上路 发帖 2 积分 4
批处理中调用SQL脚本时如何返回结果?
比如要得到SQL Server 的安装目录 ,在批处理中如何得到?用sql命令就很简单了 ,可惜不知道如何将得到的字符串传回DOS中???
第12楼 redtek 发表于 2006-11-07 23:52
金牌会员 发帖 1,147 积分 2,902
Originally posted by sunyao at 2006-11-7 22:56:
我现在用
for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i
我想在startserver.py文件中取出变量status的值
怎么就去不出来堮..


) C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status%都输出什么内容?

) %status% 有这个变量吗?内容是什么?

) //Nologo 是针对wscript.exe的参数:不显示hui标,执行时不显示标致,
       这跟你那个wlst.cmd startserver.py %status% 有关系吗?
第13楼 sunyao 发表于 2006-11-08 00:05
初级用户 发帖 60 积分 141 来自 天津
我输出startserver.py时显示
驱动器中没有标签
卷的序列号是9c83-6df1
第14楼 sunyao 发表于 2006-11-08 00:09
初级用户 发帖 60 积分 141 来自 天津
是不是如果dir出不来的文件就查不到呀
第15楼 redtek 发表于 2006-11-08 00:10
金牌会员 发帖 1,147 积分 2,902
for /f "delims=" %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py') do echo %%i

再试一下输出什么?

只要你 c:\bea\weblogic91\common\bin\wlst.cmd startserver.py 的输出信息正常,
并且 wlst.cmd 代码中没有产生让你的 for /f ....主批处理遇到不可抗力的因素(如:战争、地震、……~:P)。

你 C:\bea\weblogic91\common\bin\wlst.cmd startserver.py 输出的什么文本信息,你for取回了就是什么(除了特殊情况)。

[ Last edited by redtek on 2006-11-8 at 12:12 AM ]
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023