recherche de fichier à partir d'une chaine & d'une extension

Vous avez réalisé un script utile, faites en profiter la communauté !

Modérateur : WIN32-[GG]

Répondre
Bigfish
Batcheur débutant
Messages : 26
Enregistré le : 08 août 2008 18:46

recherche de fichier à partir d'une chaine & d'une extension

Message par Bigfish »

Bonjour,

Voici un batch qui permet de retrouver tout les fichiers d'une extension donnée et qui contiennent la chaine de caracteres spécifiées.

:idea: La recherche peu se faire à partir d'une chaine contenant des espaces et des caractères accentués.

Ce batch fonctionne en 6 étapes

1/ saisie de la zone de recherche (si aucune zone de recherche n'est saisie le disque qui contient notre batch sera considéré ccomme la zone de recherche par defaut)
2/ saisie de l'extension des fichiers recherchés
3/ saisie de la chaine recherché. Cette chaine sera analysée et convertie par le batch Cconverter.bat si des caractères accentués la compose.
4/ Creation d'une liste de fichier à partir de l'extension spécifiée par l'utilisateur et ce dans la la zone de recherche la aussi spécifiée par l'utilisateur. Cette liste est créée à l'aide du batch: recherchev3.bat
notez que l'étape suivante de recherche de chaine ce fait a partir de cette 1iere liste de fichiers.
5/ Recherche de la chaine spécifiée et Création d'un fichier resultat qui liste tout les fichiers trouvés.
6/ présentation du résultat

Pour ce faire, ce batch utilise 2 batch déjà postés sur cet excellent site. Le premier est :

Convertisseur de chaine contenant des caractères accentués et qui ce trouve ici: http://www.batcher.fr/forum/viewtopic.php?f=6&t=213
Ce fichier batch est ici reconnu sous le nom: Cconverter.bat
(pour ceux qui se demandaient à quoi cela pouvait bien servir, voici un bel exemple :idea: )

le deuxieme est :

Recherche de fichier à partir d'un nom et/ou d'une extension et qui ce trouve la: http://www.batcher.fr/forum/viewtopic.p ... p=337#p337
Pour ce deuxieme batch il faut utiliser le deuxieme code(version v3.0). Ce 2ieme fichier batch est ici reconnu sous le nom: recherchev3.bat

:!: ATTENTION : Le batch considère que lui même et les batch Cconverter.bat et recherchev3.bat sont tout 3 dans le même répertoire. :!:

Le fichier de résultat ainsi que le fichier qui liste les fichiers de même extension seront eux aussi créé dans ce repertoire.

Code : Tout sélectionner

@echo off

rem -------------------------------------------------------
rem recherche de fichier à partir d'une chaine & d'une extension
rem cree par Bigfish alias 3ddI7IHd
rem le 07-10-09
rem V1.0
rem -------------------------------------------------------

set pathcmdrecherche=%~dp0
set monchemin=%~dp0
set oldstring=
set oldextension=
set oldZoneDeRecherche=

::_______________________________________________________________________________________________________
:nouvelle
cls
set ZoneDeRecherche=
set extension=
set Machaine=
set newstring=
set nbfile=0

rem -------------------------------------------------------
rem demande de la zone de recherche
echo Veuillez entrer la zone de recherche (?)Disque ou disque+repertoire
set /p ZoneDeRecherche= Sous la forme: c:\ ou "c:\Mon repertoire" (%oldZoneDeRecherche%) ? : 

rem si la saisie est vide on essai de recuppérer la valeur presentées part défaut
if "%ZoneDeRecherche%"=="" set ZoneDeRecherche=%oldZoneDeRecherche%

rem si la variable est toujours vide on recupere le disque courant de ce batch
if "%ZoneDeRecherche%"=="" set ZoneDeRecherche=%~d0\& echo "%~d0\"

rem -------------------------------------------------------
rem demande de l'extension
echo.
set /p extension=Extension des fichiers … rechercher (?)sans le point (%oldextension%) ? : 

rem si la saisie est vide on essai de recuppérer la valeur presentées part défaut
if "%extension%"=="" set extension=%oldextension%
echo.
if "%extension%"=="" echo /!\ Impossible de faire une recherche … partir d'une extension nul ! & pause > nul & goto nouvelle
set oldextension=%extension%

rem -------------------------------------------------------
rem demande de la chaine
:demandechaine
set /p Machaine= Chaine de caractŠre … rechercher (%oldstring%) ? : 

rem si la saisie est vide on essai de recuppérer la valeur presentées part défaut
if "%Machaine%"=="" set Machaine=%oldstring%
echo.
if "%Machaine%"=="" echo /!\ Impossible de faire une recherche … partir d'une chaine nul ! & pause > nul & cls & goto demandechaine
if "%Machaine%"=="%oldstring%" goto suite

call "%monchemin%Cconverter.bat" "%Machaine%"
set Machaine=%newstring%
set oldstring=%Machaine%

rem -------------------------------------------------------
rem la nouvelle recherche est elle demandée dans une zone differente de la précédente ?
rem si premiere recherche
if "%oldZoneDeRecherche%"=="" set oldZoneDeRecherche=%ZoneDeRecherche%&goto suite
rem si oui
if not "%ZoneDeRecherche%"=="%oldZoneDeRecherche%" set oldZoneDeRecherche=%ZoneDeRecherche%&goto creatlist

::_______________________________________________________________________________________________________
:suite
rem Creation d'une liste de fichier a partir de l'extension
rem cette liste existe t'elle deja?
if not exist "%monchemin%listetmp.txt" goto creatlist

rem elle existe deja mais contient t'elle des noms de fichiers avec l'extension demandée?
for /f "tokens=*" %%i in ('type "%monchemin%listetmp.txt" ^| findstr /i ext=') do set oldext="%%i"
set oldext=%oldext:~-4,-1%
if not "%oldext%"=="%extension%" goto creatlist

:retour
cls
echo.
echo /!\ Une liste de fichier .%extension% existe d‚ja !
set /p reponse=voulez-vous utiliser la liste existante(E) ou mettre … jour cette liste(M) [E] ?

if /i "%reponse%"=="" goto saut
if /i %reponse%==e goto saut
if /i %reponse%==m goto creatlist
goto retour

::_______________________________________________________________________________________________________
rem creation de la liste des fichiers contenant la chaine recherchée
:creatlist
call "%pathcmdrecherche%recherchev3.bat" /A *.%extension% "%ZoneDeRecherche%" "/d:%monchemin%listetmp.txt"
echo Ext=%extension%>>"%monchemin%listetmp.txt"
set nbfile=%compteur%
set compteur=0
pause
if not %nbfile% gtr 0 cls & echo Aucun fichier trouv‚ ! & pause > nul & exit

:saut
set i=0
set reponse=

set message=Veuillez patienter.
cls
echo Cr‚ation de la liste des fichiers contenant la chaine recherch‚e en cours. 
echo %message%
if exist "%monchemin%resultat.txt" del "%monchemin%resultat.txt"
for /f "tokens=*" %%i in ('findstr /i /m /f:"%monchemin%listetmp.txt" /c:"%Machaine%"') do call :EcritureResult "%%i"

if %i%==0 echo Aucun fichier trouve !
if %i% gtr 0 echo %i% fichier(s) >> "%monchemin%resultat.txt" & goto ShowResult

pause > nul
goto nextone

::_______________________________________________________________________________________________________
rem ecriture du resultat de recherche dans un fichier texte
:EcritureResult
set /a i=i+1
if %i:~-1%==0 call :bardeprogression
if %i:~-1%==5 call :bardeprogression
set /a compteur=%compteur%+1
echo %~1 >> "%monchemin%resultat.txt"
goto 3ddI7IHd

::_______________________________________________________________________________________________________
rem une petite barre de progression sans pretention
:BarDeProgression
cls
set message=%message%.
echo Cr‚ation de la liste des fichiers contenant la chaine recherch‚e en cours. 
echo %message%
goto 3ddI7IHd

::_______________________________________________________________________________________________________
rem affichage du resultat de recherche
:ShowResult
cls
echo.
echo %i% fichier(s) .%extension% contenant la chaine "%Machaine%" trouv‚(s) !
set /p reponse=Voulez-vous visualiser le fichier de r‚sultat (o/n) [O] ?
if /i "%reponse%"=="" start notepad %monchemin%resultat.txt & goto nextone
if /i "%reponse%"=="o" start notepad %monchemin%resultat.txt & goto nextone
if /i "%reponse%"=="n" goto nextone
goto ShowResult

::_______________________________________________________________________________________________________
rem demande de nouvelle recherche
:nextone
set reponse=
cls
echo.
set /p reponse=Voulez-vous effectuer une nouvelle recherche (o/n) [O] ?
if /i "%reponse%"=="" goto nouvelle
if /i "%reponse%"=="o" goto nouvelle
if /i "%reponse%"=="n" exit
goto nextone

::_______________________________________________________________________________________________________
:3ddI7IHd
stryk
Batcheur occasionnel
Messages : 6
Enregistré le : 09 sept. 2009 14:50
Localisation : Essonne / France

Re: recherche de fichier à partir d'une chaine & d'une extension

Message par stryk »

Salut,

Bien Joué :lol:

Voici une version light de ma création:

Code : Tout sélectionner

@echo off
title File_FINDER ^| By STRYK
color 0A
::       ---- stryk@live.fr ----

:RETRY

cls
echo ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo           º                                                         º
echo           º                   ---- FILE FINDER ----                 º
echo           º                                                         º
echo           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

set COUNT=0
set SELECT_FILE=
set /p SELECT_FILE=   Mot cl‚   \\:

echo Recherche en cours ....
echo.
echo --------------------------------------------------

for /f "tokens=*" %%i in ('dir c:\*%SELECT_FILE%* /b /s') do (
    echo %%i
    set /a COUNT=COUNT+1
    )

echo --------------------------------------------------
echo Fin de la recherche.
echo %COUNT% fichier(s) trouv‚(s).
echo.

set /p SELECT_COPY=Enregistrer La Liste [O]ui _ [N]on  \\:

if /i %SELECT_COPY%==o (
    for /f "tokens=*" %%i in ('dir c:\*%SELECT_FILE%* /b /s') do (
    echo %%i>>Find_%SELECT_FILE%.txt
    ))
    
:NEXT
echo Appuyez sur une touche pour une nouvelle recherche.
pause>nul

goto :RETRY
 
Bigfish
Batcheur débutant
Messages : 26
Enregistré le : 08 août 2008 18:46

Re: recherche de fichier à partir d'une chaine & d'une extension

Message par Bigfish »

Salut,

strik : sauf que la méthode que je propose recherche un fichier à partir d'une chaîne contenu dans le fichier... a l’intérieur du fichier quoi !... mais pas une chaîne dans le nom du fichier !!!

Ici l'idée est :

- tu ne connais pas le nom du fichier
- tu connais l’extension du fichier
- tu connais un mot ou une phrase contenu dans le fichier

donc rien à voir avec se que tu proposes !

D’ailleurs je propose déjà ce type de recherche http://www.batcher.fr/forum/viewtopic.php?f=6&t=80 "de ma création" pour reprendre tes termes ;)

A+
Zhah001
Batcheur occasionnel
Messages : 1
Enregistré le : 28 oct. 2014 18:27

Re: recherche de fichier à partir d'une chaine & d'une extension

Message par Zhah001 »

Venant de découvrir un peu le fonctionnement des batch, je viens de réaliser un programme permettant de lancer plusieurs programmes en même temps.
Dans le cas présent, on va dire qu'il s'agit de lancer deux messageries. On peut en lancer plus si on veut mais attention, dans cette configuration, les programmes sont exécutés en même temps.
Are you worried about 70-461 latest braindumps exam prep and a+ ASQ practice test? Check out our latest resources for [url=http://www.ucl.ac.uk/]University College London[/url dumps and 646-671 questions
Répondre