98 votes

Batch script pour supprimer des fichiers

J'ai un lot script 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 de TEST 100% J'obtiens l'erreur suivante 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 ce problème et supprimer les fichiers du dossier ? TEST 100% .

Merci, Satheesh

0 votes

Pourquoi avez-vous une citation sur la première ligne ? De plus, pourquoi faites-vous référence au lecteur alors que votre fichier batch a déjà changé 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 Test 100% ?

113voto

Russ Freeman Points 422

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

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

0 votes

Je ne peux pas parler pour le PO, mais sur mon système, il n'y a aucun problème pour trouver un chemin avec %, et l'échappement avec %% empêche le système de le trouver.

0 votes

@user1161318 - Je l'ai testé sur Windows 7. Sans l'échappement, dans un fichier batch, le résultat est "Le système ne peut pas trouver le chemin spécifié". Comme je l'ai posté, cela fonctionne.

0 votes

Ok, sur XP j'obtiens les résultats opposés. Il trouve bien le chemin avec %, mais ne le trouve pas avec %%.

12voto

user1931470 Points 10

Il y a plusieurs façons de faire les choses dans le lot, donc si vous ne parvenez pas à vous échapper avec un double pourcentage %%, vous pouvez essayer quelque chose comme ceci :

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

Comment cela fonctionne :

set olddir=%CD% donne à la variable "olddir" ou à tout autre nom de variable que vous voulez le répertoire dans lequel à partir duquel votre lot a été lancé.

cd /d "chemin d'accès du dossier" change le répertoire courant que le batch va regarder. gardez les et changez le chemin du dossier en celui que vous souhaitez.

del "nom du fichier/ ou *.txt etc..." supprimera le fichier dans le répertoire courant que votre batch regarde, n'ajoutez pas de chemin de répertoire avant le nom du fichier et ayez juste le nom complet du fichier ou pour supprimer plusieurs fichiers avec la même extension avec *.txt ou toute autre extension dont vous avez besoin.

cd /d "%olddir%" prend la variable sauvegardé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é précédemment le nom de la variable peut être changé en ce que vous souhaitez en modifiant la ligne set olddir=%CD%.

J'espère que cela vous a aidé :D

0 votes

La meilleure façon d'y parvenir est de pushd "folder" && del "filename" & popd .

10voto

user3674709 Points 11

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

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

ceci supprimera le dossier entier appelé software et tous ses fichiers et sous-dossiers.

Assurez-vous de supprimer le bon dossier, car il n'y a pas d'option Oui/Non.

4voto

Sarath Avanavu Points 85

Considérez que les fichiers que vous devez supprimer ont une extension txt et est situé dans l'emplacement D:\My Folder alors vous pouvez utiliser le code ci-dessous dans le fichier bat.

cd "D:\My Folder"
DEL *.txt

-7voto

Ravi Points 1

Dans le code batch, votre chemin ne doit pas contenir d'espace, donc changez le nom de votre dossier de "TEST 100%" à "TEST_100%" et votre nouveau code sera le suivant del " D:\TEST\TEST_100 % \Archive *.TXT"

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

6 votes

Jamais entendu parler de ça. C'est nouveau ? -Sans sarcasme. Il fonctionne avec des espaces comme sans, du moment que vous le mettez entre guillemets.

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