| 1. |
Solve : [Batch] Extracting targets from shortcuts Links? |
|
Answer» Hi 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 ::*************************************************************************It still does it. Quote from: Salmon Trout on February 09, 2017, 03:50:36 AM It still does it.Ok Can you provide me a better solution with code to optimize this later Thank you !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.Ok I think this is better 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 ::************************************************************************* |
|