Voici une solution pour trouver le chemin d'un fichier dont on connait le nom:
Noter qu'il est possible d'utiliser le joker(*) dans le nom du fichier recherché pour remplacer 0 ou plusieurs caracteres
mise à jour du 28-10-08
J'ai ajouté la possibilité de faire une recherche a partir de nom de fichier et chemin
qui contiennent des espaces.
mise à jour du 07-11-08
l'aide integrée prend en compte le nom du bat lui meme
mise à jour du 17-11-08
petite correction pour ameliorer la recherche a partir de nom de fichier et chemin
contenant des espaces. Mise a jour de l'aide integrée.
Code : Tout sélectionner
@echo off
rem -----------------------------------------------
rem commande batch search
rem cree par Bigfish alias Philippe E
rem le 08-08-08
rem mis a jour le 17-11-08
rem -----------------------------------------------
rem pour eviter que la nouvelle recherche si elle est infructueuse ne renvoi le resultat de la recherche precedente
set myfilepath=
rem on verifi si un parametre a ete specifie
rem le signe ~ supprime les double-quotes du parametre
if not "%~1"=="" goto start
rem si pas de parametre
goto error
:start
rem on recupere les parametres
if /i "%~1"=="/?" goto help
set myfile=%~1
rem le chemin a t'il ete specifie ?
if /i "%~2"=="" goto initin
rem si un chemin a ete specifie
set in=%~2
goto next
rem si pas de chemin specifie on recupere le disque systeme
:initin
set in=%SYSTEMDRIVE%\
:next
echo Searching for file "%myfile%" in "%in%"
echo Please Wait...
echo.
rem cette ligne recherche myfile dans le disque ou chemin specifie et met le resultat dans la variable myfilepath
for /r "%in%" %%d in (*"%myfile%") do set myfilepath=%%d
rem on verifi que quelque chose a bien ete trouve
if /i "%myfilepath%" == "" goto rientrouve
echo %myfilepath%
echo.
goto fin
:rientrouve
echo no file found !
echo please check the file or the path specified
echo.
goto fin
:help
set NomCommande=%~n0
echo %NomCommande% file
echo.
echo %NomCommande% [/?] filename [drive:][path]
echo %NomCommande% [/?] "filename" ["drive:path"]
echo.
echo filename Specifies the file to search
echo drive: Optional if no path specified
echo.
echo Note that if no drive and path have been specified,
echo the research will be done in the system drive
echo.
echo you can use a quoted string in order to specify a file name
echo or path that contains space:
echo.
echo %NomCommande% "My file Name.txt" "c:\program files\"
echo.
echo You can also use the asterisk(*) as a substitute for zero or more
echo characters.
echo.
echo %NomCommande% My*file*.txt "c:\program files\"
goto fin
:error
echo The syntax of the command is incorrect.
echo.
:fin
rem pause
rem @33ddI7IHd
creez un fichier.bat par exemple : Recherche.bat puis copier coller le code ci-dessus. n'oubliez pas de sauver.
En suite ouvrez une cmd et placer vous dans le repertoire qui contient votre fichier recherche.bat.
Enfin pour faire une recherche du fichier notepad.exe, par exemple, tapper :
recherche notepad.exe c:\windows\
Attention : si il y a plus d'une version du fichier recherché, dans la zone de recherche (pour l'exemple le disque c:\windows\) seul le dernier trouvé sera pris en compte.
Attention (bis) : dans le code, le jocker * devant la variable %myfile% a la ligne for /r %in% %%d in (*%myfile%) do set myfilepath=%%d est O B L I G A T O I R E !
Si vous voulez utiliser cette commande via la boite de dialogue "executer" de windows il vous faudra enlever le rem devant le pause en fin de fichier.
A+:)
33ddI7IHd