Comment puis-je supprimer plusieurs fichiers à partir d'un fichier de commandes MS-DOS à l'aide d'un générique lorsque le chemin d'accès contient des espaces?

Dire que j'ai un répertoire avec les fichiers suivants: les

Test.chauve-souris
Test_a.txt
Test_b.txt
Test_v1.zip
Test_v2.zip
Test_v3.zip

Je veux supprimer tous les Test_v*.zip tranquillement (pas de messages d'erreur connecté à l'écran). Je peux réaliser cela avec le script suivant:

@ECHO OFF
SET OLD_ZIPS=^
C:\Tmp\Test_v*.txt;^
C:\Tmp\Test_a.txt

ECHO Deleting the following files: %OLD_ZIPS%

FOR %%Y IN (%OLD_ZIPS%) DO (
IF EXIST %%Y (
ECHO  Deleting %%Y
DEL /Q %%Y)
)

PAUSE

Cela fonctionne bien:

Deleting the following files: C:\Tmp\Test_v*.txt;C:\Tmp\Test_a.txt
Deleting "C:\Tmp\Test_v1.txt"
Deleting "C:\Tmp\Test_v2.txt"
Deleting "C:\Tmp\Test_a.txt"
Press any key to continue . . .

Sauf bien sûr, les chemins de fichier contenant des espaces. Ainsi dans l'exemple ci-dessus, si je change C:\Tmp\Test_v*.txt à C:\Tmp with spaces\Test_v*.txt j'obtiens:

Deleting the following files: C:\Tmp test\Test_v*.txt;C:\Tmp test\Test_a.txt
Press any key to continue . . .

Comment puis-je l'arrêter baulking dans les espaces?

Modifier - j'ai essayé des espaces comme par Alex K de réponse (plus un peu plus de débogage) et il semble que peut-être la boucle for n'est pas le fractionnement des choses que j'attends:

@ECHO OFF
SET OLD_ZIPS=^
C:\Tmp test\Test_v*.txt;^
C:\Tmp test\Test_a.txt

ECHO Deleting the following files: %OLD_ZIPS%

FOR %%Y IN (%OLD_ZIPS%) DO (
ECHO  Checking existance of "%%Y"
IF EXIST "%%Y" (
ECHO  Deleting "%%Y"
DEL /Q "%%Y")
)

PAUSE

..donne moi:

Deleting the following files: C:\Tmp test\Test_v*.txt;C:\Tmp test\Test_a.txt
 Checking existance of "C:\Tmp"
 Checking existance of "C:\Tmp"
 Checking existance of "test\Test_a.txt"
InformationsquelleAutor Jon Cage | 2012-09-19