Recherche dossier en Bat (Manque connaissance)
Résolu
micromega
Messages postés
131
Date d'inscription
Statut
Membre
Dernière intervention
-
Albert49 -
Albert49 -
Bonjour,
J'ai construit ce bat en glanant des informations sur le net :
@echo off
set FILENAME="Nom du fichier.txt"
set LOOKPATH=%LOOKIN%%FILENAME%
set DRIVERLIST= A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
set FILEPATH = ''
FOR %%d in (%DRIVERLIST%) do (
Echo Recherche en cours... %%d:\%FILENAME%
FOR /F "delims=" %%f in ('dir /B /S %%d:\%FILENAME%') do (
set FILEPATH=%%f
)
)
del %FILEPATH%
echo.
echo. ! SUPPRIME !
echo.
TIMEOUT 10
Il y a juste un endroit où je sèche, c'est que cette commande ne fonctionne qu'avec des fichiers, j'aimerais qu'elle puisse fonctionner avec des dossier (supprimer le dossier trouvé).
Je pense qu'il faut agir sur le "Set FILENAME", mais je n'ai pas les connaissances suffisantes.
Merci de m'aider à terminer la construction de ce bat.
J'ai construit ce bat en glanant des informations sur le net :
@echo off
set FILENAME="Nom du fichier.txt"
set LOOKPATH=%LOOKIN%%FILENAME%
set DRIVERLIST= A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
set FILEPATH = ''
FOR %%d in (%DRIVERLIST%) do (
Echo Recherche en cours... %%d:\%FILENAME%
FOR /F "delims=" %%f in ('dir /B /S %%d:\%FILENAME%') do (
set FILEPATH=%%f
)
)
del %FILEPATH%
echo.
echo. ! SUPPRIME !
echo.
TIMEOUT 10
Il y a juste un endroit où je sèche, c'est que cette commande ne fonctionne qu'avec des fichiers, j'aimerais qu'elle puisse fonctionner avec des dossier (supprimer le dossier trouvé).
Je pense qu'il faut agir sur le "Set FILENAME", mais je n'ai pas les connaissances suffisantes.
Merci de m'aider à terminer la construction de ce bat.
A voir également:
- Recherche dossier en Bat (Manque connaissance)
- Fichier bat - Guide
- Dossier appdata - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Impossible de supprimer un dossier - Guide
13 réponses
hello
del supprime un fichier, pour supprimer un répertoire et tout ce qu'il contient (danger !!!) utiliser rd /s/q
del supprime un fichier, pour supprimer un répertoire et tout ce qu'il contient (danger !!!) utiliser rd /s/q
Bonjour Dubcek,
Merci de ta réponse.
J'avais déjà essayé cela (et d'autres manières également), mais cela ne fonctionne pas. Il ne me trouve pas le dossier. Avec un fichier et "DEL" cela fonctionne parfaitement, mais peut-être cela est dû à la ligne "set FILENAME=".
Voici le code que j'ai essayé avec tes indications (DOSSIER A SUPPR = nom du dossier à supprimer et tous ce qu'il contient > J'aime le Danger !!!) :
@echo off
set FILENAME="DOSSIER A SUPPR"
set LOOKPATH=%LOOKIN%%FILENAME%
set DRIVERLIST= A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
set FILEPATH = ''
FOR %%d in (%DRIVERLIST%) do (
Echo Recherche en cours... %%d:\%FILENAME%
FOR /F "delims=" %%f in ('dir /B /S %%d:\%FILENAME%') do (
set FILEPATH=%%f
)
)
rd /s/q %FILEPATH%
echo.
echo. ! SUPPRIME !
echo.
TIMEOUT 10
Merci encore
Merci de ta réponse.
J'avais déjà essayé cela (et d'autres manières également), mais cela ne fonctionne pas. Il ne me trouve pas le dossier. Avec un fichier et "DEL" cela fonctionne parfaitement, mais peut-être cela est dû à la ligne "set FILENAME=".
Voici le code que j'ai essayé avec tes indications (DOSSIER A SUPPR = nom du dossier à supprimer et tous ce qu'il contient > J'aime le Danger !!!) :
@echo off
set FILENAME="DOSSIER A SUPPR"
set LOOKPATH=%LOOKIN%%FILENAME%
set DRIVERLIST= A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
set FILEPATH = ''
FOR %%d in (%DRIVERLIST%) do (
Echo Recherche en cours... %%d:\%FILENAME%
FOR /F "delims=" %%f in ('dir /B /S %%d:\%FILENAME%') do (
set FILEPATH=%%f
)
)
rd /s/q %FILEPATH%
echo.
echo. ! SUPPRIME !
echo.
TIMEOUT 10
Merci encore
le nom contient des espaces ? mettre des "
FOR /F "delims=" %%f in ('dir /B /S "%%d:\%FILENAME%"') do (
J'ai mis "DOSSIER A SUPPR" pour exemple, j'avais également essayé avec "test", mais dans tous les cas même si je met les " cela ne change rien.
Il y a un vrai problème de détection du dossier, alors qu'avec des fichiers (.exe, .txt, .dll ,...), le bat fonctionne très bien.
FILENAME > ce n'est pas uniquement pour des fichiers ?
Merci
Il y a un vrai problème de détection du dossier, alors qu'avec des fichiers (.exe, .txt, .dll ,...), le bat fonctionne très bien.
FILENAME > ce n'est pas uniquement pour des fichiers ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non, ça doit fonctionner
et manuellement, ca marche ?
par contre si il en a plusieurs, il ne prend que le dernier
et manuellement, ca marche ?
dir /b/s \nom-du-dossier
par contre si il en a plusieurs, il ne prend que le dernier
Si je fais seulement un bat :
@echo off
rd /s /q "TEST"
cela fonctionne.
Dans l'autre fichier bat, avec recherche cela ne fonctionne pas.
Je suis sous Win 7 64bit
@echo off
rd /s /q "TEST"
cela fonctionne.
Dans l'autre fichier bat, avec recherche cela ne fonctionne pas.
Je suis sous Win 7 64bit
Bonjour Dubcek,
Non il n'y a pas d'accent. Pour voir si cela fonctionne j'utilise dans un premier temps un nom de dossier appelé "Test", il n'y a donc pas d'accent ni d'espace qui pourrait poser problème.
La commande fonctionne chez toi ?
Non il n'y a pas d'accent. Pour voir si cela fonctionne j'utilise dans un premier temps un nom de dossier appelé "Test", il n'y a donc pas d'accent ni d'espace qui pourrait poser problème.
La commande fonctionne chez toi ?
Bon je tourne en rond...
Je réfléchis à un nouveau code différent:
Est-ce que tu sais comment créer un nouveau bat qui permet de supprimer le dossier dans lequel est le bat exécuter :
Dossier > test.Bat
J'ai essayé :
rd /s /q "dossier"
Mais il n'efface pas le dossier. Le bat est bien dans le dossier qu'il faut supprimer donc il faut faire une rétro-action... je colle là dessus aussi.
Merci
Je réfléchis à un nouveau code différent:
Est-ce que tu sais comment créer un nouveau bat qui permet de supprimer le dossier dans lequel est le bat exécuter :
Dossier > test.Bat
J'ai essayé :
rd /s /q "dossier"
Mais il n'efface pas le dossier. Le bat est bien dans le dossier qu'il faut supprimer donc il faut faire une rétro-action... je colle là dessus aussi.
Merci
Bon j'ai trouvé une solution différente de l'origine mais qui agit de la même sorte et même mieux.
@echo off
for %%i in (C,D) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (NOM DOSSIER) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
:FinBoucle
Merci à toi Dubcek de m'avoir aidé.
Par contre j'ai de nouveau un problème (suppression d'un dossier où le bat est exécuté), j'ai créé un nouveau sujet pour cela. Si tu as le coeur à creuser voici le lien :
https://forums.commentcamarche.net/forum/affich-27253575-bat-supprimer-dossier-dans-lequel-le-bat-est-execute
Merci encore !
@echo off
for %%i in (C,D) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (NOM DOSSIER) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
:FinBoucle
Merci à toi Dubcek de m'avoir aidé.
Par contre j'ai de nouveau un problème (suppression d'un dossier où le bat est exécuté), j'ai créé un nouveau sujet pour cela. Si tu as le coeur à creuser voici le lien :
https://forums.commentcamarche.net/forum/affich-27253575-bat-supprimer-dossier-dans-lequel-le-bat-est-execute
Merci encore !
Bonjour,
Je suis interessé pour utiliser le code donné au-dessus, mais je souhaiterais que le fichier commence par effacer ces fichiers :
rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES"
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES"
Et que si il n'a rien de supprimer, alors il entreprend la recherche comme indiqué plus haut (si les dossiers ont été effacés alors le bat se termine après cela).
Comment puis-je insérer ceci dans le code précédent?
Merci
Je suis interessé pour utiliser le code donné au-dessus, mais je souhaiterais que le fichier commence par effacer ces fichiers :
rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES"
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES"
Et que si il n'a rien de supprimer, alors il entreprend la recherche comme indiqué plus haut (si les dossiers ont été effacés alors le bat se termine après cela).
Comment puis-je insérer ceci dans le code précédent?
Merci
C'est bien comme ça qu'il fallait écrire le code ? :
set R1="D:\IMAGES"
set R2="C:\Program Files (x86)\IMAGES"
if exist "%R1%" (
rd /s /q "%R1%"
) else (
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (IMAGES) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
:FinBoucle
if exist "%R2%" (
rd /s /q "%R2%"
) else (
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (IMAGES) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
:FinBoucle
rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES" >NUL 2>&1
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES" >NUL 2>&1
ça ne fonctionne pas chez moi.
J'ai changé le style d'éxécution, finalement il doit supprimer R1 ou R2 (s'il ne les supprimes pas alors il les cherches sur tous les lecteurs) et il doit supprimer les raccourcies du menu démarrer dans tous les cas.
set R1="D:\IMAGES"
set R2="C:\Program Files (x86)\IMAGES"
if exist "%R1%" (
rd /s /q "%R1%"
) else (
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (IMAGES) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
:FinBoucle
if exist "%R2%" (
rd /s /q "%R2%"
) else (
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
if exist "%%i:\" set VrLetter=%%i& call :search %%i
)
goto FinBoucle
:search
for /r "%VrLetter%:\" %%j in (IMAGES) do (
if exist "%%j" RMDIR %%j /S /Q
)
goto :eof
:FinBoucle
rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES" >NUL 2>&1
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES" >NUL 2>&1
ça ne fonctionne pas chez moi.
J'ai changé le style d'éxécution, finalement il doit supprimer R1 ou R2 (s'il ne les supprimes pas alors il les cherches sur tous les lecteurs) et il doit supprimer les raccourcies du menu démarrer dans tous les cas.
j'ai simplifié le code pour éviter les doublons, essayer
set R1=D:\IMAGES set R2=C:\Program Files (x86)\IMAGES set cherche=0 if exist "%R1%" ( rd /s /q "%R1%" ) else ( set cherche=1 ) if exist "%R2%" ( rd /s /q "%R2%" ) else ( set cherche=1 ) if cherche EQU 1 ( for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do ( if exist "%%i:\" ( set VrLetter=%%i for /r "%VrLetter%:\" %%j in (IMAGES) do ( if exist "%%j" RMDIR "%%j" /S /Q ) goto :eof ) ) ) rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES" >NUL 2>&1 rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES" >NUL 2>&1
Bonjour,
Le bat à fait un pas en avant. Il me supprime bien les dossiers s'il les trouvent dans les adresses indiquées. Par contre si le dossier n'existe pas, la recherche ne fonctionne pas (il n'y a aucune recherche effectué...)
J'ai essayé avec un nom de dossier différent et toujours pas de recherche.
Merci
Le bat à fait un pas en avant. Il me supprime bien les dossiers s'il les trouvent dans les adresses indiquées. Par contre si le dossier n'existe pas, la recherche ne fonctionne pas (il n'y a aucune recherche effectué...)
J'ai essayé avec un nom de dossier différent et toujours pas de recherche.
Merci
J'ai corriger cela, voilà la commande :
Mais la recherche ne fonctionne toujours pas. La fenêtre s'ouvre et se referme automatiquement après...
Petite question, lorsque le bat fonctionnera je pourrai répéter une troisième fois l'opération en ajoutant un R3 ?
set R3=C:\Program Files (x86)\Photos
if exist "%R3%" (
rd /s /q "%R3%"
) else (
set cherche=1
)
set R1=D:\TEST set R2=C:\Program Files (x86)\TEST set cherche=0 if exist "%R1%" ( rd /s /q "%R1%" ) else ( set cherche=1 ) if exist "%R2%" ( rd /s /q "%R2%" ) else ( set cherche=1 ) if %cherche% EQU 1 ( for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do ( if exist "%%i:\" ( set VrLetter=%%i for /r "%VrLetter%:\" %%j in (TEST) do ( if exist "%%j" RMDIR "%%j" /S /Q ) goto :eof ) ) ) rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES" >NUL 2>&1 rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES" >NUL 2>&1 pause end
Mais la recherche ne fonctionne toujours pas. La fenêtre s'ouvre et se referme automatiquement après...
Petite question, lorsque le bat fonctionnera je pourrai répéter une troisième fois l'opération en ajoutant un R3 ?
set R3=C:\Program Files (x86)\Photos
if exist "%R3%" (
rd /s /q "%R3%"
) else (
set cherche=1
)
Je n'ai qu'un seul dossier "Test" pour essayer voir si cela fonctionne, donc pas de risque particulier.
La recherche doit supprimer le dossier et tout se qu'il contient dans disques dans lequel il est présent.
J'ai essayer d'autre alternative de recherche, mais cela ne fonctionne pas non plus... étrange... de mes yeux (non experts) la commande semble correct, mais il doit certainement manquer quelque chose.
La recherche doit supprimer le dossier et tout se qu'il contient dans disques dans lequel il est présent.
J'ai essayer d'autre alternative de recherche, mais cela ne fonctionne pas non plus... étrange... de mes yeux (non experts) la commande semble correct, mais il doit certainement manquer quelque chose.
ce bat recherche le dossier images sur tout les disques et affiche son nom :
@echo off set DIR=IMAGES for %%a in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do ( if exist "%%a:\" ( for /f "delims=" %%b in ('dir /a:d /b/s \%DIR%') do echo ++ %%b ) )
tu as remplacé IMAGES par un dossier qui existe ?
exécuter ce code dans une fenêtre DOS, pas en double-clique
mettre des traces:
exécuter ce code dans une fenêtre DOS, pas en double-clique
mettre des traces:
@echo off set DIR=IMAGES for %%a in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do ( echo teste de %%a:\ if exist "%%a:\" ( echo recherche dans %%a:\ for /f "delims=" %%b in ('dir /a:d /b/s %%a:\%DIR%') do echo ++ %%b ) )
Oui j'ai remplacé IMAGES par un nom de dossier bidon créé dans le disque D.
Lorsque je lance il m'indique bien la recherche dans le lecteur C, puis fichier introuvable (normal car il n'y est pas), puis passe à la recherche des autres lecteurs notamment le lecteur D, mais là il se fixe et ne continu pas.
Voilà ce que me dis la fenêtre DOS dans laquelle je l'ai exécuter :
teste de C:\
recherche dans C:\
Fichier introuvable
teste de D:\
recherche dans D:\
C:\Users\Acer>
Pour voir si cela fonctionne, j'ai limité la recherche au disque C et D dans un premier temps.
Lorsque je lance il m'indique bien la recherche dans le lecteur C, puis fichier introuvable (normal car il n'y est pas), puis passe à la recherche des autres lecteurs notamment le lecteur D, mais là il se fixe et ne continu pas.
Voilà ce que me dis la fenêtre DOS dans laquelle je l'ai exécuter :
teste de C:\
recherche dans C:\
Fichier introuvable
teste de D:\
recherche dans D:\
C:\Users\Acer>
Pour voir si cela fonctionne, j'ai limité la recherche au disque C et D dans un premier temps.