【发布时间】:2016-07-25 01:32:23
【问题描述】:
我正在尝试自动创建快捷方式,但不知道如何从参数中获取文件名。代码运行为:
cscript 快捷方式.vbs "c:\folder\targetfile.ext"
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
Set objFile = objFS.OpenTextFile(strFile)
Set objFile = objFS.GetFile(strFile)
WScript.Echo objFile.Path
Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "c:\myfolder\myshortcut.lnk"
Set oLink = oWS.CreateShortcut(sLinkFile)
oLink.TargetPath = objFile.Path
oLink.Save
是否可以在以下行中将用户指定的文件夹和从参数自动生成的文件名与 .lnk 扩展名结合起来
sLinkFile = "c:\myfolder\myshortcut.lnk"
到这样的事情:
sLinkFile = "c:\myfolder\" + filenamefromargument(e.g targetfile) + ".lnk"
提前谢谢 :)
【问题讨论】:
-
sLinkFile = "c:\myfolder\" & objArgs(0) & ".lnk"。不要使用加号,它只适用于与旧的基础兼容,如果两个字符串都包含数字,它们将被添加而不是连接。 -
哈哈。我不打算真正使用它:) 这只是一个“艺术”的观点应该如何发展
-
为了真正的编程效率,使用
strFile而不是objArgs(0)。strfile是一个变量,因此 CPU 很容易通过它在堆栈中的内存地址来引用它。objArgs(0)表示objArgs.item(0),它是通过 COM 调用的函数。因此创建了一个新堆栈,将返回地址、参数和局部变量(对item方法)放入堆栈,然后运行代码。然后这一切都撤消了,将旧的堆栈框架保留为当前的堆栈框架。这要慢很多。主体如果多次使用一个属性,请插入一个变量。 -
不幸的是,您的两个解决方案都不起作用,无论是 sLinkFile = "c:\myfolder\" & objArgs(0) & ".lnk" 还是 sLinkFile = "c:\myfolder\" & strfile & “.lnk”。很抱歉让我很烦,但我对脚本和东西的了解为零,甚至在这里格式化评论:(
标签: vbscript arguments shortcut