Board logo

标题: [求助]如何产生网页的复选框并根据用户选择返回给CMD [打印本页]

作者: HUNRYBECKY     时间: 2007-2-19 23:06    标题: [求助]如何产生网页的复选框并根据用户选择返回给CMD

首先祝大家新年快乐,健康平安幸福每一天
今天无聊没有事情,就跑来上网,想问个问题:批量安装绿色软件
我使用FOR /F "DELIMS=" %% I IN ('DIR /S/B *G.EXE') DO ECHO %%I 来获取了所有需要安装的绿色软件(后面最后一个字符为G的EXE文件)路径,虽然获取了绿色软件,但是我想让用户根据这个列表来选择安装,怎么实现呢?纯DOS好像不行,我想通过使用CMD产生一个HTML文件,因为HTML文件中可以使用复选框,用户就可以根据这个复选框来选择安装那些软件了,但是如何实现呢?我对HTML编程一窍不通哟,所以只有请各位大哥多多发表下意见(以前看到"谁说批处理界面不漂亮,就想要这样的效果").

我的批处理内容如下(注意IPATH是预先在RAR压缩时使用的解压路径,可以在批处理中设置RAR可以识别):
@echo off
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
SET /P IPATH=请你输入安装路径(如D:;e:\greensoft,输入时省去最后一个\):
CLS
FOR /F "DELIMS=" %%I IN ('DIR /S/B *G.exe') DO (
    IF NOT EXIST "%IPATH%\%%~nI" (
        SET IPATH=%IPATH%\%%~nI
        ECHO 正在安装%%~nI到%IPATH%下,请等待......
        START /B/WAIT/MIN "" %%I)
)

PAUSE
[ Last edited by HUNRYBECKY on 2007-2-28 at 05:02 AM ]
作者: HUNRYBECKY     时间: 2007-2-19 23:25
好像今天人很少,自己顶下.
作者: HUNRYBECKY     时间: 2007-2-20 00:07
在顶下,以前的那个漂亮的IE界面的帖子好像也被删除了。想下载下来学习也不行了。
作者: HUNRYBECKY     时间: 2007-2-20 02:54
恩,继续在等待,今天好像问问题的比较多,高手都回家过年了 :-)
作者: HUNRYBECKY     时间: 2007-2-27 23:36
可能我表达的不是很清楚,说明一下.
我使用FOR命令获取到了要安装的绿色软件列表到一个文本OK.TXT
PowerwordG.exe
winrarG.exe
QQG.exe
我想根据OK.TXT的文件内容让用户选择安装需要安装的绿色软件,但是直接在CMD下比较麻烦而且不是很美观,所以我想使用网页的形式如像"谁说的批处理界面不漂亮"一样,根据OK.TXT的项目产生一系列复选框,然后用户就可以自由选择了,然后把用户的选择返回给CMD.
不知道我这样表达是否清楚了.
这里有效果的例子:http://www.blabla.cn/html_examples/056_form_input_check_checked.html

[ Last edited by HUNRYBECKY on 2007-2-28 at 04:51 AM ]
作者: vkill     时间: 2007-2-27 23:53
要用html那就不知道了
作者: HUNRYBECKY     时间: 2007-2-28 00:39
恩,ZH159兄的哪个谁说批处理不漂亮,就是使用BAT+VBS+HTML实现的,效果相当不错,但是本人不会HTML的语法,所以比较麻烦.希望会HTML的高手来解答
作者: HUNRYBECKY     时间: 2007-2-28 05:03
一直没有人来回答.是不是有点难,还是其他原因,路过走过的,给点意见.
作者: zh159     时间: 2007-2-28 11:43
现在忙,等过几天有空了再写一段
作者: HUNRYBECKY     时间: 2007-3-1 00:41
谢谢.理解.不过我现在正研究你的哪个程序
作者: slore     时间: 2007-3-1 01:35


  Quote:
Originally posted by HUNRYBECKY at 2007-2-27 11:39:
恩,ZH159兄的哪个谁说批处理不漂亮,就是使用BAT+VBS+HTML实现的,效果相当不错,但是本人不会HTML的语法,所以比较麻烦.希望会HTML的高手来解答

严格的说那是P处理么?调用了……

那个纯粹是个IE界面…罢了。单P可以么?

P可以运行exe,运行个cs,qq,war3的话,不知道可不可以说批处理能对战?能视频……能XXX……
作者: zh159     时间: 2007-3-1 02:23
批处理本来就是一个命令(内部命令、外部命令)的集合体,调用各种命令来完成目的任务。
作者: HUNRYBECKY     时间: 2007-3-4 00:31
问下能不能使用FRAME把网页划分为三个部分,第一个部分为页头,大小规定,显示重要显示,而第二个部分内容,根据内容的多少显示滚动条;第三个部分为页尾,显示其他信息,如何在VBS中实现?

如下面的代码,我怎样直接在FRAME的LEFT中写入文本,却没有任何效果:
<html>
<head>
  <frameset cols="50%,50%">
   <frame name="left" src="">
   <frame name="right" src="">
        </frameset>
                <script language="javascript">
                function window.onload()
                {
                document.frames.item("left").document.write("11111");
                document.frames.item("left").document.close();
                }
                </script>
</head>
</html>
[ Last edited by HUNRYBECKY on 2007-3-4 at 03:41 AM ]
作者: zh159     时间: 2007-3-4 06:14
你这个还得需要两个html文件连接到
   <frame name="left" src="html文件1">
   <frame name="right" src="html文件2">
中才有效

写段简单些的(自己删除二句“goto min”,把后面的 call echo start /w "%%%%i%%" 改为 call start /w "%%%%i%%")
@echo off
goto min
mode con cols=25 lines=5
%1 %2
start /min /i "" "%~nx0" goto min&&exit

:min
if exist *.exe (
for /f "delims=" %%i in ('dir /on/a-d/b *.exe') do (
  set /a Num+=1
  call set "file%%Num%%=%%i"
))

>List.vbs echo set WshShell = Wscript.CreateObject("Wscript.Shell")
>>List.vbs echo set ie=wscript.createobject("internetexplorer.application","event_")
>>List.vbs echo ie.menubar=0
>>List.vbs echo ie.addressbar=0
>>List.vbs echo ie.toolbar=0
>>List.vbs echo ie.statusbar=0
>>List.vbs echo ie.resizable=0
>>List.vbs echo ie.width=600
>>List.vbs echo ie.height=600
>>List.vbs echo ie.navigate "about:blank"
>>List.vbs echo ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2)
>>List.vbs echo ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2)
>>List.vbs echo ie.visible=1
>>List.vbs echo with ie.document
>>List.vbs echo .write "<html><title>安装列表</title><body background='bg.gif' bgcolor=#e3e5da style='font-family:楷体_GB2312;font-size:24px;' scroll=yes><p align=center>软件列表"
>>List.vbs echo .write "<table width=500 align=center border=1 cellSpacing=2 cellpadding=4 borderColor=#698cc2 style='font-family:宋体;font-size:15px;border:#698cc2 2px solid;'>"
>>List.vbs echo .write "<tr align=center><td width=45><b>序号</b></td><td><b>软 件 名 称</b></td></tr>"

if exist *.exe (
for /l %%n in (1,1,%Num%) do >>List.vbs call echo .write "<tr><td align=center><b>%%n</b></td><td><input id=file%%n type=checkbox style=cursor:hand><label for=file%%n style=cursor:hand><b>安装 “%%file%%n%%”</b></label></td></tr>"
) else (
>>List.vbs echo .write "<tr align=center><td width=45><b>无</b></td><td colspan=2><b>本目录没有 EXE 安装程序</b></label></td></tr>"
)

>>List.vbs echo .write "</table><p align=center><input id=confirm type=submit value='开始安装'></td></table></body></html>"
>>List.vbs echo end with
>>List.vbs echo dim wmi
>>List.vbs echo set wnd=ie.document.parentwindow
>>List.vbs echo set id=ie.document.all
>>List.vbs echo id.confirm.onclick=getref("confirm")
>>List.vbs echo do while true
>>List.vbs echo wscript.sleep 500
>>List.vbs echo WshShell.AppActivate ("安装列表 - Microsoft Internet Explorer")
>>List.vbs echo loop
>>List.vbs echo sub event_onquit
>>List.vbs echo ie.visible=0
>>List.vbs echo wscript.quit
>>List.vbs echo end sub
>>List.vbs echo sub confirm
>>List.vbs echo ie.visible=0
>>List.vbs echo ie.quit
>>List.vbs echo with id

