Exploitation des noms de réptertoires longs
Posté : 08 févr. 2009 19:12
Bonjour,
Je me permets de vous solliciter sur le probème suivant : exploitation de fichier avec un nom long.
J'ai cherché dans la FAQ et sur le site mais je ne suis pas arrivé à trouver une solution (peut-être trop néophyte sur le sujet).
Problème : l'objectif étant de supprimer les fichiers contenus dans des sous répertoires.
Le script joint réalise les actions suivantes :
1. Lister les sous répertoires d'un répertoire donné
2. Constituer un fichier contenant la liste suivant le format chemin\sous-repertoire
3. Lecture du fichier et suppression des fichiers du fichier précédemment constituer.
Prenons un exemple :
1. Liste les sous répertoires de C:\Tmp\01. Dev
Imaginons le résultat :
Toto (sous répertoire)
Tutu (sous répertoire)
Titi (sous répertoire)
2. Création du fichier C:\Tmp\ListeRepIni.txt contenant les sous répertoires
3. Création du fichier C:\Tmp\ListeRepFinal.txt contenant la liste les sous répertoires suivant le format :
"Chemin\sous répertoire"
3. Suppression de tous les fichiers des sous répertoires listés par la commande DEL
Etant donné que le répertoire "01. Dev" a un espace, une erreur apparait, c'est la raison pour laquelle ajout de " pour réaliser la commande DEL
Néanmoins, je n'arrive pas à trouver une solution pour executer la ligne 23 à cause de l'espace.
Pourriez-vous me dire comment je peux executer la commande DEL avec des noms de fichiers longs en relisant un fichier ?
Merci d'avance de votre aide,
Cordialement.
Elgringo 123456
Ps : je fais un copier / coller du script car je n'arrive pas joindre le fichier.bat
REM @echo off
echo .
echo ###################################################
echo Répertoire : Nettoyage des sous répertoires
echo ###################################################
echo .
REM Initialisation de l'environnement
Set rep_src="C:\Tmp\01. Dev"
Set ListeInit=C:\Tmp\ListeRepInit.txt
Set ListeFinal=C:\Tmp\ListeRepFinal.txt
IF EXIST %ListeInit% DEL /S /Q %ListeInit%
IF EXIST %ListeFinal% DEL /S /Q %ListeFinal%
if NOT EXIST C:\Tmp mkdir C:\Tmp
dir %rep_src% /B > %ListeInit%
REM Liste le contenu du fichier - Suppression des "
FOR /f %%a IN (%ListeInit%) DO (echo %rep_src:~1,-1%\%%a >> %ListeFinal%)
PAUSE
FOR /f %%a IN (%ListeFinal%) DO (DEL echo "%%a\*.*")
PAUSE
REM DEL %ListeInit%
REM DEL %ListeFinal%
echo ON
Je me permets de vous solliciter sur le probème suivant : exploitation de fichier avec un nom long.
J'ai cherché dans la FAQ et sur le site mais je ne suis pas arrivé à trouver une solution (peut-être trop néophyte sur le sujet).
Problème : l'objectif étant de supprimer les fichiers contenus dans des sous répertoires.
Le script joint réalise les actions suivantes :
1. Lister les sous répertoires d'un répertoire donné
2. Constituer un fichier contenant la liste suivant le format chemin\sous-repertoire
3. Lecture du fichier et suppression des fichiers du fichier précédemment constituer.
Prenons un exemple :
1. Liste les sous répertoires de C:\Tmp\01. Dev
Imaginons le résultat :
Toto (sous répertoire)
Tutu (sous répertoire)
Titi (sous répertoire)
2. Création du fichier C:\Tmp\ListeRepIni.txt contenant les sous répertoires
3. Création du fichier C:\Tmp\ListeRepFinal.txt contenant la liste les sous répertoires suivant le format :
"Chemin\sous répertoire"
3. Suppression de tous les fichiers des sous répertoires listés par la commande DEL
Etant donné que le répertoire "01. Dev" a un espace, une erreur apparait, c'est la raison pour laquelle ajout de " pour réaliser la commande DEL
Néanmoins, je n'arrive pas à trouver une solution pour executer la ligne 23 à cause de l'espace.
Pourriez-vous me dire comment je peux executer la commande DEL avec des noms de fichiers longs en relisant un fichier ?
Merci d'avance de votre aide,
Cordialement.
Elgringo 123456
Ps : je fais un copier / coller du script car je n'arrive pas joindre le fichier.bat
REM @echo off
echo .
echo ###################################################
echo Répertoire : Nettoyage des sous répertoires
echo ###################################################
echo .
REM Initialisation de l'environnement
Set rep_src="C:\Tmp\01. Dev"
Set ListeInit=C:\Tmp\ListeRepInit.txt
Set ListeFinal=C:\Tmp\ListeRepFinal.txt
IF EXIST %ListeInit% DEL /S /Q %ListeInit%
IF EXIST %ListeFinal% DEL /S /Q %ListeFinal%
if NOT EXIST C:\Tmp mkdir C:\Tmp
dir %rep_src% /B > %ListeInit%
REM Liste le contenu du fichier - Suppression des "
FOR /f %%a IN (%ListeInit%) DO (echo %rep_src:~1,-1%\%%a >> %ListeFinal%)
PAUSE
FOR /f %%a IN (%ListeFinal%) DO (DEL echo "%%a\*.*")
PAUSE
REM DEL %ListeInit%
REM DEL %ListeFinal%
echo ON