Je voudrais supprimer tous les fichiers et sous-dossiers dans un fichier de commandes sous Windows 7 et conserver le dossier principal. Fondamentalement, vider le dossier. Quelle est l'instruction en ligne de commande pour cela ?
Réponses
Trop de publicités?Pour supprimer le fichier:
del CHEMIN_VERS_LE_FICHIER
Pour supprimer un dossier avec tous les fichiers qu'il contient:
rmdir /s /q CHEMIN_VERS_LE_DOSSIER
Pour supprimer tous les fichiers d'un dossier spécifique (sans supprimer le dossier lui-même), c'est un peu plus compliqué. del /s *.*
ne peut pas supprimer les dossiers, mais supprime les fichiers de tous les sous-dossiers. Donc deux commandes sont nécessaires:
del /q CHEMIN_VERS_LE_DOSSIER\*.*
for /d %i in (CHEMIN_VERS_LE_DOSSIER\*.*) do @rmdir /s /q "%i"
Vous pouvez créer un script pour supprimer ce que vous voulez (dossier ou fichier) comme ceci mydel.bat
:
@echo off
setlocal enableextensions
if "%~1"=="" (
echo Utilisation: %0 chemin
exit /b 1
)
:: vérifier s'il s'agit d'un dossier ou d'un fichier
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1
:: Supprimer le dossier ou le fichier
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%
Quelques exemples d'utilisation:
mydel.bat "chemin\vers\le\dossier avec des espaces"
mydel.bat chemin\vers\le\fichier_ou_dossier
Si vous vouliez vider le dossier, voici mon avis:
@ECHO OFF
:choice
cls
set /P c=Quel répertoire? [Bureau, Documents, Téléchargements, Images]
if /I "%c%" EQU "Desktop" set Point = "Desktop"
if /I "%c%" EQU "Documents" set Point = "Documents"
if /I "%c%" EQU "Downloads" set Point = "Downloads"
if /I "%c%" EQU "Pictures" set Point = "Pictures"
if /I "%c%" EQU "Videos" set Point = "Videos"
goto choice
set /P d=Quel sous-répertoire? Si vous mettez plusieurs. Le vôtre devrait ressembler à "chemin/vers/dossier" (pas de fichiers!!)
IF NOT EXIST C:\Users\%USERNAME%\%Point%\%d% GOTO NOWINDIR
rmdir C:\Users\%USERNAME%\%Point%\%d%
mkdir C:\Users\%USERNAME%\%Point%\%d%
:NOWINDIR
mkdir C:\Users\%USERNAME%\%Point%\%d%
Simple comme ça ! J'espère vous avoir aidé ! Je vous recommande de prendre tout le code, si vous ne voulez pas prendre tout le code, alors vous pouvez simplifier cela avec.
IF NOT EXIST *chemin ici* GOTO NOWINDIR
rmdir *chemin ici*
mkdir *chemin ici*
:NOWINDIR
mkdir *chemin ici*
MODIFIER: rmdir ne fonctionnera pas s'il n'est pas vide. Pour corriger cela.
IF NOT EXIST *chemin ici* GOTO NOWINDIR
del *chemin ici*/* /S /Q (ne copiez pas cela, ce qui précède empêche la commande del de supprimer tout dans le dossier, c'est similaire à une autre réponse.)
rmdir *chemin ici*
mkdir *chemin ici*
:NOWINDIR
mkdir *chemin ici*
Je ne suis pas sûr que cela fonctionne mais...
sdelete -s -p *chemin ici*/*
Exemple : Supprimez tout (dossiers/sous-dossiers/fichiers) dans le dossier Objets 3D mais souhaitez laisser le dossier Objets 3D intact
chemin="C:\Utilisateurs\PhilosophyPoet\Objets 3D" CD chemin RMDIR /s /q chemin
Lorsque CMD est orienté vers le répertoire de travail, l'utilisation de RMDIR supprimera tous les dossiers, sous-dossiers et fichiers du répertoire de travail. Il semble que le processus CMD ne puisse traiter lui-même, tout comme 'Je ne peux pas me jeter dans une poubelle parce que la poubelle doit être scellée par quelqu'un'
1. Ce que l'OP a demandé
del /f /s /q "C:\some\Path\*.*"
rmdir /s /q "C:\some\Path"
mkdir "C:\some\Path"
Cela supprimera tous les fichiers et dossiers dans le répertoire "C:\some\Path"
et recréera le répertoire principal à la fin.
2. Ce que la plupart des gens voudront
del /f /s /q "C:\some\Path\*.*"
rmdir /s /q "C:\some\Path"
Cela supprimera complètement le répertoire "C:\some\Path"
et tous ses contenus
Si l'OP a une exigence étrangement spécifique de ne pas toucher au répertoire de niveau supérieur de quelque manière que ce soit... ils devraient le mentionner dans leur question :)