Script par lots pour supprimer des fichiers

96

J'ai un script batch comme suit.

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

Le code ci-dessus supprime tous les fichiers ".txt" et ".tsv" de tous les dossiers sauf du dossier TEST 100%. Pour supprimer les fichiers TEST 100%, j'obtiens l'erreur comme The Path could not be found. Je suppose que le symbole% dans le nom du dossier crée le problème. Quelqu'un peut-il me guider pour résoudre le problème et supprimer les fichiers du dossier TEST 100%?

Satheesh
la source
Pourquoi avez-vous un devis sur la première ligne? Aussi, pourquoi faites-vous référence au lecteur alors que votre fichier de commandes a déjà été remplacé par ce lecteur avec la première ligne? J'ai essayé de reproduire votre problème et tout a fonctionné. Avez-vous confirmé que l'archive existe dans le test 100%?
RonaldBarzell

Réponses:

112

Vous devez échapper au% avec un autre ...

del "D:\TEST\TEST 100%%\Archive*.TXT"
Russ Freeman
la source
Je ne peux pas parler pour l'OP, mais sur mon système, il n'y a aucun problème à trouver un chemin avec%, et échapper avec %% empêche le système de le trouver.
RonaldBarzell
@ user1161318 - Je l'ai testé sur Windows 7. Sans l'échappement, dans un fichier batch, les résultats sont "Le système ne trouve pas le chemin spécifié". Comme je l'ai posté, cela fonctionne.
Russ Freeman
Ok, sur XP, j'obtiens les résultats opposés. Il trouve le chemin correct avec%, mais ne parvient pas à le trouver avec %%.
RonaldBarzell
5
Je suppose que vous le faites à partir de l'invite de commande et non à partir d'un fichier de commandes.
Russ Freeman
2
Tu as probablement raison. J'oublie toujours que dans un fichier batch,% est un préfixe variable et vous devez l'échapper. +1
RonaldBarzell
12

Il existe plusieurs façons de faire les choses par lots, donc si vous échapper avec un double pour cent %%ne fonctionne pas pour vous, vous pouvez essayer quelque chose comme ceci:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

Comment ça marche:

set olddir=%CD%définit la variable "olddir"ou tout autre nom de variable de votre choix dans le répertoire à partir duquel votre fichier de commandes a été lancé.

cd /d "path of folder"modifie le répertoire actuel que le lot examinera. conservez les citations et changez le chemin du dossier vers le chemin que vous visez.

del "file name/ or *.txt etc..."supprimera le fichier dans le répertoire actuel que votre lot recherche, n'ajoutez simplement pas de chemin de répertoire avant le nom du fichier et ayez simplement le nom complet du fichier ou, pour supprimer plusieurs fichiers avec la même extension avec *.txtou quelle que soit l'extension dont vous avez besoin.

cd /d "%olddir%"prend la variable enregistrée avec votre ancien chemin et retourne au répertoire avec lequel vous avez démarré le lot, ce n'est pas important si vous ne voulez pas que le lot retourne à son chemin de répertoire précédent, et comme indiqué avant que le nom de la variable puisse être changé en tout ce que vous souhaitez en changeant le set olddir=%CD% line.

user1931470
la source
C'est mieux fait pushd "folder" && del "filename" & popd.
Nuno André
10

Disons que vous avez enregistré votre logiciel sur votre bureau.
si vous souhaitez supprimer un dossier entier comme un programme de désinstallation, vous pouvez l'utiliser.

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

cela supprimera le dossier entier appelé logiciel et tous ses fichiers et sous-dossiers

Assurez-vous que vous supprimez le bon dossier car il n'a pas d'option Oui / Non

user3674709
la source
4

Considérez que les fichiers que vous devez supprimer ont une extension txtet se trouvent à l'emplacement D:\My Folder, vous pouvez alors utiliser le code ci-dessous dans le fichier bat.

cd "D:\My Folder"
DEL *.txt 
Sarath Avanavu
la source
-7

dans le code de lot, votre chemin ne doit contenir aucun espace, veuillez donc changer le nom de votre dossier de "TEST 100%" à "TEST_100%" et votre nouveau code sera supprimé "D: \ TEST \ TEST_100% \ Archive * .TXT"

j'espère que cela résoudra votre problème

Ravi
la source
6
Jamais entendu parler de ça. Est-ce nouveau? -Sarcasme éteint. Il fonctionne avec des espaces comme il le fait sans, tant que vous le mettez entre guillemets.
Blacktempel