if exist *.exe for /l %%n in (1,1,%Num%) do >>List.vbs echo if .file%%n.checked then Wscript.Echo "file%%n"

>>List.vbs echo wscript.quit
>>List.vbs echo exit sub
>>List.vbs echo end with
>>List.vbs echo end sub

for /f "delims=" %%i in ('"cscript //nologo List.vbs"') do call echo start /w "%%%%i%%"
del List.vbs
exit
[ Last edited by zh159 on 2007-3-3 at 09:24 PM ]
作者: HUNRYBECKY     时间: 2007-3-7 00:09


  Quote:
Originally posted by zh159 at 2007-3-4 06:14:
你这个还得需要两个html文件连接到
   <frame name="left" src="html文件1">
   <frame name="right" src="html文件2">
中才有效 ...

谢谢ZH兄的回答,目前我正学HTML编程,哪个程序我基本上搞定了,但还是有问题,上面提到的在同一页面上如何固定页首和页尾,使用FRAME方法需要另外两个叶面,很麻烦,那么有没有其他方法解决呢,难道FRAME真的就解决不了吗?直接在父FRAME对子FRAME引用编程能实现吗?如果不解决,真的很难看,下面是VBS代码,保存为VBS后大家测试下.
'引用shdocvw.dll的internetexplorer.application对象,如果fullscreen=1则没有标题栏
set WshShell = Wscript.CreateObject("Wscript.Shell")
set ie=wscript.createobject("internetexplorer.application","event_")
ie.fullscreen=1
ie.menubar=0
ie.addressbar=0
ie.toolbar=0
ie.statusbar=0
ie.resizable=0
ie.width=600
ie.height=400
ie.navigate "about:blank"
ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2)
ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2)
ie.visible=1
with ie.document
.write "<html><title>一键安装管理器</title><meta http-equiv='Content-Type' content='text/html; charset=gbk'>"
.write "<style type='text/css' id='css'>.button {font: 15px 宋体, Verdana;height:32px;width:100px;}</style>"
.write "<body onload=sf() background='D:\OK\sys\FAX\bg.gif' bgcolor=#e3e5da oncontextmenu='return false' scroll=yes style='font-family:宋体;font-size:15px;'>"
.write "<table align=center style='font-family:楷体_gb2312;font-size:24px;'><td><b>一键安装管理器V1.0</b></td></table>"
.write "<table  width=550 align=center style='FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde)'><td align=left style='font-size:1px;'> </td></table>"
.write "<table  width=550 align=center borderColor=#698cc2 border=1 cellSpacing=0 cellpadding=5 style='font-size:15px;border:#5a7dde 3px solid;'>"
.write "<tr><td align=center bgcolor=#698cc2 style='FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde)' colspan=4><b><font style=font-size:18px;color:#ffffff;> 欢迎使用一键安装管理器 </font><br><font style=color:#d0d0d0;><a title='中国DOS联盟论坛'>QQ:9399100</a>  <a title='参考zh159兄的IE批处理界面编写'>EMAIL:xiaobudian528@yahoo.com.cn</a></font></b></td></tr>"
.write "<tr><td align=left colspan=4><b>选择下列要安装的软件,然后点安装即可</td><tr>"
.write "<tr align=center><td colspan=1><b>软件名称</b></td><td colspan=3><b>软件说明</b></td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='32bit Fax x9.43.01 汉化版.exe'><b>32bit Fax x9.43.01 汉化版</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='FaxMail Network 94301.exe'><b>FaxMail Network 94301</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='HB-RelayFax504pro.rar'><b>HB-RelayFax504pro</b></td>"
.write "<td align=left colspan=3> ;下面的注释包含自释放脚本命令</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='mf32_9X(mightyfax3.08).rar'><b>mf32_9X(mightyfax3.08)</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='mf32_NT(MightyFAX3.08).rar'><b>mf32_NT(MightyFAX3.08)</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='MightyFAX 3.08_9X_HYQ9.rar'><b>MightyFAX 3.08_9X_HYQ9</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='MightyFAX 3.08_NT_HYQ9.rar'><b>MightyFAX 3.08_NT_HYQ9</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='PC-Telephone V5.9(支持网络电话传真).exe'><b>PC-Telephone V5.9(支持网络电话传真)</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='test.rar'><b>test</b></td>"
.write "<td align=left colspan=3> width和height属性分别指定表格一个固定的宽度和长度,n1和n2可以用像素来表示,也可以用百分比(与整个屏幕相比的大小...rowsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='VentaFax 5.7.26.exe'><b>VentaFax 5.7.26</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='WINFAXminiview.exe'><b>WINFAXminiview</b></td>"
.write "<td align=left colspan=3>&nbsp</td><tr>"
.write "<tr><td align=left colspan=4 bgcolor=#698cc2 style='FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'><font style=font-size:15px;color:#ffffff;><b>安装模式:</b><input type='radio' CHECKED name='INSTALLMODLE' value='M1' title='默认为常规方式安装,不仅可以安装绿色软件,还可以安装普通软件,安装绿色软件时还可以不用预压缩'>一键常规安装<input type='radio' name='INSTALLMODLE' value='M2' title='只能安装预压缩的绿色软件,非绿色的软件将被忽略'>一键绿化安装<input type='radio' name='INSTALLMODLE' value='M3' title='对安装后的绿色软件进行修复,要求有绿色软件目录有GSETUP.bat存在'>一键绿化修复<input type='radio' name='INSTALLMODLE' value='M4' title='对安装后的绿色软件进行卸载,要求有绿色软件目录有install.bat存在'>一键绿化卸载<br><B>安装路径:</B><input type='text' ID='IPATH' name='IPATH' SIZE='70'value='D:\GREEN' title='设置时注意不要输入路径的最后一个\,如C:不要设置为C:\,又如C:\MYSOFT不要设置为C:\MYSOFT\,另外如果不设置则默认安装路径为D:\GREEN'></font></td></tr>"
.write "<tr><td align=center width=25% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'> </td><td align=center width=25% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'></td>"
.write "<td align=center width=25% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'> </td><td align=center width=25% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'> </td><tr></table>"
.write "<table width=550 align=center border=0 cellSpacing=0 cellpadding=5 ><tr align=center><td align=center width=25%><input id=btALL type=submit class=button value='全部选择' title='全部选择或取消全部选择以便进行软件安装' style='font-family:楷体_gb2312;font-size:21px;width=100;border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);cursor:hand;color:#ffffff;'></td><td align=center width=25%><input id=btInstall type=button class=button value='立即安装' title='立即安装选择的软件' style='font-family:楷体_gb2312;font-size:21px;width=100;border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);cursor:hand;color:#ffffff;'></td>"
.write "<td align=center width=25%><input id=btGInStallList type=button class=button value='制作安装脚本' title='在当前目录生成InStallList.TXT文件以便根据该文件进行安装,这样可以随意设置软件注释,提高安装速度.' style='font-family:楷体_gb2312;font-size:21px;width=140;border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);cursor:hand;color:#ffffff;'></td><td align=center width=25%><input type=button class=button onClick='opener=null;window.close()' value='退出程序' title='退出安装程序' style='font-family:楷体_gb2312;font-size:21px;width=100;border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);cursor:hand;color:#ffffff;'></td></tr></td></table>"
.write "</body></html>"
end with
dim wmi
set wnd=ie.document.parentwindow
set id=ie.document.all
id.btAll.onclick=getref("btALL")
id.btInstall.onclick=getref("btInstall")
id.btGInStallList.onclick=getref("btGInStallList")
do while true
wscript.sleep 500
WshShell.AppActivate ("一键安装管理器 - Microsoft Internet Explorer")
loop
sub event_onquit
Wscript.Echo "exit"
wscript.quit
end sub
sub btALL
with id
if .btALL.value="全部选择" then
for sx=0 to .InStallList.length-1
.InStallList(sx).checked=-1
next
.btALL.value="全部取消"
elseif .btALL.value="全部取消" then
for sx=0 to .InStallList.length-1
.InStallList(sx).checked=0
next
.btALL.value="全部选择"
end if
end with
end sub
sub btGInStallList
msg="制作安装脚本将会退出并重新启动该程序,确定吗?"
ie.visible=0
IF MsgBox(msg,vbQuestion+vbYesNo,"小布点提示您")=vbNo then
ie.visible=1
exit sub
END IF
Wscript.Echo "btGInStallList"
ie.quit
end sub
sub btInstall
ie.visible=0
with id
if .IPATH.value="" then
msgbox "安装路径不能为空,请重新输入!"
ie.visible=1
exit sub
elseif right(.IPATH.value,1)="\" then
msgbox "安装路径最后一个字符不能为\,请重新输入!"
ie.visible=1
exit sub
end if
Wscript.Echo .IPATH.value
dim mx
for mx=0 to 3
if .INSTALLMODLE(mx).checked=-1 then Wscript.Echo .INSTALLMODLE(mx).value
next
dim sx,nx
if isobject(InStallList)=fale then exit sub
nx=0
for sx=0 to .InStallList.length-1
if .InStallList(sx).checked=-1 then
nx=nx+1
Wscript.Echo .InStallList(sx).value
end if
next
ie.quit
end with
end sub
[ Last edited by HUNRYBECKY on 2007-3-7 at 01:08 AM ]
作者: zh159     时间: 2007-3-7 14:13
VBS生成的IE界面窗口里的文件链接只能采用绝对地址连接,所以不是太合适采用多html文件组成界面

