Recherche dossier en Bat (Manque connaissance)
Résolu/Fermé
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
26 févr. 2013 à 19:48
Albert49 - 5 avril 2013 à 17:49
Albert49 - 5 avril 2013 à 17:49
A voir également:
- Recherche dossier en Bat (Manque connaissance)
- Fichier bat - Guide
- Dossier appdata - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Mettre un mot de passe sur un dossier - Guide
- Dossier rar - Guide
13 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
27 févr. 2013 à 08:22
27 févr. 2013 à 08:22
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
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
27 févr. 2013 à 12:32
27 févr. 2013 à 12:32
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
27 févr. 2013 à 12:50
27 févr. 2013 à 12:50
le nom contient des espaces ? mettre des "
FOR /F "delims=" %%f in ('dir /B /S "%%d:\%FILENAME%"') do (
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
27 févr. 2013 à 14:33
27 févr. 2013 à 14:33
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 27/02/2013 à 14:40
Modifié par dubcek le 27/02/2013 à 14:40
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
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
27 févr. 2013 à 17:26
27 févr. 2013 à 17:26
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 févr. 2013 à 10:21
28 févr. 2013 à 10:21
le nom contient des accents ?
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
28 févr. 2013 à 16:53
28 févr. 2013 à 16:53
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 ?
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
28 févr. 2013 à 18:06
28 févr. 2013 à 18:06
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
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
28 févr. 2013 à 23:33
28 févr. 2013 à 23:33
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
16 mars 2013 à 08:51
16 mars 2013 à 08:51
qu'entends-tu par rien à supprimer ? que les dossiers IMAGES n'existent pas ou qu'ils soient vides ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
17 mars 2013 à 09:47
17 mars 2013 à 09:47
set R1=%ALLUSERSPROFILE%\Menu D'marrer\Programmes\IMAGES set R2=%ALLUSERSPROFILE%\Start Menu\Programs\IMAGES if exist "%R1%" ( rd /s /q "%R1%" ) else ( ici lancer la recherche) if exist "%R2%" ( rd /s /q "%R2%" ) else ( ici lancer la recherche)
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 18/03/2013 à 09:49
Modifié par dubcek le 18/03/2013 à 09:49
il me semble qu'il y a trop de " là, mettre
set R1="D:\IMAGES" set R2="C:\Program Files (x86)\IMAGES" if exist %R1% ( rd /s /q %R1%ou
set R1=D:\IMAGES set R2=C:\Program Files (x86)\IMAGES if exist "%R1%" ( rd /s /q "%R1%"vérifier le reste du script
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
23 mars 2013 à 14:38
23 mars 2013 à 14:38
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
24 mars 2013 à 08:27
24 mars 2013 à 08:27
corriger cette ligne, il manque les %
if %cherche% EQU 1 (
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
)
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
25 mars 2013 à 15:29
25 mars 2013 à 15:29
c'est dangereux de tester avec des rmdir. que doit faire cette recherche ?'supprimer tout les dossiers IMAGES de tout les disques ?
pour R3, oui
pour R3, oui
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
26 mars 2013 à 10:08
26 mars 2013 à 10:08
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 ) )
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
26 mars 2013 à 12:20
26 mars 2013 à 12:20
correction
@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 %%a:\%DIR%') do echo ++ %%b ) )
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
27 mars 2013 à 14:36
27 mars 2013 à 14:36
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 mars 2013 à 09:34
28 mars 2013 à 09:34
c'est un gros disque ? il faut lui laisser le temps
et avec juste:
et avec juste:
dir /a:d /b/s D:\dossier