1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| @echo off
setlocal enableextensions
setlocal enabledelayedexpansion
if "%1"=="" goto :help
REM On définit un raccourci, basé sur le nom du programme, dans le dossier de l'utilisateur.
set shortcutfile="%USERPROFILE%\%1.location"
REM Si le "raccourci" n'existe pas, on scanne les drives.
if not exist %shortcutfile% goto :search
:launch
REM Analyse du raccouci : son contenu est le chemin absolu du programme.
for /F "tokens=*" %%I in ('type %shortcutfile%') do (
REM Problème : lien invalide => on cherche.
if not exist %%I goto :search
REM Sinon, on exécute.
start "Shortcut for ... %1" %%I
REM Inutile de continuer, seul le premier nous intéresse.
goto :eof
)
goto :eof
:search
REM Fichier temporaire de recherche, suppression des fichiers inutiles.
set ffile="%TEMP%\%1.tmp"
type NUL > %ffile%
del /q %shortcutfile% > NUL 2>&1
REM On parcourt l'intégralité des volumes présents sur la machine via "diskpart".
for /F "tokens=3" %%I in ('echo list volume ^| diskpart ^| find /i "partition"') do (
echo Analysing drive %%I^:\...
pushd %%I:\
REM Pour chaque partition, on scanne l'exécutable désiré.
for /R %%F in (%1.exe) do (
if exist %%F (
REM Si l'on trouve, on mémorise dans le fichier temporaire.
echo Found : %%F
set fdate=%%~tF
REM On écrit la date au format AAAAMMJJ afin de pouvoir trier en fonction de ce critère.
echo !fdate:~6,4!!fdate:~3,2!!fdate:~0,2! %%F>> %ffile%
)
)
popd
)
echo.
REM On trie (via "sort") les résultats de recherche, on prends le plus récent.
for /F "tokens=1,*" %%I in ('sort /r %ffile%') do (
REM Stockage du path complet dans le fichier de raccourci.
echo Executable "%%J" is the most recent one.
echo Will use it as shortcut.
echo "%%J" > %shortcutfile%
REM Inutile de continuer, seul le premier nous intéresse.
goto :break
)
:break
REM Moins un fichier temporaire...
del /q %ffile% > NUL 2>&1
goto :launch
REM Aide basique.
:help
echo Syntax: %0 ^<ExecutableName^>
echo Example: %0 firefox
echo.
goto :eof |
Partager