netmjwork 发表于 2016-6-5 21:28:12

请懂得 vbs、vbe 写法的朋友指点下相对路径怎么写才对?

本帖最后由 netmjwork 于 2016-6-5 22:53 编辑

目的:希望通过.vbe 代码通过判断相对目录"%WinDir%\121"是否存在来运行相应的文件。
但代码始终无法实现效果,请教大家如何解决这个问题?多谢!

.vbe好像无法识别相对目录"%WinDir%\121"的路径方式,只能输入"c:\windows\121"才可以正确运行。

如果F1为"%WinDir%\121"就无法识别(无论121目录是否存在,结果都是no.txt)
但F1为"c:\windows\121"就运行正确(121目录存在结果是yes,不存在是no)


代码如下:

   F1   = "%WinDir%\121"
FileYes = ".\yes.txt"
FileNo = ".\no.txt"

set Sh = CreateObject("Wscript.Shell")
Set Ws = CreateObject("Scripting.FileSystemObject")

If ws.FolderExists(F1) Then
Sh.Run FileYes,1
Else
Sh.Run FileNo,1
End If

dos时代菜鸟 发表于 2016-6-5 21:43:25

本帖最后由 dos时代菜鸟 于 2016-6-5 22:00 编辑

看 如下vbs 脚本:
set os=CreateObject("Wscript.shell")
set fs=CreateObject("Scripting.FileSystemObject")

'---以下7条用来显示 系统级别的临时缓存文件夹的位置
sys_temp=os.Environment("system")("temp")'---将系统级别的临时缓存文件夹名称赋值给 sys_temp 变量,内容可能含有 %%
abc=os.run("cmd.exe /c echo "&sys_temp&" >temp.txt",0,true) '---由于含有 %% 只能被 cmd 识别,所以通过cmd 把其转换为不带 %%的内容传递给文件
set file1=fs.OpenTextfile("temp.txt",1) '---只读方式打开文件 temp.txt
abc=file1.readline '---读取文件一行内容,并将其赋值给变量 abc
file1.close '---关闭文件
msgbox "系统system级别的临时缓存文件夹为:"&abc '显示变量内容
abc=fs.deletefile("temp.txt",true) '删除文件 temp.txt

'以下4条命令用于获取和显示 FileSystemObject 所能获取的3个 所谓特殊文件夹
path0=fs.getspecialfolder(0)
path1=fs.getSpecialFolder(1)
path2=fs.getSpecialFolder(2)
msgbox "Windows 文件夹:"&path0&chr(13)+ _
        "系统System 文件夹:"&path1&chr(13)+ _
        "系统用户临时缓存文件夹:"&path2

slore 发表于 2016-6-5 22:07:52

Set objShell=CreateObject("WScript.Shell")
strF1=objShell.ExpandEnvironmentStrings("%WinDir%\121")
WSH.echo strF1

netmjwork 发表于 2016-6-5 22:36:40

本帖最后由 netmjwork 于 2016-6-5 22:53 编辑

dos时代菜鸟 发表于 2016-6-5 21:43
看 如下vbs 脚本:

多谢提供思路,已经解决……

netmjwork 发表于 2016-6-5 22:41:54

slore 发表于 2016-6-5 22:07
Set objShell=CreateObject("WScript.Shell")
strF1=objShell.ExpandEnvironmentStrings("%WinDir%\121")
...

非常感谢,您的代码非常精简,很管用!
页: [1]
查看完整版本: 请懂得 vbs、vbe 写法的朋友指点下相对路径怎么写才对?