Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: [Batch] Extracting targets from shortcuts Links  (Read 4040 times)

0 Members and 1 Guest are viewing this topic.

Hackoo

    Topic Starter


    Hopeful
  • Thanked: 42
  • Experience: Expert
  • OS: Windows 10
[Batch] Extracting targets from shortcuts Links
« on: February 08, 2017, 12:13:31 AM »
Hi  ;)
I have read this topic ==> How to read target of .lnk file with command line
So; i want to share my solution in new topic instead of digging this later
Extract_Target_Link.bat
Code: [Select]
@echo off
Title Extracting targets files from links by Hackoo 2017
Mode con cols=50 lines=3 & color 9E
Set "Log=%~dp0TARGET_LINK_PATHS.txt"
If exist "%Log%" Del "%Log%"
Set "Folders=%UserProfile%\Desktop %Public%\Desktop %AllUsersprofile%"
For %%F in (%Folders%) Do (
Cls
Echo *****************************************************************
Echo "%%F"
(echo; & echo        Scanning "%%F" ...)>CON
Echo *****************************************************************
Echo(
For /f "delims=" %%L in ('Dir /b /s "%%F\*.lnk"') do (
echo "%%L" & Call:ExtractTarget "%%L"
echo  --------------------------------------------------------
)
)>>"%Log%"
Start "" "%Log%"
Exit
::*************************************************************************
:ExtractTarget <Link>
(
echo set Ws = CreateObject("WScript.Shell"^)
echo set Lnk = Ws.Createshortcut(WScript.Arguments(0^)^)
echo WScript.echo Chr(34^) ^& Lnk.TargetPath ^& Chr(34^)
)>"%Tmp%\Tmp.vbs"
cscript //nologo "%Tmp%\Tmp.vbs" "%~1"
Del "%Tmp%\Tmp.vbs"
Exit /b
::*************************************************************************

Hackoo

    Topic Starter


    Hopeful
  • Thanked: 42
  • Experience: Expert
  • OS: Windows 10
Re: [Batch] Extracting targets from shortcuts (*.url) and (*.lnk)
« Reply #1 on: February 08, 2017, 05:19:28 AM »
Hi  :)
This the updated version : I added the *.url extension to be scanned too  ;)  ;D
Code: [Select]
@echo off
Title Extracting target from shortcut (*.url) and (*.lnk) by Hackoo 2017
Mode con cols=62 lines=3 & color 9E
Set "Log=%~dp0TARGET_LINK_PATHS.txt"
Set "Links=url lnk"
If exist "%Log%" Del "%Log%"
Set "Folders=%UserProfile%\Desktop %Public%\Desktop %AllUsersprofile%"
For %%i in (%Links%) Do (
For %%F in (%Folders%) Do (
Cls
Echo *****************************************************************
Echo "%%F" for "*.%%i" Links
(echo. & echo     Scanning "%%F" for "*.%%i" Links ...)>CON
Echo *****************************************************************
Echo;
For /f "delims=" %%L in ('Dir /b /s "%%F\*.%%i"') do (
echo "%%L" & Call:ExtractTarget "%%L"
echo  --------------------------------------------------------
)
)
)>>"%Log%"
Start "" "%Log%"
Exit
::*************************************************************************
:ExtractTarget <Link>
(
echo set Ws = CreateObject("WScript.Shell"^)
echo set Lnk = Ws.Createshortcut(WScript.Arguments(0^)^)
echo WScript.echo Chr(34^) ^& Lnk.TargetPath ^& Chr(34^)
)>"%Tmp%\Tmp.vbs"
cscript //nologo "%Tmp%\Tmp.vbs" "%~1"
Del "%Tmp%\Tmp.vbs"
Exit /b
::*************************************************************************

Salmon Trout

  • Guest
Re: [Batch] Extracting targets from shortcuts Links
« Reply #2 on: February 08, 2017, 12:54:10 PM »
Why does it write the same temp vbs file every time it needs to process a shortcut, and delete it again?

Hackoo

    Topic Starter


    Hopeful
  • Thanked: 42
  • Experience: Expert
  • OS: Windows 10
