Je dois supprimer tous les fichiers .jpg et .txt (par exemple) dans dir1 et dir2.
Ce que j'ai essayé était:
@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t
Dans certains annuaires, cela fonctionnait. dans d'autres, cela n'a pas été le cas.
Par exemple, cela n'a rien fait:
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
Qu'est-ce qui me manque dans le deuxième extrait? Pourquoi ça n'a pas marché?
Vous pouvez utiliser des caractères génériques avec la commande del
et /S
le faire récursivement.
del /S *.jpg
@BmyGuest a demandé pourquoi une réponse défavorable (del /s c:\*.blaawbg
) était différent de ma réponse.
Il y a une énorme différence entre courir del /S *.jpg
et del /S C:\*.jpg
. La première commande est exécutée à partir de l'emplacement actuel , tandis que la seconde est exécutée sur l'ensemble du lecteur .
Dans le cas où vous supprimeriez des fichiers jpg
à l'aide de la deuxième commande, certaines applications pourraient ne plus fonctionner et vous risqueriez de perdre toutes vos photos de famille. C'est tout à fait ennuyeux, mais votre ordinateur pourra toujours fonctionner.
Toutefois, si vous travaillez sur un projet et souhaitez supprimer tous vos fichiers dll
dans myProject\dll
, et exécutez le fichier de commandes suivant:
@echo off
REM This short script will only remove dlls from my project... or will it?
cd \myProject\dll
del /S /Q C:\*.dll
Ensuite, vous supprimez tous les fichiers dll
de votre fichier C:\
conduire. Toutes vos applications cessent de fonctionner, votre ordinateur devient inutile et lors du prochain redémarrage, vous êtes téléporté dans la quatrième dimension, où vous serez bloqué pour l'éternité.
La leçon à tirer ici est de ne pas exécuter une telle commande directement à la racine d’un lecteur (ou à tout autre endroit potentiellement dangereux, tel que %windir%
) si vous pouvez l'éviter. Toujours les exécuter aussi localement que possible.
Il y a quelque temps, j'ai écrit un script batch qui vous permet de choisir une extension de fichier à supprimer. Le script recherche dans le dossier dans lequel il se trouve et dans tous les sous-dossiers tous les fichiers portant cette extension et le supprime.
@ECHO OFF
CLS
SET found=0
ECHO Enter the file extension you want to delete...
SET /p ext="> "
IF EXIST *.%ext% ( rem Check if there are any in the current folder :)
DEL *.%ext%
SET found=1
)
FOR /D /R %%G IN ("*") DO ( rem Iterate through all subfolders
IF EXIST %%G CD %%G
IF EXIST *.%ext% (
DEL *.%ext%
SET found=1
)
)
IF %found%==1 (
ECHO.
ECHO Deleted all .%ext% files.
ECHO.
) ELSE (
ECHO.
ECHO There were no .%ext% files.
ECHO Nothing has been deleted.
ECHO.
)
PAUSE
EXIT
J'espère que cela sera utile à tous ceux qui le souhaitent :)
Vous pouvez l'utiliser pour supprimer TOUS les fichiers d'un dossier et de ses sous-dossiers:
DEL "C:\Folder\*.*" /S /Q
Ou utilisez ceci pour supprimer certains types de fichiers uniquement:
DEL "C:\Folder\*.mp4" /S /Q
DEL "C:\Folder\*.dat" /S /Q
Je n'ai pas assez de réputation pour ajouter un commentaire, alors j'ai posté ceci comme réponse. Mais pour le problème original avec cette commande:
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
Le premier pour manque de syntaxe récursive, il devrait être:
@echo off
FOR /R %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
Vous pouvez juste faire:
FOR %%p IN (C:\Users\0300092544\Downloads\Ces_Sce_600) DO @ECHO %%p
pour montrer la sortie réelle.