Pourrais-tu essayer le code sur ta machine dans un dossier avec quelques .txt et lui donner comme valeur 2009 pour voir si il les supprime
Version imprimable
Pourrais-tu essayer le code sur ta machine dans un dossier avec quelques .txt et lui donner comme valeur 2009 pour voir si il les supprime
mais je ne comprend pas pourquoi tester la date des fichier si de toute facon tu veut tous les supprimer, explique moi mieu et exactement se que tu veut faire.
de plus si aucun fichier n'est antérieur a 2009 aucun fichier ne sera supprimer puisque la commande del n'agi que si un fichier antérieur a 2009 et détécter
et tu sais dans cette boucle:
%~1 récupére le chemin du répertoire glisser sur la batchCode:for /r "%~1\" %%i in (*.txt) do set VrChmFch=%%i& set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
nan c'est bon ça a marcher mais lorsque je met directement la valeur 2009 dans le code au lieu de taper 2009 dans la console lorsque le programme le demande.
Il y a juste un soucis, c'est que quand il a supprimé tous le fichiers .txt il affiche dans la console :
Mon code est maintenant celui-ci:Code:
1
2 impossible de trouver c:\documents and......\*.txt
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 @echo off echo Cet outil va supprimer les fichiers non utilisés jusqu'à l'année 2009 for /r "%~1\" %%i in (*.txt) do set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression goto finsuppression :suppression if %VrDatFch:~6,4% leq 2009 del "%~dp0\*.txt" /q /f goto :eof :finsuppression :fin echo. echo Fin du programme, appuyez sur une touche pour quitter l'application Pause > NUL
mais alor dit moi pourquoi tu veut tester la date des fichiers si tu veut tous les supprimer en fin de compte ??????
explique moi ca ??????
:question::question::question::question::question::question:
parce que la tu supprime même les fichiers récents
le je ne pige pas :?
Là j'ai mis 2009 pour tester avant de le faire vraiment là ou je souhaites les supprimer.
En fait, je souhaites supprimer des fichiers dans un répertoire sur une machine qui ne plus booter sur win95 (donc dans le DOS) car l'espace disque devient de plus en plus petit et supprimer les fichiers à la main mettrais je sais pas 20 ans peut être.
Donc si je supprime tous ceux des années d'avant, cela me va.
!!! Attention !!! oui mais la avec le code tu les supprime tous les fichier même les fichiers récents
en plu le script teste les fichier du répertoire glisser sur la batch, (qui n'est pas forcément le répertoire courant), par contre tu supprime les fichier du répertoire courant
si tu veut tou faire dans le répertoire courant fait comme ca:
Citation:
@echo off
echo Cet outil va supprimer les fichiers non utilisés jusqu'à l'année 2009
for /r "%cd%\" %%i in (*.txt) do set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
goto finsuppression
:suppression
if %VrDatFch:~6,4% leq 2009 del "%~dp0\*.txt" /q /f
goto :eof
:finsuppression
:fin
echo.
echo Fin du programme, appuyez sur une touche pour quitter l'application
Pause > NUL
Haha c'est ce que je viens de comprendre là avant de lire ton nouveau post!!!
comment faire autrement ?
moi je dirait comme ca:
et la tu ne supprime que le fichier de date antérieurCitation:
@echo off
echo Cet outil va supprimer les fichiers non utilisés jusqu'à l'année 2009
for /r "%cd%\" %%i in (*.txt) do set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
goto finsuppression
:suppression
if %VrDatFch:~6,4% leq 2009 del "%VrNamFch%" /q /f
goto :eof
:finsuppression
:fin
echo.
echo Fin du programme, appuyez sur une touche pour quitter l'application
Pause > NUL
En fait le mieux serait de mettre le chemin en dur et pas le répertoire courant. Mais de supprimer seulement les fichiers antérieur à la date que je mettrais.
alor:
Citation:
@echo off
echo Cet outil va supprimer les fichiers non utilisés jusqu'à l'année 2009
set vrRepCible=C:\ton\répertoire
for /r "%vrRepCible%\" %%i in (*.txt) do set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
goto finsuppression
:suppression
if %VrDatFch:~6,4% leq 2009 del "%VrNamFch%" /q /f
goto :eof
:finsuppression
:fin
echo.
echo Fin du programme, appuyez sur une touche pour quitter l'application
Pause > NUL
Ouais c'est niquel ça marche perfecto maintenant.
Je vais essayé de mettre la date mais pas en dur cette fois-ci. L'utilisateur devra le faire lorsque le programme le demandera.
merci pour ton aide je post si j'ai d'autres difficultés.
en fait tu t'est pris la tête y avait pas grand chose a modifier dans le code de base que j'avai poster sur l'e lien que ta doner guardian :D
tu a failli faire un grose erreur en supprimmant tous les fichiers, je ne comprenner plus se que tu voulai faire ;)
Ouais c'est vrai mais maintenant j'ai bien saisi comment faire.
Je ne suis qu'un newbi en batch :lol:
Je continuerais ceci plus tard, j'ai encore du travail à finir.
Merci KokoTis
salut,
:alerte:
Une donnée des plus importante n'a pas été prise en considération pendant tous vos postes.
Il doit s'agir de la version Ms-Dos de Windows, c'est-à-dire la 7.0 ou la 7.1
Alors attention à ne pas dépenser inutilement votre énergie à développer du code incompatible.
;)
ah ben je ne connait pas win 95 donc je savaist pas, bon ben on verra bien si ca marche.
D'apré toi qu'est ce qui serai imcompatible ?
Voilà par exemple l'aide en ligne sur la commande FOR pour les systèmes Win16 et Win32noNTbased
Cette information parle d'elle-même en ce qui concerne l'incompatibilité des scripts que vous avez produits jusqu'ici.Code:
1
2
3
4
5
6
7 FOR %variable IN (ens) DO commande [param] %variable Paramètre remplaçable. (ens) Ensemble de fichiers séparés par des espaces. Caractères génériques permis. commande Commande … exécuter pour chaque fichier. param Paramètres ou commutateurs pour la commande spécifiée.
De même, les syntaxes tel que
ne sont pas permises sur ces systèmes.Citation:
%VrDatFch:~6,4%
Ainsi, pour arriver à ses fins, il faut penser tout autrement et ne pas perdre de vue les limitations imposées par Ms-Dos. ;)
ok mais la je ne saurai pas comment faire alor