中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 00:29
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 征集批处理接受脚本语言返回结果的方法! 查看 2,639 回复 26
楼 主 征集批处理接受脚本语言返回结果的方法! 发表于 2006-11-07 04:00 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
在批处理文件中接受vbs等其他脚本语言的返回结果的方法!!
2 发表于 2006-11-07 04:02 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
先举一例子引用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 发表于 2006-11-07 05:13 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
1. 临时文件
2. 参数
3. 变量
4. 输出重定向
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-07 23:02

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
4 发表于 2006-11-07 05:28 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
高人举几个例子 解释一下吧
5 发表于 2006-11-07 05:39 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
electronixtar的意思是,先用vbs脚本或者其它程序将返回结果写入文件,然后利用批处理读取文件就行了。
6 发表于 2006-11-07 05:48 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
哦 我明白了
youxi01可是用for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i方法不好使
7 发表于 2006-11-07 06:45 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
electronixtar
麻烦能不能举一个vbs脚本将返回结果写入文件,然后利用批处理读取文件的例子。
谢谢!!
8 发表于 2006-11-07 08:34 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
这个~~我写一个吧
a.vbs

CreateObject("Scripting.FileSystemObject").CreateTextFile("test.txt").write "hello"

b.bat

for /f %a in ("test.txt") do @echo %a


其实我的批处理真的很菜~
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-07 23:17

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
9 发表于 2006-11-07 22:56 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
我现在用
for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i
我想在startserver.py文件中取出变量status的值
怎么就去不出来呢 快疯了
10 发表于 2006-11-07 23:24 ·  中国 浙江 温州 电信
中级用户
★★
积分 458
发帖 196
注册 2006-10-05 12:04
19年会员
UID 64614
状态 离线
把批处理分成两部分第一部分调用vbs产生参数
再让vbs调用第二部分批处理带上参数这样可以不?

for /f %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py %status% //Nologo') do echo %%i这句括号里带 %status% //Nologo有什么用的啊??
11 发表于 2006-11-07 23:44 ·  中国 广西 北海 电信
新手上路
积分 4
发帖 2
注册 2006-09-05 21:58
19年会员
UID 61908
性别 男
状态 离线
批处理中调用SQL脚本时如何返回结果?
比如要得到SQL Server 的安装目录 ,在批处理中如何得到?用sql命令就很简单了 ,可惜不知道如何将得到的字符串传回DOS中???
12 发表于 2006-11-07 23:52 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
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% 有关系吗?
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
13 发表于 2006-11-08 00:05 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
我输出startserver.py时显示
驱动器中没有标签
卷的序列号是9c83-6df1
14 发表于 2006-11-08 00:09 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
是不是如果dir出不来的文件就查不到呀
15 发表于 2006-11-08 00:10 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
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 ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
论坛跳转: