IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Trouver un .exe


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut Trouver un .exe
    Bonjour,

    Alors voila j'ai créé ce batch qui me permet de lancer firefox sans connaître son emplacement. (Chemin / Répertoire) où il se trouve.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @ECHO OFF
    CLS
    
    FOR /R C:\ %%a IN (firefox*.exe) DO START "" "%%~a"
    Comme vous le voyez je spécifie le disque de départ C:\

    Je voudrais optimiser mon script de façon à ne même pas connaître le disque dur ou se trouve le ".exe". En effet firefox pourrait très bien être installé sur D:\ ou autre...

    Y aurait-il une commande qui liste les disques durs d'une machine ?
    (Mais la recherche sur tous les disques risque d'être longue...)
    ou
    Une un façon plus simple de faire? Je suis ouvert à toutes vos idées pour optimiser mon code !


    Merci d'avance,

    Sokai

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Voilà le source d'un batch, par exemple nommé "FindExe.bat" :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Parcours de tous les disques du système, utilisation du programme le plus récent, mise en cache du résultat et exécution ultérieure quasi-instantanée une fois la recherche initiale faite.

    Ça suffira, comme amélioration ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Wooooaaaaaaou

    Des fois, quand on demande une pierre on nous apporte une montagne !
    (Proverbe de moi ^^v)

    Haha je plaisante, Merci Mac_Lak j'ai trouvé ce qu'il me fallait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo list volume ^| diskpart
    et
    Si jamais quelqu'un à une solution encore plus simple (que la mienne bien sur ) ne vous gênez pas... balancez !

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par sokai Voir le message
    Si jamais quelqu'un à une solution encore plus simple (que la mienne bien sur ) ne vous gênez pas... balancez !
    Ben le copier/coller du code de mon précédent message, ça devrait faire très exactement ce que tu cherches... OK, le premier appel est long (forcément...), mais le second est instantané.

    Tu peux même améliorer encore en ajoutant la gestion de switchs pour forcer un scan et/ou supprimer un raccourci.

  5. #5
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    Salut,

    Plutôt que d'effectuer un balayage du disque, il aurait été plus judicieux de passer par la BDR. De la sorte, le résultat serait immédiat.

    Aussi, dans une autre approche, si Firefox est spécifié comme navigateur par défaut, un simple «start» sur n'importe quel lien peut faire l'affaire.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Ouai t'as raison maxim_um mais des fois la clé de registre diffère selon les versions... Je voulais faire quelque chose qui marche quelque soit la version, et c'est fait
    Thx again !

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par maxim_um Voir le message
    Plutôt que d'effectuer un balayage du disque, il aurait été plus judicieux de passer par la BDR. De la sorte, le résultat serait immédiat.
    Si le logiciel possède une entrée dans la BDR... Dans le cas de Firefox, oui, c'est possible par exemple. Mais pour d'autres logiciels, cela peut être impossible à faire.
    Par exemple, chez moi, Dependancy Walker ou Process Explorer n'ont aucune entrée en BDR, vu qu'ils n'ont pas d'installateur !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossible de trouver javadoc.exe
    Par pierrot2908 dans le forum Général Java
    Réponses: 5
    Dernier message: 10/10/2013, 13h57
  2. Réponses: 1
    Dernier message: 10/01/2013, 11h36
  3. ou trouver gacutil.exe
    Par samworkflow dans le forum Développement Sharepoint
    Réponses: 6
    Dernier message: 25/02/2010, 13h44
  4. ou trouver gacutil.exe
    Par samworkflow dans le forum SharePoint
    Réponses: 4
    Dernier message: 08/09/2009, 11h21
  5. Trouver le dernier offset de son exe delphi
    Par Coussati dans le forum Delphi
    Réponses: 5
    Dernier message: 12/06/2006, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo