中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]批处理实现网页下载(260字节)
« [1] [2] »
作者:
标题: [原创]批处理实现网页下载(260字节) 上一主题 | 下一主题
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『楼 主』:  [原创]批处理实现网页下载(260字节)

1. 下载得到网页源代码
@echo off
<"%~f0" more +5 >tmp.vbs
cscript //NoLogo /e:vbscript tmp.vbs %1
del tmp.vbs
goto:eof
Set oDOM = WScript.GetObject(WScript.Arguments(0))
do until oDOM.readyState = "complete"
WScript.sleep 200
loop
WScript.echo oDOM.documentElement.outerHTML
2. 下载得到网页文本
@echo off
<"%~f0" more +5 >tmp.vbs
cscript //NoLogo /e:vbscript tmp.vbs %1
del tmp.vbs
goto:eof
Set oDOM = WScript.GetObject(WScript.Arguments(0))
do until oDOM.readyState = "complete"
WScript.sleep 200
loop
WScript.echo oDOM.documentElement.outerText


   此帖被 +13 点积分       点击查看详情   
评分人:【 redtek 分数: +2  时间:2006-11-9 21:46
评分人:【 scriptor 分数: +2  时间:2006-12-22 16:14
评分人:【 everest79 分数: +8  时间:2007-4-7 01:15
评分人:【 lfun 分数: +1  时间:2007-12-14 17:22





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'>"
2006-11-1 05:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 2 楼』:  

提示:
1. 该批处理的参数比较严格:网址前必须有 http:// 或 ftp:// ,否则出错。
例如,我保存第二个代码为: iGet.bat,然后我运行
iGet.bat ftp://www.dormforce.net 就可以得到一个FTP的内容,然后结合 for 就可以输出FTP的列表

2. 该批处理会直接把结果输出到屏幕,要保存到文件,请使用 > 或者 >> 重定向

3. 该批处理的好处是不需要任何组件(xmlhttp),能自动处理编码问题,缺点是:如果原网页有弹出广告的话,还是会弹出的。如果要完全后台安静下载,可以用经典的 iGet.vbs http://xxxxxx C:\down.htm
该 iGet.vbs 不能直接得到网页文本
Set xPost = CreateObject("Microsoft.XMLHTTP")
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Set sGet = CreateObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1)),2
[ Last edited by electronixtar on 2006-11-1 at 05:42 AM ]




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'>"
2006-11-1 05:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

赞啊~~~呵呵~

2006-11-1 05:28
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 4 楼』:  

我倒是有一个想法,像

  Quote:
@echo off
<"%~f0" more +5 >tmp.vbs
cscript //NoLogo /e:vbscript tmp.vbs %1
del tmp.vbs
goto:eof

这样的,每次我都要重复写,干脆联盟成立一个标准的可以拿来引用(include)的批处理头(header),然后每次大家的格式都统一点

如果有高人再写一个批处理的IDE,呵呵,就可以大大的简化批处理的书写了。

[ Last edited by electronixtar on 2006-11-1 at 05:32 AM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 plp626 分数: +2  时间:2008-1-8 23:13





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'>"
2006-11-1 05:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by electronixtar at 2006-11-1 05:30:
我倒是有一个想法,像

这样的,每次我都要重复写,干脆联盟成立一个标准的可以拿来引用(include)的批处理头(header),然后每次大家的格式都 ...

我在想:
set/p 1= 批处理名字:
set/p 2= 批处理中间内容:
echo .............

只是这样想想,不过最好是出个写的标准 ,那样更容易阅读的,不要一个个写的天书似的,例如开头先写
:: 思路:
:: 原理:
等等

   此帖被 +2 点积分    点击查看详情   
评分人:【 plp626 分数: +2  时间:2008-1-8 23:13


2006-11-1 05:36
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 6 楼』:  

Re electronixtar
可以在“新建”里指定模板文件。
比如将上述内容保存到D:\BAT\template.cmd
然后添加下面的注册表项。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.cmd\ShellNew]
"FileName"="D:\\BAT\\template.cmd"


   此帖被 +2 点积分     点击查看详情   
评分人:【 redtek 分数: +2  时间:2006-11-9 21:46




  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-11-1 06:42
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  

无奈何 兄高招啊!学习




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'>"
2006-11-9 11:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 8 楼』:  

期待中……



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-11-9 21:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 9 楼』:  zan 一个

不错

不过还是借用了vbs 等其他的方法,能不能只用dos命令的,而且不要ie的
纯粹在dos 的那个黑色界面下,那就更好了。

哈哈。。。
谁能写一个batch啊??

2006-12-22 16:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 10 楼』:  

骗人。用vbs的。o(∩_∩)o...哈哈。
不过也学习了。

2007-4-7 00:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 11 楼』:  

est失踪一段时间了哦

以下是我在网上D来的
if lcase(right(wscript.fullname,11))="wscript.exe" then
shell.run("cmd.exe /k echo off&cls&cscript //nologo "&chr(34)&wscript.scriptfullname&chr(34))
wscript.quit
end if


2007-4-7 01:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 12 楼』:  

看到楼主的贴我有点模糊的想法,是否我们一直追求的隐藏运行批处理也可以利用模版VBS来达成

2007-4-7 01:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
estar
中级用户





积分 346
发帖 103
注册 2004-4-6
状态 离线
『第 13 楼』:  

继续失踪

2007-4-7 05:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 14 楼』:  

老实说你是不是马甲

2007-4-7 07:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ygrzzz
初级用户





积分 62
发帖 24
注册 2008-9-17
状态 离线
『第 15 楼』:  

楼主把vbs代码搬进了批处理文件里,给vbscript脚本换了个外衣~~~
这外衣下面能不能再穿条批处理自己的裤子呢?
就是批处理完成一部分工作
遇到功能薄弱处再借助vbs来辅助一下,2者混编,比如
@echo off
IF  exist tmp.vbs (start notepad&del tmp.vbs&exit) ELSE goto scr
:scr
<"%~f0" more +6 >tmp.vbs
cscript //NoLogo /e:vbscript tmp.vbs %1
goto:eof
Set oDOM = WScript.GetObject(WScript.Arguments(0))
do until oDOM.readyState = "complete"
WScript.sleep 200
loop
WScript.echo oDOM.documentElement.outerText
程序的 实际起效流程是先vbs完成部分任务,接着批处理完成余下的任务
我是新手,不过杂7杂8的代码收集了一大堆有些vbs代码单一功能不错想借助一下,然后利用相对易懂的批处理做一些功能的衍变
这样的思路是不是可行啊

2008-9-26 22:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: