标题: [文件操作] 请问如何将下列vbs文件转换到批处理中且只写在一行内 [打印本页]
作者: 447219071 时间: 2014-11-19 22:48 标题: 请问如何将下列vbs文件转换到批处理中且只写在一行内
本帖最后由 447219071 于 2014-11-20 12:11 编辑
如题,主要想解决即使默认浏览器不是IE,下列的VBS文件都可以调用IE打开百度,但我想弄到批处理文件里并且只写在一行内
求高手教我,万分感激!- set ws = createobject("wscript.shell")
- ws.run "iexplore http://www.baidu.com",1
复制代码
晕,有这么难吗?我自己合出来了,贴出来给需要的人,批处理代码如下- echo set ws = createobject("wscript.shell"):ws.run "iexplore http://www.baidu.com",1 >a.vbs & a.vbs
复制代码
作者: amwfjhh 时间: 2014-11-19 22:55
可以参照今天的贴子里有个批处理与Js混排的做法,也可以弄成与vbs混排,原理类似
作者: 447219071 时间: 2014-11-19 22:59
回复 2# amwfjhh
在哪,网站的右上角谷歌搜索功能不能用,因我是国内用户
作者: amwfjhh 时间: 2014-11-19 23:02
- '&cls&@echo off&cscript -nologo -e:vbscript %~fs0&pause
- set ws = createobject("wscript.shell"):ws.run "iexplore http://www.baidu.com",1
复制代码
作者: apang 时间: 2014-11-19 23:36
目测楼主也是个奇才
作者: amwfjhh 时间: 2014-11-19 23:53
我在查有没有法让需要接收文件名的命令接收一个临时内存里面的数据,比如标准输出什么的,像linux下就可以直接用-来接收输入输出并充当临时文件的角色,不知道windows下有没有类似方法实现,请问apang兄有没有点提示呢
作者: CrLf 时间: 2014-11-20 00:11
回复 6# amwfjhh
没看懂,跪求解释...是 bash 吗?
作者: amwfjhh 时间: 2014-11-20 00:16
嗯,类似那样的用法,在bash中-的作用有很多,其中一种就是充当临时文件而不用生成临时文件,但又能作为文件参数传给需要的程序。
作者: CrLf 时间: 2014-11-20 00:29
回复 8# amwfjhh
不太明白,搜索无果,可否劳烦兄台举几个实例指点指点?
作者: amwfjhh 时间: 2014-11-20 00:48
明天上电脑找下例子,linux下的哈
作者: amwfjhh 时间: 2014-11-20 01:06
tar -cvf – /var/log | zip -r log.zip -
就像这样,tar与zip都需要接收一个文件名作为输入输出,但这个文件名是这两个命令共用且不需要存在的,就用-来过渡,它不生成实际文件。
作者: CrLf 时间: 2014-11-20 02:20
本帖最后由 CrLf 于 2014-11-20 02:23 编辑
回复 11# amwfjhh
卧槽,还可以这样,cmd 好像没有这么高档的功能
如果要说不生成“新文件”的话,ntfs 数据流勉强能算一种办法吧...不过大部分命令不支持直接处理流文件
作者: DAIC 时间: 2014-11-20 08:31
回复 3# 447219071
右上角有两个搜索按钮,试试另外那个。
作者: DAIC 时间: 2014-11-20 08:33
回复 11# amwfjhh
这个命令里面 -r 参数是多余的吧
作者: amwfjhh 时间: 2014-11-20 09:22
回复 14# DAIC
这只是为了说明一下-在linux中的应用,事实上,这条语句也可以用其它方式达到。这是纯为了演示而凑起来的。-作为替代输入输出,在网页抓取分析时用得比较多。
作者: amwfjhh 时间: 2014-11-20 09:23
回复 12# CrLf
这里的"-"理解为“指向具体内容的句柄”可能更贴切点。
作者: 447219071 时间: 2014-11-20 12:16
回复 12# CrLf
我自己合成答案了,我陈述得不清楚 ?
作者: amwfjhh 时间: 2014-11-20 17:31
楼层跑偏了,讨论非临时文件的解决办法去了……
作者: amwfjhh 时间: 2014-11-26 23:33
后来又看到一些帖子,不生成临时文件一行批处理也能达到楼主的要求了。- @if (0)==(0) echo off&cscript -nologo -e:jscript %~fs0&pause&goto :EOF @end;var ws=WSH.createobject("wscript.shell");ws.run("iexplore http://www.baidu.com",1);
复制代码
作者: CrLf 时间: 2014-11-26 23:48
回复 19# amwfjhh
总觉得 js 里用 WSH.CreateObject 有一种奇异的感觉
我比较喜欢 mshta 的写法:- mshta "javascript:(new ActiveXObject('wscript.shell')).run('iexplore http://www.baidu.com');close()"
复制代码
作者: amwfjhh 时间: 2014-11-27 22:51
回复 20# CrLf
感觉别扭哇?我也觉得。之前没用过microsoft的js,一直是在网页中用的javascript,看到论坛的批处理与jscrip混排后惊奇之心无以复加,原本最习惯的是vbs,可惜vbs不支持多行注释,只好边百度怎样用相应的jscript语句来达到vbs的同等功能。奇怪的是最初我想的是用new ActiveXObject的方式貌似失败,才找了WSH.createObject这么个怪异的语句……结果是可以用new activexobject的……
作者: CrLf 时间: 2014-11-28 00:53
本帖最后由 CrLf 于 2014-11-28 04:08 编辑
回复 21# amwfjhh
关于比较通用的 vbs 和 bat 混编,在“不生成新文件”的前提下,以前想了两种擦边的办法
1,临时改后缀名为 wsf,或者把宿主修改成可以认其他后缀名:http://bbs.bathome.net/viewthread.php?tid=29918- :<!--
- @echo off
- (
- move /y "%~0" "%~n0.wsf" >nul
- for /f "delims=" %%a in ('cscript -nologo "%~n0.wsf"') do (
- echo 昨天是 %%a
- )
- ren "%~n0.wsf" "%~nx0" >nul
- )
- pause&exit/b
- -->
-
- <package><job id="vbs"><script language="vbscript">
- WScript.Echo Now-1
- </script></job></package>
复制代码
2、输出到流文件- @echo off
- more +7 "%~0">"%~0:haha.vbs"
- for /f "delims=" %%a in ('cscript -nologo "%~0:haha.vbs"') do (
- echo 昨天是 %%a
- )
- pause&exit/b
-
- WScript.Echo Now-1
复制代码
但都不理想,这么折腾还不如分成两个文件
作者: amwfjhh 时间: 2014-11-28 09:36
回复 22# CrLf
第二个方案棒,这就相当于linux那个"-"号了。能代替具体文件,但又不生成。真是“众里寻她千百度,蓦然回首,那代码却在 回车 回帖处”……
作者: CrLf 时间: 2014-11-28 11:24
回复 23# amwfjhh
问题是流文件是真实存在的,并非自动销毁,而且只适用于 ntfs
作者: amwfjhh 时间: 2014-11-28 12:34
回复 24# CrLf
有流文件相关知识的介绍吗?想详细了解一下。
作者: CrLf 时间: 2014-11-28 12:48
回复 25# amwfjhh
http://baike.baidu.com/view/3619593.htm?fr=aladdin
http://bbs.bathome.net/viewthread.php?tid=10605
http://bbs.bathome.net/thread-10653-1-1.html
http://bbs.bathome.net/viewthread.php?tid=28770
作者: amwfjhh 时间: 2014-11-28 13:04
……谢谢。
作者: amwfjhh 时间: 2014-11-28 13:14
这个东西怎么看都像是给黑客准备的呢……
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |