2016-07-25 5 views
0

바로 가기 생성을 자동화하려하지만 인수에서 파일 이름을 가져 오는 방법을 모릅니다.VB 스크립트에서 인수를 조작하는 방법은 무엇입니까?

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 

는 사용자가 지정한 폴더를 결합하여 다음 줄에 수를하고 자동으로 인수에서 파일 이름을 생성 :

에서 cscript shortcut.vbs "\ 폴더 \ targetfile.ext C"코드로 실행됩니다. 이런 일에 LNK 확장

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

:

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

들으 사전에 :)

+0

'sLinkFile = "C : \ MyFolder에 \"및 objArgs (0) ".LNK"'. 더하기를 사용하지 마십시오. 이전 기본과의 호환성을 위해서만 작동하며 두 문자열에 숫자가 들어 있으면 연결되지 않고 추가됩니다. –

+0

권. 나는 그것을 실제로 사용하려고 의도하지 않았다 :) 그것은 단지 "예술적인"관점 일 것이다. –

+1

진정한 프로그래밍 효율성을 위해서는 objArgs (0)보다는 strFile을 사용하라. 'strfile'은 변수이므로 CPU가 스택의 메모리 주소를 참조하기 쉽습니다. 'objArgs (0)'는 COM을 통한 함수 호출 인 objArgs.item (0)을 의미합니다. 따라서 새로운 스택이 생성되고 반환 주소, 매개 변수 및 지역 변수 ('item' 메서드에 대한)가 스택에 놓여지고 코드가 실행됩니다. 그런 다음 이전 스택 프레임을 현재 스택 프레임으로 남겨 둡니다. 이것은 훨씬 느립니다. 주체는 속성을 두 번 이상 사용하는 경우 변수를 사용합니다. –

답변

0

@ Noodles의 첫 번째 제안이 적용됩니다. 두 번째 제안은 사용하기 전에 strFile = objArgs(0)을 할당해야한다는 것을 의미합니다.

당신은 당신의 '유사 사례'에 의해 모든 사람을 혼동하고
당신은 첫 번째 인수로 "c:\folder\targetfile.ext"를 지정 난 당신이 당신이 필요로 두 번째 조각에 FileSystemObject를 방법을보고 sLinkFile = "c:\myfolder\myshortcut.ext"

입니다 의미 생각
다음 sLinkFile = "c:\myfolder\myshortcut.lnk" 폴더 및 기본 이름을 추출 - 다음 추가 확장 등의

뭔가 :

선미를 ERstrFile= objArgs(0)

이 코드를 삽입 :

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