你那个界面好像是每个选中的软件还得单独经过一个界面配置才安装,比较麻烦,建议绿色软件用WinRAR做成绿色安装版就OK了

我 14 楼的脚本适当加入一些代码就可以在界面中增加软件说明、默认需要安装的软件等;尽量简单为好
作者: HUNRYBECKY     时间: 2007-3-7 21:51


  Quote:
Originally posted by zh159 at 2007-3-7 14:13:
VBS生成的IE界面窗口里的文件链接只能采用绝对地址连接,所以不是太合适采用多html文件组成界面

你那个界面好像是每个选中的软件还得单独经过一 ...

我的这个安装是BAT+VBS+HTML做的,因为我给出的代码是经过BAT生成的VBS代码,当然就没有了BAT的内容,VBS回把结果返回给BAT,然后使用BAT+RAR解压缩安装或直接调用EXE程序的.
安装方式我给出了4种,第一钟常规方式,不仅可以用来安装绿色软件,而且可以安装普通的EXE文件,如果是WINRAR 或7ZIP压缩的绿色软件则直接解压缩,最后历篇安装目录中的GSETUP.BAT(表示每个绿色软件的批处理程序)来完成安装;第二种则只安装经过特殊制作的WINRAR压缩包,怎么个特殊法,其实就是在压缩绿色软件时在绿色软件解压缩时自动调用里面的GSETUP.BAT来实现,这样就简化了安装过程,我的绿色软件基本上都是这样的模式,比较方便,既可以手动安装,又可以使用RAR命令来解压缩安装.第三种方式表示修复安装后的绿色软件,原因很简单,如果重新安装了系统等,原来的绿色软件就无法再使用了,那么就可以简单的使用这个修复功能了,自动历篇指定目录的存在GSETUP.BAT并执行之.第四个则是直接历篇指定目录中的UINSTALL.BAT来进行绿色软件的删除.因为我的标题是"一键安装管理器",所以所有操作都体现这个主题,没有让用户过多的去参与.

