无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4201|回复: 5
打印 上一主题 下一主题

[已解决] VBS代码 “程序调用程序”如何解决?谢谢!

[复制链接]
跳转到指定楼层
1#
发表于 2016-6-7 22:32:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 netmjwork 于 2016-6-9 10:13 编辑



vbe怎么样来实现“程序1 带参数 运行文件2” 这个目的呢?

目的:win8以上提权运行批处理或其它程序

如下代码在xp下可以正常运行,但win8以上就需要权限
Set sh = WScript.CreateObject("WScript.Shell")  
sh.run  "%windir%\install_win8.cmd" ,1  ,true

sh.run  "elevate.exe -c  install_win8.cmd"  就可以实现程序调用程序了,由于该方式在win10下无效,还以为格式不对……

下面这句可以通过批处理的方式实现 start "elevate.exe -c " "install_win8.cmd"  

2#
发表于 2016-6-8 10:21:44 | 只看该作者
本帖最后由 pogua007 于 2016-6-8 10:26 编辑

第一个问题很简单哈,我没有遇到你说的问题,估计你设置的路径有问题,VBS可以创建一个不存在的目标的快捷方式,估计你路径写错了。
我根据你的代码小改一下,没有声明变量,也没有取消变量,如果你移植的话小心一点。

  1. set fso = CreateObject("Scripting.FileSystemObject")
  2. abc=fso.GetAbsolutePathName(".\123") ''获得你说的当前目录下的123目录
  3. Set WshShell = WScript.CreateObject("WScript.Shell")
  4. strDesktop = WshShell.SpecialFolders("Desktop")
  5. set oShellLink = WshShell.CreateShortcut(abc & "\程序11.lnk")
  6. oShellLink.TargetPath = strDesktop ''也可以把目标写到explorer,再加路径的参数
  7. oShellLink.WindowStyle = 1
  8. oShellLink.IconLocation = "shell32.dll,34"
  9. oShellLink.WorkingDirectory = abc
  10. oShellLink.Save
复制代码

回帖带附近可以多两分,所以贴上图。

第二问题没有太理解,你可以直接把参数写到目标里面哈。
我的一个命令行程序的调用
  1. Set wsBB = CreateObject("Wscript.Shell")
  2. ds_Per_X = 91
  3. bbExe =“C:\bbZero\blackbox.exe”
  4. wsBB.run bbExe & " -exec @BlackboxBar.widthPercent " & ds_Per_X
复制代码


这一句在cmd中的命令是,这样的格式足够你写参数了吧,有些比较古怪的程序参数必定要带”““,chr(34)是引号。
  1. C:\bbZero\blackbox.exe -exec @BlackboxBar.widthPercent 91
复制代码


你的命令应该直接写就可以了
  1. sh.run "elevate.exe -c install_win8.cmd"
复制代码

这样有问题吗?后面的1和true不是必须的。当然你要加也可以。
  1. sh.run "elevate.exe -c install_win8.cmd", 1,  true
复制代码

点评

多谢指点!对代码很生疏…… 还有个问题请教下您: 如下的批处理代码转换成.vbe下执行的代码是怎么样的?(因为批处理中无法调用.vbe文件,所以想直接转换成.vbe来使用) @echo off ver|find "10.0." >nul&&  详情 回复 发表于 2016-6-8 16:36
回复

使用道具 举报

3#
 楼主| 发表于 2016-6-8 16:36:35 | 只看该作者
本帖最后由 netmjwork 于 2016-6-8 16:50 编辑
pogua007 发表于 2016-6-8 10:21
第一个问题很简单哈,我没有遇到你说的问题,估计你设置的路径有问题,VBS可以创建一个不存在的目标的快捷 ...


多谢指点!对代码很生疏……
还有个问题请教下您:


说明下:我是 1.vbe调用 go.cmd,go.cmd调用另一个 win8.vbe,运行结果是提示“win8.vbe不是内部或外部命令,也不是可执行程序……”
(因为批处理中无法调用.vbe文件,所以想直接转换成.vbe来使用,将 go.cmd 判断系统的功能合并到1.vbe 中来使用)

如下的批处理代码就是 go.cmd 的内容 ,转换成.vbe下执行的代码是怎么样的?

@echo off
ver|find "10.0." >nul&&set "v=win10"
if exist "%systemroot%\syswow64" (set "w=x64") else (set "w=x32")
goto %v%%w% 2>nul||echo 未定义的系统&ping -n 2 0 >nul&exit

#这个无法调用……
:win10x32
win8.vbe

goto end
:win10x64
start "elevate -c" "install_win8.cmd"
goto end
:end
ping -n 2 0 >nul&exit

十分感谢!

问题一可能是系统有问题,很奇怪,重启后还是原来的代码可以执行;
问题二是因为elevate.exe在win10下失效了,所以我以为那样不能执行……
回复

使用道具 举报

4#
发表于 2016-6-8 19:20:15 | 只看该作者
批处理调用VBS用call命令或者cscript或者start都行,VBS获得版本号,这个板块就有相关帖子

点评

多谢指点! 原来是调用vbs需要用call或start命令,.exe不用…… 怪不得.exe不加参数就直接调用了……  详情 回复 发表于 2016-6-9 09:35
回复

使用道具 举报

5#
 楼主| 发表于 2016-6-9 09:35:17 | 只看该作者
pogua007 发表于 2016-6-8 19:20
批处理调用VBS用call命令或者cscript或者start都行,VBS获得版本号,这个板块就有相关帖子

多谢指点!
原来是调用vbs需要用call或start命令,.exe不用……
怪不得.exe不加参数就直接调用了……
回复

使用道具 举报

6#
发表于 2016-6-12 20:07:49 | 只看该作者
还以为楼主要干嘛,看起来好高深的样子

自动请求管理员权限

  1. @echo off
  2. rem 自动请求以管理员权限运行
  3. echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
  4. reg query HKU\S-1-5-20>nul 2>nul||cscript //b "%temp%\getadmin.vbs"&&del "%temp%\getadmin.vbs" /f /q>nul 2>nul&&exit /b

  5. rem 下面是批处理内容
复制代码


我不会VBS,这是从远景某个批处理里面提取的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-12 05:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表