[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 请问如何将下列vbs文件转换到批处理中且只写在一行内

本帖最后由 447219071 于 2014-11-20 12:11 编辑

如题,主要想解决即使默认浏览器不是IE,下列的VBS文件都可以调用IE打开百度,但我想弄到批处理文件里并且只写在一行内
求高手教我,万分感激!
  1. set ws = createobject("wscript.shell")
  2. ws.run "iexplore http://www.baidu.com",1
复制代码
晕,有这么难吗?我自己合出来了,贴出来给需要的人,批处理代码如下
  1. echo set ws = createobject("wscript.shell"):ws.run "iexplore http://www.baidu.com",1 >a.vbs & a.vbs
复制代码

这个东西怎么看都像是给黑客准备的呢……

TOP

……谢谢。

TOP

TOP

回复 24# CrLf


    有流文件相关知识的介绍吗?想详细了解一下。

TOP

回复 23# amwfjhh


    问题是流文件是真实存在的,并非自动销毁,而且只适用于 ntfs

TOP

回复 22# CrLf


    第二个方案棒,这就相当于linux那个"-"号了。能代替具体文件,但又不生成。真是“众里寻她千百度,蓦然回首,那代码却在 回车 回帖处”……

TOP

本帖最后由 CrLf 于 2014-11-28 04:08 编辑

回复 21# amwfjhh


关于比较通用的 vbs 和 bat 混编,在“不生成新文件”的前提下,以前想了两种擦边的办法
1,临时改后缀名为 wsf,或者把宿主修改成可以认其他后缀名:http://bbs.bathome.net/viewthread.php?tid=29918
  1. :<!--
  2. @echo off
  3. (
  4.         move /y "%~0" "%~n0.wsf" >nul
  5.         for /f "delims=" %%a in ('cscript -nologo "%~n0.wsf"') do (
  6.                 echo 昨天是 %%a
  7.         )
  8.         ren "%~n0.wsf" "%~nx0" >nul
  9. )
  10. pause&exit/b
  11. -->
  12. <package><job id="vbs"><script language="vbscript">
  13.         WScript.Echo Now-1
  14. </script></job></package>
复制代码
2、输出到流文件
  1. @echo off
  2. more +7 "%~0">"%~0:haha.vbs"
  3. for /f "delims=" %%a in ('cscript -nologo "%~0:haha.vbs"') do (
  4. echo 昨天是 %%a
  5. )
  6. pause&exit/b
  7. WScript.Echo Now-1
复制代码
但都不理想,这么折腾还不如分成两个文件

TOP

回复 20# CrLf


    感觉别扭哇?我也觉得。之前没用过microsoft的js,一直是在网页中用的javascript,看到论坛的批处理与jscrip混排后惊奇之心无以复加,原本最习惯的是vbs,可惜vbs不支持多行注释,只好边百度怎样用相应的jscript语句来达到vbs的同等功能。奇怪的是最初我想的是用new ActiveXObject的方式貌似失败,才找了WSH.createObject这么个怪异的语句……结果是可以用new activexobject的……

TOP

回复 19# amwfjhh


总觉得 js 里用 WSH.CreateObject 有一种奇异的感觉

我比较喜欢 mshta 的写法:
  1. mshta "javascript:(new ActiveXObject('wscript.shell')).run('iexplore http://www.baidu.com');close()"
复制代码

TOP

后来又看到一些帖子,不生成临时文件一行批处理也能达到楼主的要求了。
  1. @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);
复制代码

TOP

楼层跑偏了,讨论非临时文件的解决办法去了……

TOP

回复 12# CrLf


    我自己合成答案了,我陈述得不清楚 ?

TOP

回复 12# CrLf


    这里的"-"理解为“指向具体内容的句柄”可能更贴切点。

TOP

回复 14# DAIC


    这只是为了说明一下-在linux中的应用,事实上,这条语句也可以用其它方式达到。这是纯为了演示而凑起来的。-作为替代输入输出,在网页抓取分析时用得比较多。

TOP

返回列表