2016-07-25 51 views
0

即時通訊嘗試自動創建快捷方式,但不知道如何從參數中獲取文件名。代碼運行爲:如何在VB腳本中操作參數?

CSCRIPT shortcut.vbs「C:\文件夾\ 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" 

THX提前:)

+0

'sLinkFile = 「C:\ MyFolder文件\」 &objArgs(0)& 「的.lnk」'。不要使用加號,它只適用於與較老的基礎知識的兼容性,如果兩個字符串都包含數字,則它們將被添加爲不連接。 – 2016-07-25 02:02:21

+0

哈哈。我並不打算真正使用它:)它只是一個「藝術」的觀點,它應該如何去掉 –

+1

爲了真正的編程效率,使用'strFile'而不是objArgs(0)。 'strfile'是一個變量,因此CPU很容易通過棧中的內存地址進行引用。 'objArgs(0)'表示'objArgs.item(0)',它是通過COM調用的函數。因此,創建一個新的堆棧,將返回地址,參數和局部變量(到'item'方法)放入堆棧,然後運行代碼。然後全部撤消,將舊的堆棧框架保留爲當前的一個。這太慢了。如果使用屬性不止一次,則委託人將保留一個變量。 – 2016-07-25 02:30:49

回答

0

@Noodles第一個建議將起作用 - 他的第二個建議只是意味着你應該在使用它之前指定strFile = objArgs(0)

你只是你的「僞例」混淆大家
首先指定"c:\folder\targetfile.ext"作爲參數
然後sLinkFile = "c:\myfolder\myshortcut.lnk",我認爲你的意思sLinkFile = "c:\myfolder\myshortcut.ext"

你需要第二件是看FileSystemObject的方法解壓文件夾和基本名稱 - 然後附加您的分機

喜歡的東西:

前前後後ERstrFile= objArgs(0)

插入此代碼:

With objFS  
    strLinkFile = .GetParentFolderName(strFile) & .GetBaseName(strFile) & ".lnk" 
End With