2016-07-25 30 views
0

Ich versuche, Verknüpfung Erstellung zu automatisieren, aber habe keine Ahnung, wie man Dateiname aus Argument. Code ausgeführt als:wie Argument in VB Script zu manipulieren?

cscript shortcut.vbs "c: \ Ordner \ 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 

es möglich ist, in der folgenden Zeile Benutzer angegebene Ordner zu verbinden und automatisch generierten Dateinamen von Argumente mit. LNK Erweiterung

sLinkFile = "c:\myfolder\myshortcut.lnk" 

etwas wie folgt aus:

sLinkFile = "c:\myfolder\" + filenamefromargument(e.g targetfile) + ".lnk" 

thx im Voraus :)

+0

'sLinkFile = "c: \ myfolder \" & objArgs (0) & ".lnk"'. Verwenden Sie nicht Plus, es funktioniert nur für die Kompatibilität mit älteren Grundlagen und wenn beide Zeichenfolgen Zahlen enthalten, werden sie hinzugefügt, nicht verkettet. –

+0

lol. ich wollte es nicht wirklich verwenden :) es war nur eine "künstlerische" Ansicht, wie es gehen sollte –

+1

Für echte Programmierung Effizienz verwenden 'strFile' statt ObjArgs (0). 'strfile' ist eine Variable, daher ist es einfach für die CPU, auf ihre Speicheradresse im Stapel zu verweisen. 'objArgs (0)' bedeutet 'objArgs.item (0)' was ein Funktionsaufruf über COM ist. Daher wird ein neuer Stapel erstellt, die Rücksprungadresse, Parameter und lokale Variablen (zu "item" -Methode) werden auf den Stapel gelegt, dann wird der Code ausgeführt. Dann wird alles wieder rückgängig gemacht, wobei der alte Stapelrahmen der aktuelle bleibt. Das ist viel langsamer. Der Principal wenn man eine Eigenschaft mehr als einmal benutzt, klebt eine Variable ein. –

Antwort

0

@Noodles erster Vorschlag wird funktionieren - und sein zweiter Vorschlag bedeutet nur, dass Sie strFile = objArgs(0) zuweisen sollten, bevor Sie es verwenden.

Du verwechselst nur jeder von Ihrem ‚Pseudo-Beispiele‘
Sie geben erste "c:\folder\targetfile.ext" als Argument
dann sLinkFile = "c:\myfolder\myshortcut.lnk", wo ich glaube, Sie sLinkFile = "c:\myfolder\myshortcut.ext"

gemeint Das zweite Stück, das Sie brauchen, um Filesystem Methoden zu suchen ist, extrahieren Sie den Ordner und Basisnamen - dann hängen Sie Ihre Erweiterung

Etwas wie:

Achtern erstrFile= objArgs(0)

diesen Code eingeben:

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