Re: [Batch] Extracting targets from shortcuts Links
« Reply #3 on: February 09, 2017, 03:44:45 AM »
Why does it write the same temp vbs file every time it needs to process a shortcut, and delete it again?
Thank you for your remark ;) and i changed it to this code :
Code: [Select]
@echo off
Title Extracting target from shortcut (*.url) and (*.lnk) by Hackoo 2017
Mode con cols=62 lines=3 & color 9E
Set "Log=%~dp0TARGET_LINK_PATHS.txt"
Set "TmpVbs=%Tmp%\%~n0.vbs"
Set "Links=url lnk"
If exist "%Log%" Del "%Log%"
Set "Folders=%UserProfile%\Desktop %Public%\Desktop %AllUsersprofile%"
For %%i in (%Links%) Do (
For %%F in (%Folders%) Do (
Cls
Echo *****************************************************************
Echo "%%F" for "*.%%i" Links
(echo. & echo     Scanning "%%F" for "*.%%i" Links ...)>CON
Echo *****************************************************************
Echo;
For /f "delims=" %%L in ('Dir /b /s "%%F\*.%%i"') do (
echo "%%L" & Call:ExtractTarget "%%L"
echo  --------------------------------------------------------
)
)
)>>"%Log%"
Start "" "%Log%"
If Exist "%Tmpvbs%" Del "%Tmpvbs%"
Exit
::*************************************************************************
:ExtractTarget <Link>
(
echo set Ws = CreateObject("WScript.Shell"^)
echo set Lnk = Ws.Createshortcut(WScript.Arguments(0^)^)
echo WScript.echo Chr(34^) ^& Lnk.TargetPath ^& Chr(34^)
)>"%Tmpvbs%"
cscript //nologo "%Tmpvbs%" "%~1"
Exit /b
::*************************************************************************

Salmon Trout

  • Guest
Re: [Batch] Extracting targets from shortcuts Links
« Reply #4 on: February 09, 2017, 03:50:36 AM »
It still does it.

Hackoo

    Topic Starter


    Hopeful
  • Thanked: 42
  • Experience: Expert
  • OS: Windows 10
Re: [Batch] Extracting targets from shortcuts Links
« Reply #5 on: February 09, 2017, 06:40:51 AM »
It still does it.
Ok :'(
Can you provide me a better solution with code to optimize this later
Thank you !

Salmon Trout

  • Guest
Re: [Batch] Extracting targets from shortcuts Links
« Reply #6 on: February 09, 2017, 07:36:00 AM »
You wrote that code, didn't you? Just move the part that creates the vbscript out of the subroutine and put it at the start of the script.

Hackoo

    Topic Starter


    Hopeful
  • Thanked: 42
  • Experience: Expert
  • OS: Windows 10
Re: [Batch] Extracting targets from shortcuts Links
« Reply #7 on: February 09, 2017, 09:05:25 AM »
Ok  ;) I think this is better  ;D
Code: [Select]
@echo off
Title Extracting target from shortcut (*.url) and (*.lnk) by Hackoo 2017
Mode con cols=62 lines=3 & color 9E
Set "Log=%~dp0TARGET_LINK_PATHS.txt"
Set "TmpVbs=%Tmp%\%~n0.vbs"
::************************************************************************
(
echo set Ws = CreateObject("WScript.Shell"^)
echo set Lnk = Ws.Createshortcut(WScript.Arguments(0^)^)
echo WScript.echo Chr(34^) ^& Lnk.TargetPath ^& Chr(34^)
)>"%Tmpvbs%"
::************************************************************************
Set "Links=url lnk"
Set "Folders=%UserProfile%\Desktop %Public%\Desktop %AllUsersprofile%"
For %%i in (%Links%) Do (
For %%F in (%Folders%) Do (
Cls
Echo *****************************************************************
Echo "%%F" for "*.%%i" Links
(echo. & echo     Scanning "%%F" for "*.%%i" Links ...)>CON
Echo *****************************************************************
Echo;
For /f "delims=" %%L in ('Dir /b /s "%%F\*.%%i"') do (
echo "%%L" & Call:ExtractTarget "%%L"
echo  --------------------------------------------------------
)
)
)>>"%Log%"
Start "" "%Log%"
If Exist "%Tmpvbs%" Del "%Tmpvbs%"
Exit
::*************************************************************************
:ExtractTarget <Link>
cscript //nologo "%Tmpvbs%" "%~1"
Exit /b
::*************************************************************************