recherche de fichier à partir d'une chaine & d'une extension
Posté : 08 oct. 2009 16:21
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.
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.
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