中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: WshShell.Run 路径问题? 上一主题 | 下一主题
peterdocter
中级用户




积分 379
发帖 95
注册 2003-7-17
状态 离线
『楼 主』:  WshShell.Run 路径问题?

set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("C:\Program Files\WinRAR\WinRAR.exe")
说不到指定的文件???
此文件存在的!
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%\notepad "
在系统目录中调用程序程序就没有错误提示!!!

2007-4-1 14:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

1、不要括号
2、VBS不使用%windir%此类变量(除非在批处理生成VBS),只要是存放在系统默认变量目录(CMD下set查看)的文件,直接写文件名就OK

2007-4-1 14:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
peterdocter
中级用户




积分 379
发帖 95
注册 2003-7-17
状态 离线
『第 3 楼』:  

WshShell.Run("C:\Program Files\WinRAR\WinRAR.exe")
vbs:对于函数调用有没有括号都可以,不要为了标准还是用括号。方便有时变成Js。这两们windos脚本语言几本差不多。不过要养成好的书写风格,还是建议函数调用加上括号。这也是Java以众多语言标准要求。
还有这个问题我已经解决了,主要是路径存在空格而产生间题。可用WshShell.Exec不过这个函数只要用于32程序。当然也要以这样解决WshShell.Run("C:\Progra~1\WinRAR\WinRAR.exe"),这个函数很怪好像回到dos状态有空格问题。vbs也是昨天才研究一下,如果有错请大家指正。其实JS与vbs基本一样,都可以实现相同的功能,不过由于JS存在本地权限调用问题,一样要扩展为*.hta这样就行了!一早忘记它的解译器名:)不过很多杀毒工具都很容易误杀此类文件:( 注意这样的JS是JScript是微软系统专用的就像VBscript一样不是JavaScript

2007-4-1 22:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 4 楼』:  

set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run createobject("scripting.filesystemobject").getfile("C:\Program Files\WinRAR\WinRAR.exe").ShortName

2007-4-1 22:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

给他加上引号不就完了,不用非要用短文件名

set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("""C:\Program Files\WinRAR\WinRAR.exe""")

   此帖被 +4 点积分      点击查看详情   
评分人:【 jmz573515 分数: +4  时间:2007-4-2 01:10


2007-4-2 00:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 6 楼』:  

学习了!

2007-4-2 01:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 7 楼』:  

5 楼的方法确实妙!!

2007-4-2 02:02
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 8 楼』:  

WshShell.Run相当于你把后面的字符串贴到windows的开始菜单里的运行对话框

所以可以支持%windir%之类的变量。

所以路径含空格的问题就存在了。所以给你的调用的字符串加上引号就可以解决。

2007-4-2 02:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
peterdocter
中级用户




积分 379
发帖 95
注册 2003-7-17
状态 离线
『第 9 楼』:  

C:\Program Files\UltraISO\UltraISO.exe G:\viursINx\ISO\3SwordPE.iso
这样问题如何决定了?

2007-4-9 09:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ywjco
初级用户





积分 31
发帖 17
注册 2007-10-31
状态 离线
『第 10 楼』:  

N年前的问题,现在续:
——————————————
给出两个例子:
"D:\Program Files\Mozilla Firefox\firefox.exe" -safe-mode
"D:\Program Files\360\360safe\SoftMgr\SoftManager.exe" /page=3 /start=menuunist

空格分隔后,程序参数照样使用。

***************************所以,应该是:
set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("""C:\Program Files\UltraISO\UltraISO.exe"""G:\viursINx\ISO\3SwordPE.iso)

2010-5-16 21:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 11 楼』:  挖坟?



  Quote:
Originally posted by ywjco at 2010-5-16 21:54:
N年前的问题,现在续:
——————————————
给出两个例子:
"D:\Program Files\Mozilla Firefox\firefox.exe" -safe-mode
"D:\Program Files\360\3 ...

你这样错误吧。



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-5-16 22:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: