Batch localisateur

Batcher_debutant -  
 Utilisateur anonyme -
Bonjour,

J'ai créé un fichier batch qui devrait localiser un fichier/dossier.
Malheureusement, il ne marche pas.
De plus, si vous savez, y aurait-il un moyen d'écrire le chemin à suivre pour retrouver ce fichier/dossier ?

Mon programme :

@echo off
@title Localisateur

echo As-tu le fichier ...?
set /p var= Votre ficher ?
for %var% in (C:, D:) if exist %var% echo trouve! else pas trouve!

:fin
pause

Je vous explique ma logique (malheureusement fausse ^^)
J'ai mis C: et D: car ce sont les deux disques durs que j'ai pour stocker tous mes dossiers et fichiers.
J'ai inséré une variable %var% tel que l'utilisateur nomme le fichier/dossier qu'il recherche.
La commande for recherche le dossier/fichier dans ces 2 disques durs ...
Si cela est possible, pouvez-vous me rajouter des lignes de programme tel qu'il m'indique le chemin à suivre pour retrouver le dossier/fichier ?

Merci d'avance,
A+

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    essayer ce script
    @echo off 
    setlocal enableDelayedExpansion 
    set fich= 
    echo As-tu le fichier ...? 
    set /p var= Votre ficher ? 
    for /f "delims=" %%a in ('dir /b/s C:\%var% D:\%var% 2^>NUL') do ( 
     set fich=%%a 
     echo !fich! 
    ) 
    if "!fich!" == "" echo pas trouve 
    :fin 
    pause  
    
    1
    1. Batcher_debutant
       
      En revanche, je ne comprend pas à quoi sert le enableDelayedExpansion... Pourrais-tu m'expliquer ? :) D'ailleurs, ton programme s'arrête après avoir saisi le nom du fichier, il ne se passe plus rien et l'invite de commande reste là comme si elle buguait ...
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      enableDelayedExpansion permet de modifier des variables dans une boucle for.
      tu lui a laissé le temps de chercher ?
      0
  2. dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   2 547
     
    je crois que tu devrais plutôt utiliser la commande dir pour faire des recherches dans tout le disque. Tu peux trouver des exemples sur le net.
    0
    1. Batcher_debutant
       
      Désolé, mais je ne suis pas un programmateur très calé, j'essaye juste de faire quelques programmes, et je ne comprends jamais rien quand les sites expliquent comment marchent la commande DIR (je ne sais même pas trop si j'ai compris FOR alors ...)

      Pourrais tu m'expliquer vite fait (et en français ;) ) L'utilité de cette commande (et éventuellement celle de FOR s'il te plaît ? :)
      Merci d'avance :)
      0
    2. dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   2 547
       
      La réponse est en fin de page :
      http://1100f.free.fr/Batchs/la_commande_dir.htm
      Si tu ne comprends pas la réponse donnée alors tu devrais lire la page entièrement.
      0
    3. Batcher_debutant
       
      Merci dsy73, j'ai regardé ton lien et il est assez bien expliqué (on y parle français au moins :D). Alors si j'ai bien compris, si je recherche le fichier Elephant.bat, il me suffirait de rentrer le code suivant :

      @echo off
      @title Localisateur

      echo As-tu ...?
      DIR (C:, D:) Elephant /A .bat -H -S -D

      :fin
      pause

      Peux-tu me confirmer que mes petites cellules grises ont compris ? ;D

      Merci à toi aussi dubcek, j'essaierai tes lignes de programmation :)
      0
    4. Batcher_debutant
       
      Juste, je fais comment pour changer de fichier dans l'invite de commande, parce que là je suis obligé de modifier le script ...
      0
    5. dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   2 547
       
      Non je ne crois pas que cela fonctionnera. Par contre le code de dubcek me semble correct. Pour le nom du fichier, utilise un paramètre en ligne de commande : <nom du batch.bat> <nom du fichier recherché>
      Tu auras le nom du fichier dans la variable %1 (%2 si tu mets un second paramètre)
      0
  3. Utilisateur anonyme
     
    Salut

    J'ai codé déjà un programme de recherche.

    Je vais te copier le CS, à toi de le modifier à ta guise.
    Sache qu'il fonctionne

    @echo off  
    title ATS  : Agent Tom Search  
    color 0E  
    SETLOCAL ENABLEDELAYEDEXPANSION  
    
    :debut  
    cls  
    echo.  
    echo          ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  
    echo          º   Bienvenue sur ATS, la recherche de fichiers sous DOS   º  
    echo          º          DerniSre mise ... jour fait le: 25/08/11          º  
    echo          ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ  
    echo.  
    echo Auteur du programme : XX  
    echo O-- me contacter : XX  
    echo.  
    echo /!\ Si besoin de renseignements, merci de m'envoyer un mail (cf mail ci-dessus)  
    echo.  
    echo Appuyez sur une touche pour lancer le programme  
    pause>nul  
    goto menu  
    
    :menu  
    cls  
    If exist "%homedrive%\ATS.txt" del /Q "%homedrive%\ATS.txt"  
    echo          ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  
    echo          º 1 Introduction                                  º  
    echo          º 2 Recherche                                     º  
    echo          º 3 Quitter                                       º  
    echo          ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ  
    echo.  
    set /p choix=Quelle action effectuer ?   
    if %choix%==1 goto debut  
    if %choix%==2 goto recherche  
    if %choix%==3 goto exit  
    goto Error  
    
    :recherche  
    cls  
    echo Programme de recherche lanc'...  
    echo.  
    echo Veuillez marquer la lettre du p'riph'rique  pour effectuer la recherche   
    echo exemple = C  
    set /p  L=  
    
    cls  
    echo Veuillez indiquer ce que vous recherchez   
    echo exemple = ccleaner  
    set /p A=  
    
    cls  
    echo --falculatif-- Veuillez indiquer l'extension du fichier recherch'  
    echo exemple = txt / exe ...etc...  
    set /p EXT=  
    
    cls  
    set /A num=0  
    for /f "tokens=*" %%b in ('dir /A /B /S "%L%:\*%A%*.*%EXT%*"') do if exist "%%~b" (  
    set /A num=!num!+1  
    echo !num! - %%b >> "%homedrive%\ATS.txt")  
    echo.  
    If exist "%homedrive%\ATS.txt" (  
    echo Un rapport, intitul' ATS.txt, doit ^tre cr'e, dans la racine du disque dur  
    echo Appuyez sur une touche pour l'ouvrir  
    pause>nul  
    start notepad "%homedrive%\ATS.txt"  
    ) ELSE (echo D'sol', la recherche n'a rien donn')  
    echo.  
    echo.  
    echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  
    echo º Recherche termin' ! º  
    echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ  
    echo.  
    echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»  
    echo º 1 Retour au menu       º  
    echo º 2 Quitter le programme º  
    echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ  
    echo.  
    set /p choix= Veuillez indiquer votre choix :   
    if %choix%==1 goto menu  
    if %choix%==2 goto exit  
    
    :Error  
    echo.  
    Echo Cette action n'existe pas. Veuillez appuyer sur une touche pour recommencer  
    pause>nul  
    goto menu  
    
    :exit  
    exit  
    


    Bon courage :)

    edit : sinon, voici le fichier.
    Agent_Tom_Search32.bat

    @+
    0
    1. Batcher_debutant
       
      Salut,

      J'ai juste un petit souci avec ton programme, le fichier que je recherche (je l'ai intitulé Pistolet) porte une extension .bat. J'ai donc entré C (le fichier est dans un dossier sur le bureau), Pistolet, puis bat, mais ton programme ne le repère pourtant pas... Ai-je fait une erreur ou y a-t-il bien une erreur dans ton programme ?

      Merci de ta réponse ! :)
      P.S. : Es-tu sûr que l'extension soit bien facultative ?
      0
    2. Utilisateur anonyme
       
      Oui, tout à fait :)

      Chez moi le programme marche :)



      Faut mettre l'extension bat, et non.bat


      tu l'as recopié ou tu l'as téléchargé ?


      Je viens de tester => il ne fonctionne qu'avec les droits administrateur

      '++
      0
    3. Batcher_debutant
       
      Euuhh, je l'ai recopié (copier/coller quoi ! ^^). Pourquoi, il y a une différence ? Et excuse moi, mais j'ai bien marqué bat, pourtant, il ne le trouve pas.... Et je ne peux pas trop t'aider, le programme est un peu trop compliqué pour moi ^^ Merci de ton aide :)
      0
    4. Utilisateur anonyme
       
      Pas la peine de m'aider :)

      Il fonctionne :)

      Une différence entre copier / coller et prendre le fichier d'origine ?


      Oui, une sacrée : il y a des caractères spéciaux

      Tu copies ces caractères, notepad les prend pour des caractères normaux


      @+
      0