Batch suppression de fichiers
Résolu/Fermé
Jul-ACTH
Messages postés
25
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
22 juillet 2008
-
19 juil. 2008 à 14:07
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 20 juil. 2008 à 21:20
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 20 juil. 2008 à 21:20
A voir également:
- Batch suppression de fichiers
- Forcer suppression fichier - Guide
- Fichier batch - Guide
- Explorateur de fichiers - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
10 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
19 juil. 2008 à 17:10
19 juil. 2008 à 17:10
Bonjour,
En gros, ça donne ça:
SET FICHIER=%1
FOR /F %%I IN (%FICHIER%) DO DEL %%I
Je ne comprends pas très bien ce que tu souhaites faire :
Que contient (ou doit contenir) le paramètre de passation %1 ? Le chemin et le nom du fichier à annuler ?
Dans ce cas à quoi sert la boucle FOR ?
Qu'est-ce que ce fichier %FICHIER% dans cette même boucle FOR ? Au test on reçoit le message :
Le système ne peut trouver le fichier ... (où ... est la chaîne (tronquée) de caractères saisis en paramètre)
Peux-tu donner un exemple concret ?
En gros, ça donne ça:
SET FICHIER=%1
FOR /F %%I IN (%FICHIER%) DO DEL %%I
Je ne comprends pas très bien ce que tu souhaites faire :
Que contient (ou doit contenir) le paramètre de passation %1 ? Le chemin et le nom du fichier à annuler ?
Dans ce cas à quoi sert la boucle FOR ?
Qu'est-ce que ce fichier %FICHIER% dans cette même boucle FOR ? Au test on reçoit le message :
Le système ne peut trouver le fichier ... (où ... est la chaîne (tronquée) de caractères saisis en paramètre)
Peux-tu donner un exemple concret ?
Jul-ACTH
Messages postés
25
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
22 juillet 2008
3
19 juil. 2008 à 19:07
19 juil. 2008 à 19:07
Bonjour,
Ce script n'est qu'un copier-coller de ce que j'ai pu trouver par ailleurs (chut).
Donc pour son interpretation précise... MAIS, ça fait ce que je veux. En fin presque.
Je pars d'un fichier texte qui contient plus de 55000 lignes, qui sont le nom complet des fichiers que je veux supprimer.
Un exemple d'une ligne de ce fichier:
C:\ARCHI\CAO\3D bibliothque Auto CAD & DS MAX\3Ds max bibliotheque\cours 3d max\Introduction to Gradient Ramp maps.doc
Auquel j'ai essayé dans un deuxième temps de rajouter des guillemets en début et fin de ligne, avec le même résultat:
C:\>reparation traitement.txt
C:\>SET FICHIER = traitement.txt
C:\>FOR /F %I IN (traitement.txt) DO DEL %I
C:\>DEL "C:\ARCHI\CAO\3D
Impossible de trouver "C:\ARCHI\CAO\3D
Voilà où j'en suis maintenant, le nom du fichier à traiter est tronquer (à cause d'un espace, ce serait possible? Ou alors la longueur?).
Cordialement,
Jul
Ce script n'est qu'un copier-coller de ce que j'ai pu trouver par ailleurs (chut).
Donc pour son interpretation précise... MAIS, ça fait ce que je veux. En fin presque.
Je pars d'un fichier texte qui contient plus de 55000 lignes, qui sont le nom complet des fichiers que je veux supprimer.
Un exemple d'une ligne de ce fichier:
C:\ARCHI\CAO\3D bibliothque Auto CAD & DS MAX\3Ds max bibliotheque\cours 3d max\Introduction to Gradient Ramp maps.doc
Auquel j'ai essayé dans un deuxième temps de rajouter des guillemets en début et fin de ligne, avec le même résultat:
C:\>reparation traitement.txt
C:\>SET FICHIER = traitement.txt
C:\>FOR /F %I IN (traitement.txt) DO DEL %I
C:\>DEL "C:\ARCHI\CAO\3D
Impossible de trouver "C:\ARCHI\CAO\3D
Voilà où j'en suis maintenant, le nom du fichier à traiter est tronquer (à cause d'un espace, ce serait possible? Ou alors la longueur?).
Cordialement,
Jul
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
19 juil. 2008 à 20:29
19 juil. 2008 à 20:29
Bonsoir,
Essaie de cette maniière :
SET FICHIER=%1
FOR /F "tokens=1,1* delims= " %%I IN (%FICHIER%) DO ( echo %%I )
rem (remplacer echo par DEL apres tests)
Essaie de cette maniière :
SET FICHIER=%1
FOR /F "tokens=1,1* delims= " %%I IN (%FICHIER%) DO ( echo %%I )
rem (remplacer echo par DEL apres tests)
Jul-ACTH
Messages postés
25
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
22 juillet 2008
3
19 juil. 2008 à 21:07
19 juil. 2008 à 21:07
Ok, je teste.
Un grand merci de toute manière.
Un grand merci de toute manière.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Jul-ACTH
Messages postés
25
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
22 juillet 2008
3
19 juil. 2008 à 21:20
19 juil. 2008 à 21:20
Sniff....
Maintenant, j'ai en réponse à:
C:\>reparation test.txt
C:\>SET FICHIER = test.txt
C:\>FOR /F "tokens=1,1* delims= " %I IN (test.txt) DO (echo %I )
C:\>(echo "C:\ARCHI\CAO\3D )
"C:\ARCHI\CAO\3D
Maintenant, j'ai en réponse à:
C:\>reparation test.txt
C:\>SET FICHIER = test.txt
C:\>FOR /F "tokens=1,1* delims= " %I IN (test.txt) DO (echo %I )
C:\>(echo "C:\ARCHI\CAO\3D )
"C:\ARCHI\CAO\3D
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
19 juil. 2008 à 22:16
19 juil. 2008 à 22:16
Pour une raison qui m'échappe pour le moment il faut ajouter un espace à celui déjà existant situé après le signe = du paramètre ".. . . .delims=
Jul-ACTH
Messages postés
25
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
22 juillet 2008
3
20 juil. 2008 à 10:27
20 juil. 2008 à 10:27
Bonjour,
C'est bel et bien le caractère espace qui pose problème.
Il y a-t-il un moyen de vérifier la conformité du fichier texte passé en paramètre?
Cordialement,
Julien
C'est bel et bien le caractère espace qui pose problème.
Il y a-t-il un moyen de vérifier la conformité du fichier texte passé en paramètre?
Cordialement,
Julien
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
20 juil. 2008 à 16:02
20 juil. 2008 à 16:02
Bonjour,
Il est possible d'effectuer (Il s'agit de suggestions techniques qui n'ont pas été testées en réel ou qui, si elles ont été testées, ne l'ont pas été sur ce cas spécifique car reprises sur un existant):
- D'autres tests de conformité peuvent bien sûr être effectués en cours de traitement. Exemple test de présence de chacun des fichiers (si la présence de chacun d'eux est obligatoire bien entendu) dont le nom est extrait du fichier principal.
Il est possible d'effectuer (Il s'agit de suggestions techniques qui n'ont pas été testées en réel ou qui, si elles ont été testées, ne l'ont pas été sur ce cas spécifique car reprises sur un existant):
- Un contrôle de présence du paramètre de passation : IF %1 == "" ( ECHO ......... MESSAGE D'ANOMALIE GOTO :EOF ) - Un contrôle de présence du fichier : IF NOT EXIST "%FICHIER%" ( ECHO ......... MESSAGE D'ANOMALIE GOTO :EOF ) - Un contrôle de conformité sur le nom et/ou l'extension et/ou . . . . . . . : rem Moyens pour extraire les données utiles aux différents contrôles possibles : FOR %%I IN (%FICHIER%) DO ( SET "nom_sans_extension=%%~nI" rem Remplacer echo par un test de conformité IF NOT nom_sans_extension == ... echo !nom_sans_extension! SET "nom_avec_extension=%%~nxI" rem Remplacer echo par un test de conformité IF NOT nom_avec_extension == ... echo !nom_avec_extension! rem voir liste ci-dessous ( Doc. en ligne HELP FOR 2ème écran) SET ................................ ) %~I - étend %I en supprimant les guillemets (") %~fI - étend %I en nom de chemin d'accès reconnu %~dI - étend %I en lettre de lecteur uniquement %~pI - étend %I en chemin d'accès uniquement %~nI - étend %I en nom de fichier uniquement %~xI - étend %I en extension de fichier uniquement %~sI - chemin étendu contenant uniquement des noms courts %~aI - étend %I en attributs du fichier %~tI - étend %I en date/heure du fichier %~zI - étend %I en taille du fichier %~$PATH:I - parcourt les répertoires de la variable d'environnement PATH et étend %I en nom du premier fichier reconnu trouvé. Si le nom de la variable d'environnement n'est pas défini ou que le fichier n'est pas trouvé par la recherche, alors ce modificateur étend en chaîne vide Vous pouvez combiner les modificateurs pour obtenir des résultats composés %~dpI - étend %I en lettre de lecteur et chemin d'accès uniquemen %~nxI - étend %I en nom de fichier et extension uniquement %~fsI - étend %I en nom de chemin complet avec noms courts uniquement %~dp$PATH:i - parcourt les répertoires listés dans la variable d'environnement PATH à la recherche de %I et étend en lettre de lecteur du premier trouvé. %~ftzaI - étend %I en DIR comme ligne en sortie - Un comptage des enregistrements pour contrôle en fin de traitement : SET /A CPT_ENREG = 0 rem Utiliser la boucle FOR existante : FOR /F "tokens=1,1* delims= " %%I IN (%FICHIER%) DO ( SET /A CPT_ENREG += 1 ........................... echo %%I ) rem en fin de boucle (de traitement) : IF %CPT_ENREG% == 0 ( ECHO ......... MESSAGE D'ANOMALIE GOTO :EOF )
- D'autres tests de conformité peuvent bien sûr être effectués en cours de traitement. Exemple test de présence de chacun des fichiers (si la présence de chacun d'eux est obligatoire bien entendu) dont le nom est extrait du fichier principal.
Jul-ACTH
Messages postés
25
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
22 juillet 2008
3
20 juil. 2008 à 19:22
20 juil. 2008 à 19:22
Bonjour,
Merci, c'est ce genre de tests que je cherchais.
Entre temps, j'ai rééssayé de passer ce petit script en supprimant l'espace après le signe = de delims= et....banco. Comme quoi ça tient des fois à pas grand chose. Un grand merci pour ton aide, en espérant avoir l'occasion de pouvoir te renvoyer l'ascenseur un jour.
Cordialement,
Jul
Merci, c'est ce genre de tests que je cherchais.
Entre temps, j'ai rééssayé de passer ce petit script en supprimant l'espace après le signe = de delims= et....banco. Comme quoi ça tient des fois à pas grand chose. Un grand merci pour ton aide, en espérant avoir l'occasion de pouvoir te renvoyer l'ascenseur un jour.
Cordialement,
Jul
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
20 juil. 2008 à 21:20
20 juil. 2008 à 21:20
Bonsoir,
En effet il faut supprimer les espaces après delims = . J'ai pourtant déjà rencontré ce problème, il m'est revenu à l'esprit à la lecture de ton dernier message. Comme quoi les échanges ça a du bon !
A+ j'espère,
En effet il faut supprimer les espaces après delims = . J'ai pourtant déjà rencontré ce problème, il m'est revenu à l'esprit à la lecture de ton dernier message. Comme quoi les échanges ça a du bon !
A+ j'espère,