2017-06-18 1 views
1

特定のフォルダ(.lnkファイルである問題のファイル)にある一連のファイルをループしたい。そのループでは、ターゲットのファイルパス(すべてのフォルダ)を参照できるようにするにはどうすればよいですか。vbsでlnkファイルをループしてターゲットパスを取得

私はこのアイコンを変更するために見つけたスクリプトを使用することができます。そのアイコンは、同じ名前のcover.icoを持つターゲットフォルダ内のファイルです。私はアイコンを変更するために使用するつもりだスクリプトは、私はちょうどループにそれを取得する必要があり、私はそれをテストしたLNKアイコンの動作を変更するために

Set sh = CreateObject("WScript.Shell") 

lnkfile = "Path\To\LinkFile.lnk" 

Set lnk = sh.CreateShortcut(lnkfile) 

lnk.IconLocation = "Path\To\IconFile.ico" 

lnk.Save 

スクリプトです。 私が同じで実行されている.vbsファイルを持っていますので、私はまた、すでに今、この

Dim oFSO 
Set oFSO = CreateObject("Scripting.FileSystemObject") 
sScriptDir = oFSO.GetParentFolderName(WScript.ScriptFullName) 

を使用した.vbsカレントディレクトリのパスを取得するにはどのようにそれが.LNK自身のファイルパスをgetingの面倒を見ますパスを.lnkファイルとして指定します。ここで

+0

あなたの質問は? (ヒント: "私はこれをループで必要とする"というのは質問ではなく、プログラミングの課題です)何を試しましたか?どのようなエラーが出ますか?あなたの試みについてのあなたの推論は何ですか? – Tomalak

+0

フォルダ内のファイルをループするforループを作成する方法は? – user3491432

+2

これはかなり基本的な質問です。あなたはその答えを探してみましたか? * "VBSのフォルダ内のファイルをループする方法は?" *検索エンジンにとっては良い質問のようです。 – Tomalak

答えて

1

は、デスクトップ上にあるリンクから、すべてのターゲットパスを抽出することができますVBScriptの例です:

Option Explicit 
Dim Ws,objStartFolder,objFSO,objFolder,colFiles 
Dim objFile,strFilePath,Lnk 
Set Ws = CreateObject("Wscript.Shell") 
objStartFolder = Ws.SpecialFolders("Desktop") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFSO.GetFolder(objStartFolder) 
    Set colFiles = objFolder.Files 
    For Each objFile in colFiles 
    strFilePath = objFile.Path 
    If Ucase(objFSO.GetExtensionName(strFilePath)) = "LNK" Then 
     Call ExtractTargetPath(strFilePath) 
    End If 
    Next 
'************************************************************* 
Sub ExtractTargetPath(Lnk) 
set Ws = CreateObject("WScript.Shell") 
set Lnk = Ws.Createshortcut(Lnk) 
WScript.echo "Link="& DblQuote(Lnk) & vbcrlf &_ 
"Target="& DblQuote(Lnk.TargetPath) 
End Sub 
'************************************************************* 
Function DblQuote(Str) 
    DblQuote = Chr(34) & Str & Chr(34) 
End Function 
'************************************************************* 

編集:14 @ 19/06/2017上:00

また、このVBScriptを使用してバッチファイルでそれを行うことができます

Extract_Targets_Links.bat

@echo off 
Title Extract targets paths from links 
Set "LogFile=Links_Targets.txt" 
If exist "%LogFile%" Del "%LogFile%" 
Set "Desktop=%Userprofile%\Desktop" 
Set "All_Users=%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup" 
Set "Current_User=%UserProfile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" 
Set "VbsFile=%Tmp%\%~n0.vbs" 

> "%VbsFile%" (
    echo Option Explicit 
    echo Dim Ws,objStartFolder,objFSO,objFolder,colFiles 
    echo Dim objFile,strFilePath,Lnk 
    echo Set Ws = CreateObject("Wscript.Shell"^) 
    echo objStartFolder = WSH.Arguments(0^) 
    echo Set objFSO = CreateObject("Scripting.FileSystemObject"^) 
    echo Set objFolder = objFSO.GetFolder(objStartFolder^) 
    echo Set colFiles = objFolder.Files 
    echo For Each objFile in colFiles 
    echo strFilePath = objFile.Path 
    echo If Ucase(objFSO.GetExtensionName(strFilePath^)^) = "LNK" Then 
    echo  Call ExtractTargetPath(strFilePath^) 
    echo End If 
    echo Next 
    echo '************************************************************* 
    echo Sub ExtractTargetPath(Lnk^) 
    echo set Lnk = Ws.Createshortcut(Lnk^) 
    echo WScript.echo "Link="^& DblQuote(Lnk^) ^& vbcrlf ^&_ 
    echo "Target="^& DblQuote(Lnk.TargetPath^) ^& vbcrlf ^&_ 
    echo String(100,"*"^) 
    echo End Sub 
    echo '************************************************************* 
    echo Function DblQuote(Str^) 
    echo  DblQuote = Chr(34^) ^& Str ^& Chr(34^) 
    echo End Function 
    echo '************************************************************* 
) 

For %%A in ("%Desktop%" "%All_Users%" "%Current_User%") Do (
    Call :ExtractTarget "%%~A" "%LogFile%" 
) 

Start "" "%LogFile%" & Exit /b 
::****************************************************************************** 
:ExtractTarget <Folder> <LogFile> 
>> %2 (
    echo ===================================================================== 
    echo     Links and their targets on %1 
    echo ===================================================================== 
) 
For %%f in (%1) Do (
    CScript /nologo "%VbsFile%" "%%~f" >> %2 
) 
Exit /b 
::****************************************************************************** 
関連する問題