如果在程序目录存在InStallList.txt文件那么程序自动调用该文件并在IE界面上列出来让用户选择,如果不存在该文件,我提供两个选择,一是直接历篇目录中的所有EXE,RAR,7Z文件,根据压缩文件的注释自动添加软件的安装说明(需要在制作压缩文件时设置好),如果没有则保留为空表格;二是提供了一个制作安装脚本按钮,用户可以直接点生成就可以根据压缩文件的注释自动生成InStallList.txt文件,那么用户就可以修改InStallList.txt中的安装说明,同时重新加载时大大提高了速度.


做这个程序的目的是因为我是电脑管理员,不仅经常给公司安装程序(很多大程序如OFFICE等我都做成了绿色版),也常常给同事朋友等安装程序,那么写出这个程序,安装软件也就一切变的很简单了.把我绿色软件全部复制过去,用户自己就可以安装了,不用我跑来跑去的.

谢谢ZH兄的大力支持,问下,我现在只有哪个界面不是很满意,真的没有办法解决了吗?要固定住头和尾,通过13楼的方法可以实现吗?这是别人给的代码,可是我怎么搞都不行,还有没有其他办法,使用IFRAME可以吗?因为只要把IFRAME放到中间,设置适当的高度和宽度,首尾不用管,所以应该实现,但我不知道怎么做?

