84 votes

Comment supprimer des dossiers vides à l'aide de l'invite de commande de Windows ?

Je dois supprimer tous les dossiers vides de mon dossier d'application à l'aide de l'invite de commande de Windows ?

Comment puis-je créer un fichier bat comme celui-là ?

Aidez-moi, s'il vous plaît.

4voto

À partir de la ligne de commande : for /R /D %1 in (*) do rd "%1"

dans un fichier batch for /R /D %%1 in (*) do rd "%%1"

Je ne sais pas si c'est documenté comme tel, mais cela fonctionne sous W2K, XP et Win 7. Et je ne sais pas si cela fonctionnera toujours, mais il ne supprimera jamais de fichiers par accident.

3voto

jcwhall Points 1

C'est un hybride de ce qui précède. Il supprime TOUS les fichiers de plus de X jours et supprime tous les dossiers vides pour le chemin donné. Pour l'utiliser, il suffit de définir les jours, le chemin du dossier et le lecteur.

@echo off
SETLOCAL
set days=30
set folderpath=E:\TEST\
set drive=E:

::Delete files
forfiles -p %folderpath% -s -d -%days% -c "cmd /c del /q @path "

::Delete folders
cd %folderpath%
%drive%
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"`

3 votes

Bon mais je dois enlever les apostrophes à la fin de la dernière ligne pour /f "usebackq delims=" %%d in ( "dir /ad/b/s | sort /R" ) do rd "%%d"

2voto

GreAce Points 27

Installez n'importe quel interpréteur UNIX pour Windows (Cygwin ou Git Bash) et exécutez la commande cmd :

find /path/to/directory -empty -type d

To find them

find /path/to/directory -empty -type d -delete

To delete them

(je n'utilise pas vraiment l'invite cmd de Windows mais c'est facile et cela a pris quelques secondes à exécuter)

0 votes

Plus dix pour inclure comment juste trouver les.

0 votes

Dans ma version de find, la première commande fonctionne, mais lorsque j'ajoute -delete, le système indique "invalid predicate -delete".

2voto

sathish anish Points 293

Cela fonctionnera bien. C'est la meilleure façon de supprimer les vieux fichiers et de supprimer les répertoires vides de façon récursive. Le fichier .bat suivant est,

forfiles /p [PATH] /s /m [FILE-PATTERN] /d -[DAYS] /c "cmd /c del @path"
for /f "delims=" %%d in ('dir [PATH] /s /b /ad ^| sort /r') do rd "%%d"

Les caractères de remplacement doivent être remplacés comme suit (sans les guillemets) :

[DAYS] = Max. age of the files in days, e.g. “10”
[PATH] = Path to search for old files and empty folders, e.g. “C:\Backup\”
[FILE-PATTERN] = Pattern that matches files to delete, e.g. “*.bkp”

Le script a été testé avec succès sous Windows 7 et Windows Server 2003.

0voto

PRADEESH Points 1
@echo off
set /p "ipa= ENTER FOLDER NAME TO DELETE> "
set ipad="%ipa%"
IF not EXIST %ipad% GOTO notfound
IF EXIST %ipad% GOTO found
:found
echo DONOT CLOSE THIS WINDOW
md ccooppyy
xcopy %ipad%\*.* ccooppyy /s > NUL
rd %ipad% /s /q
ren ccooppyy %ipad%
cls
echo SUCCESS, PRESS ANY KEY TO EXIT
pause > NUL
exit 
:notfound
echo I COULDN'T FIND THE FOLDER %ipad%
pause
exit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X