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+
A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
enableDelayedExpansion permet de modifier des variables dans une boucle for.
tu lui a laissé le temps de chercher ?
0
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485
 
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
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
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485
 
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
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
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
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485
 
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
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
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
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
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
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