这次在制作这个程序的过程,由于我以前基本上没有接触过VBS和HTML,所以比较困难,在学习你的程序中我发现了很多有意思的东西,而且通过不断的模拟和测试我发现以下几个东西很有用:>>%Temp%\Temp.vbs echo Wscript.Echo .IPATH.value其实不好用,那么我可以修改为>>%Temp%\Temp.vbs echo Wscript.Echo "SET IPATH="+.IPATH.value也就是说使用Wscript.Echo把变量返回给CMD时可以直接把CMD的语法和命令附加上去,这样在使用FOR语句获取变量时不用在分情况进行了,只需要使用for /f "delims=" %%i in ('"cscript //nologo %Temp%\Temp.vbs"') do ( CALL %%i)一句话就可以轻松搞定,我发现GOTO,ECHO 等命令都可以附加给Wscript.Echo,在制作HTML页面时给复选框,选项组等名同一个名字,然后使用FOR来循环检测非常方便有效.

另外,参考你的哪个程序,我发现是直接在内存中直接生成的HTML文件,如果是这样,那么使用FRAME或IFRAME在内存地址中调用(我查过帮助,说是可以通过相对地址连接或描点进行连接的),好象挺难的呀;还有就是你的哪个产生背景的DEBUG汇编程序很有意思,不知是什么原理.

[ Last edited by HUNRYBECKY on 2007-3-7 at 10:22 PM ]
作者: zh159     时间: 2007-3-7 22:50
那个>>%Temp%\Temp.vbs echo Wscript.Echo .IPATH.value我也是在后面此才学会用>>%Temp%\Temp.vbs echo Wscript.Echo "SET IPATH="+.IPATH.value,

列表文件直接生成一个“InStallList.htm”文件,在IFRAME中调用绝对地址就可以了(相对地址我试过找不到文件,只能用CMD生成绝对地址)


>>List.vbs echo .write "<iframe width=420 height=400 src='%cd%\InStallList.htm'></iframe>"
html中不区分路径的“/”“\”符号
作者: HUNRYBECKY     时间: 2007-3-7 23:25


  Quote:
Originally posted by zh159 at 2007-3-7 22:50:
那个>>%Temp%\Temp.vbs echo Wscript.Echo .IPATH.value我也是在后面此才学会用>>%Temp%\Temp.vbs echo Wscript.Echo "SET IPATH="+.IPATH.value,

列表文件直接生 ...

谢谢,我试验下.不过今天很忙.有结果在回复你.再次谢谢ZH兄.
作者: HUNRYBECKY     时间: 2007-3-8 09:55


  Quote:
Originally posted by zh159 at 2007-3-7 22:50:
那个>>%Temp%\Temp.vbs echo Wscript.Echo .IPATH.value我也是在后面此才学会用>>%Temp%\Temp.vbs echo Wscript.Echo "SET IPATH="+.IPATH.value,

列表文件直接生 ...

