J'utilise Windows.
Je souhaite supprimer tous les fichiers et dossiers d'un dossier par appel système.
Je peux appeler comme ça:
>rd /s /q c:\destination
>md c:\destination
Connaissez-vous un moyen plus simple?
J'utilise Windows.
Je souhaite supprimer tous les fichiers et dossiers d'un dossier par appel système.
Je peux appeler comme ça:
>rd /s /q c:\destination
>md c:\destination
Connaissez-vous un moyen plus simple?
Réponses:
Non, je n'en connais pas.
Si vous souhaitez conserver le répertoire d'origine pour une raison quelconque (ACL, etc.), et que vous voulez vraiment le vider, alors vous pouvez faire ce qui suit:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
Cela supprime d'abord tous les fichiers du répertoire, puis supprime de manière récursive tous les répertoires imbriqués, mais dans l'ensemble, en conservant le répertoire de niveau supérieur tel quel (à l'exception de son contenu).
Notez que dans un fichier de commandes, vous devez doubler le %
contenu de la for
boucle:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
par le chemin, éventuellement en utilisant des guillemets autour du tout si nécessaire.
del c:\destination\*.* /s /q
travaillé pour moi. J'espère que cela fonctionne aussi pour vous.
del *.*
del "../../server/front-end\*.*"
Je pense que le moyen le plus simple de le faire est:
rmdir /s /q "C:\FolderToNotToDelete\"
Le dernier "\" du chemin est la partie importante.
mkdir C:\FolderToNotToDelete
me suffisait :)
Oui! Utilisez Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Si les noms de sous-dossiers peuvent contenir des espaces, vous devez les entourer de guillemets d'échappement. L'exemple suivant montre cela pour les commandes utilisées dans un fichier de commandes.
set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
Pour supprimer un fichier:
del PATH_TO_FILE
Pour supprimer un dossier contenant tous les fichiers:
rmdir /s /q PATH_TO_FOLDER
Supprimer tous les fichiers d'un dossier spécifique (sans supprimer le dossier lui-même) est un peu 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 PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) 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 Usage: %0 path
exit /b 1
)
:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1
:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%
Quelques exemples d'utilisation:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Une option simple sur une ligne consiste à créer un répertoire vide quelque part sur votre système de fichiers, puis à utiliser ROBOCOPY
( http://technet.microsoft.com/en-us/library/cc733145.aspx ) avec le /MIR
commutateur pour supprimer tous les fichiers et sous-dossiers. Par défaut, robocopy ne copie pas la sécurité, les ACL de votre dossier racine doivent donc rester intactes.
Vous souhaitez probablement également définir une valeur pour le commutateur de nouvelle tentative /r
, car le nombre de tentatives par défaut est de 1 million.
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
J'avais un dossier d'index avec 33 dossiers qui nécessitaient tous les fichiers et sous-dossiers supprimés. J'ai ouvert une ligne de commande dans le dossier d'index, puis j'ai utilisé ces commandes:
for /d in (*) do rd /s /q "%a" & (
md "%a")
Je les ai séparés en deux lignes (appuyez sur Entrée après la première ligne, et lorsqu'on vous demande plus d'ajouter la deuxième ligne), car si elles sont entrées sur une seule ligne, cela peut ne pas fonctionner. Cette commande effacera chaque répertoire puis en créera un nouveau qui est vide, supprimant ainsi tous les fichiers et sous-dossiers du répertoire d'origine.
Accédez au répertoire parent
Supprimer les sous-dossiers
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
vous devez popd
également l' utiliser . Malheureusement, popd
ne fonctionne pas lorsque vous supprimez le répertoire. Donc, vous devez faire cd
au lieu de pushd
.
essayez ceci, cela recherchera tout MyFolder sous le répertoire racine et supprimera tous les dossiers nommés MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
del .\*
Cette commande supprime tous les fichiers et dossiers de la navigation actuelle dans votre ligne de commande.