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.
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 )
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