ZH兄,我今天晚上试验下,有问题,主要是两个方面,一是如何产生一个HTML的文件以便在IFRAME调用,我发现无法直接WRITE方法,因为这个直接写到当前IE窗体,而无法写入文件,我使用>d:\ok.htm  echo <body>,但是ECHO无法处理HTML中的><等符号,如果加引号,即>d:\ok.htm  echo "<body>"那么会在IE中产生很多"",很不好看,我使用Scripting.FileSystemObject方法虽然可以解决问题,但是装了杀毒软件的都是提示不安全的脚本,给杀掉。有没有好的方法?
二是我在通过VBS产生的IE窗体中在<ifame>调用的HTM总是空白的,不知道什么回事,我调用其他HTTP地址也是空的。但是我在其他HTML文件调用却是正常的,是不是通过VBS的 WRITE写到当前IE窗体中不能使用IFRAME?觉得好奇怪哟。

[ Last edited by HUNRYBECKY on 2007-3-8 at 10:11 AM ]
作者: zh159     时间: 2007-3-8 12:29
试了一下,VBS好像不支持iframe框架内的选择项目属性,这样的话只能做成单个html列表文件
作者: HUNRYBECKY     时间: 2007-3-9 02:58


  Quote:
Originally posted by zh159 at 2007-3-8 12:29:
试了一下,VBS好像不支持iframe框架内的选择项目属性,这样的话只能做成单个html列表文件

这样好麻烦呀.呵呵,第一个问题也比较麻烦.不知道能否解决<>特殊符号的问题。
作者: zh159     时间: 2007-3-9 05:13
如果是单个html文件,可以先写成VBS,这样就不用考虑<>符号的问题

<>符号用^<^>方式写入
作者: HUNRYBECKY     时间: 2007-3-9 08:05


  Quote:
Originally posted by zh159 at 2007-3-9 05:13:
如果是单个html文件,可以先写成VBS,这样就不用考虑<>符号的问题

<>符号用^<^>方式写入

为什么要加入^符号?是转义的吧,那有很多有。哈哈。工作量可大了。VBS好像只能直接写屏幕呀,怎么写单个文件呢?使用Scripting.FileSystemObject倒是可以,但是杀毒软件老是拦截呀,VBS有没有其他方法?谢谢ZH兄。

[ Last edited by HUNRYBECKY on 2007-3-9 at 08:09 AM ]
作者: everest79     时间: 2007-3-9 13:19

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,9) do (set menu%%i= )
:menu
echo ... %msg%
echo [%menu1%]  1.sw.exe               [%menu2%]  2.sw.exe
echo [%menu3%]  3.sw.exe               [%menu4%]  4.sw.exe
echo.
echo [i] installation   [a] check all    [q] quit
echo.
set /p xx="SYSTEM\installation command>"
set xx=%xx:~0,1%
if /i %xx%] == i] goto install
if /i %xx%] == a] (for /l %%i in (1,1,9) do set menu%%i=X)&&cls&&goto menu
if /i %xx%] == q] exit/b
echo %xx%|findstr /v [0-9]>nul&&cls&&set msg= "%xx%" input error!&&goto menu||set msg= &&if /i [!menu%xx%! == [x (set menu%xx%= &&cls&&goto menu) else (set menu%xx%=X&&cls&&goto menu)

:install
for /f "tokens=1,2 delims=menu=" %%i in ('set menu') do if /i "%j" == "x" (start /w !sw%%i!)
pause>nul
我写的菜单,嘿嘿
作者: HUNRYBECKY     时间: 2007-3-10 01:47


  Quote:
Originally posted by everest79 at 2007-3-9 13:19:
[code]
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,9) do (set menu%%i= )
:menu
echo ... %msg%
echo [%menu1%]  1.sw.exe               [%menu2%]  2.sw.exe
echo [%menu3%]  3.sw ...

这个与我的问题有关吗?看了半天也没有什么关系呀。
作者: everest79     时间: 2007-3-13 06:36
嘿嘿,html的方法太复杂了,我帮你想了个简单点的
作者: HUNRYBECKY     时间: 2007-3-13 09:26


  Quote:
Originally posted by everest79 at 2007-3-13 06:36:
嘿嘿,html的方法太复杂了,我帮你想了个简单点的

只要认真去研究,也不是很复杂,我原来也是CMD版的,可是没有什么界面,看到ZH159兄的那个谁说批处理界面不漂亮后也就想跟着学学,所以该该HTML版,最后还是把两个版本结合起来。