Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
536 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Suppression fichier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Suppression fichier

n°2023476
shining666​fr2
Posté le 17-09-2010 à 10:40:53  profilanswer
 

Bonjour à tous,
 
Voici mon programme. Il est presque fini, il me manque qu’une petite commande et j’ai besoin de votre aide.
 
J’ai des fichiers avec l’extension .bak que je dois supprimer. J’aimerais aussi créer un fichier d’archive me disant qu’est ce qui a été supprimé et quand.
 
Tout ça fonctionne j’aimerais juste ajouter dans ce fichier (un txt tout bête) la taille de mon fichier avant la suppression et la taille après suppression.
 
Voici le code :
 
 
@echo off
color 3f
echo.
echo.
echo.
echo ------    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿    ------
echo ------    ³                                                         ³    ------
echo ------    ³                                                         ³    ------
echo ------    ³ BIENVENUE DANS LE PROGRAMME DE SUPPRESSION DES FICHIERS ³    ------
echo ------    ³                        BAK                              ³    ------
echo ------    ³                                                         ³    ------
echo ------    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ    ------
echo.
echo.
 
echo.------ >> Historiquebak.txt
echo.------ >> Historiquebak.txt
echo ------    ³        [-[ DATE : %date% %time% ]-]            ³    ------ >> Historiquebak.txt
pause
echo.------ >> Historiquebak.txt
echo.------ >> Historiquebak.txt
echo.
echo.
ECHO VOULEZ VOUS SUPPRIMER LES FICHIERS BAK PRESENT DANS CE REPERTOIRE ?
echo.
ECHO 1) OUI
echo.
ECHO 2) NON
ECHO.
rem variable d'environnement (paramètre /P obligatoir)
set /p choix= VEUILLEZ ENTRER UN CHOIX S IL VOUS PLAIT (1 ou 2) :
 
if not %choix%=='' set choix=%choix:~0,1%
if %choix%==1 goto OUI
if %choix%==2 goto NON
 
retour au menu principale a cause d'un mauvais choix ou une faute de frappe
echo %choix% N EST PAS CORRECT !
goto menu
 
 
:OUI
 
del /s *.bak >> Historiquebak.txt
 
:NON
exit
 
 
 
Et voici le fichier txt créer
 
------  
------  
------    ³        [-[ DATE : 17/09/2010 10:39:31,61 ]-]            ³    ------  
------  
------  
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de nouveau dossier\gdfgd.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de nouveau dossier\Nouveau dossier\fdgdf.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de nouveau dossier\Nouveau dossier\Nouveau dossier\fdsfsd.bak
 
Il me faudrait juste apres la date la taille du repertoire source et à la fin la taille apres suppression.
 
J'espere que vous pourrez m'aider. Merci d'avance

mood
Publicité
Posté le 17-09-2010 à 10:40:53  profilanswer
 

n°2023504
aigles
Posté le 17-09-2010 à 15:14:56  profilanswer
 

Tu peux ajouter :


echo "Répertoire avant suppressions : >> Historiquebak.txt
dir | find "fichier(s)" >> Historiquebak.txt


 
Jean-Pierre.

n°2023523
shining666​fr2
Posté le 17-09-2010 à 16:30:08  profilanswer
 

Ca me semble pas mal du tout je vais faire le test et je te tiens informé. Merci

n°2023525
shining666​fr2
Posté le 17-09-2010 à 16:38:19  profilanswer
 

Voila je viens de tester et ça fonctionne très bien
 
------    ³        [-[ DATE : 17/09/2010 16:36:20,89 ]-]            ³    ------  
 
 
REPERTOIRE AVANT SUPPRESSION :  
 
               4 fichier(s)        1ÿ776ÿ345 octets
 
 
 
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de Copie de Copie de nouveau dossier\gdfgd.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de Copie de Copie de nouveau dossier\Pa50SD_os_v101.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de Copie de Copie de nouveau dossier\Nouveau dossier\fdgdf.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de Copie de Copie de nouveau dossier\Nouveau dossier\Plastur' J.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de Copie de Copie de nouveau dossier\Nouveau dossier\Nouveau dossier\fdsfsd.bak
Fichier supprim‚ - C:\Users\C\Desktop\Copie de Copie de Copie de Copie de Copie de nouveau dossier\Nouveau dossier\Nouveau dossier\PCM AGP 07JUILL10.bak
 
REPERTOIRE APRES SUPPRESSION :  
 
               2 fichier(s)            3ÿ537 octets
 
 
-------------------------------------------------------------------------------------------------------------------------  
 
Juste pour chipoter (1ÿ776ÿ345 octets) on ne peut pas l'avoir mieux (genre en Mo) ou éviter le ÿ....... ?  
 
Encore merci pour l'aide

n°2023802
aigles
Posté le 20-09-2010 à 10:54:30  profilanswer
 

Le caractère ÿ est le séparateur de milliers, je ne sais pas trop comment tu obtiens ça (à l'affichage c'est un espace).
Tu peux le supprimer en ajoutant l'option /-C à ta commande DIR.
 
Par contre je n'ai pas de solution (simple) pour l'affichage en Mo
 
 
Jean-Pierre.

n°2023810
shining666​fr2
Posté le 20-09-2010 à 11:16:22  profilanswer
 

Parfait ça fonctionne super bien. Merci beaucoup. Je te pose juste la question mais toujours pareil c'est pour chipotter ^^. Si tu sais ca n'a pas d'importance car j'ai deja mis en fonction le programme.
 
La taille m'est donnée que pour le repertoire racine est-ce qu'il y aurait une commande pour avoir aussi la taille des sous repertoire présent dans celui-ci ?
 
Encore mille merci

n°2023817
aigles
Posté le 20-09-2010 à 11:36:05  profilanswer
 

Pour avoir la taille totale sous-répertoires compris, il faut ajouter l'option /S à la commande DIR.
L'inconvénient est que tu vas afficher les infos pour tous les répertoires , par exemple :

U:\TEMP>DIR /S /-C | FIND "fichier(s)"
             111 fichier(s)         20379032 octets
               1 fichier(s)              493 octets
               1 fichier(s)              453 octets
               1 fichier(s)              453 octets
               0 fichier(s)                0 octets
               0 fichier(s)                0 octets
               3 fichier(s)             6680 octets
               0 fichier(s)                0 octets
               2 fichier(s)              548 octets
               1 fichier(s)              535 octets
               0 fichier(s)                0 octets
               0 fichier(s)                0 octets
               4 fichier(s)               96 octets
              24 fichier(s)          6357981 octets
               4 fichier(s)          5433162 octets
               0 fichier(s)                0 octets
               0 fichier(s)                0 octets
               2 fichier(s)            50887 octets
               3 fichier(s)             1504 octets
               0 fichier(s)                0 octets
               1 fichier(s)                5 octets
               0 fichier(s)                0 octets
               0 fichier(s)                0 octets
               6 fichier(s)            74169 octets
               8 fichier(s)            99276 octets
               6 fichier(s)               36 octets
               5 fichier(s)               30 octets
             183 fichier(s)         32405340 octets


J'ai écrit un petit sous-programme qui affiche le résultat global en octets, Ko ou Mo suivant la taille :

CALL :PrintDirInfos U:\TEMP
GOTO :EOF
 
:PrintDirInfos
   SETLOCAL
   SET dir=%~f1
   FOR /F "tokens=1-4" %%i IN ('CMD /C "DIR /-C /S %dir% | FINDstr fichier"') DO (
      SET nb=%%i
      SET taille=%%k
   )
   SET t=%taille%
   SET unit=octet(s)
   IF %taille% GEQ 1048576 (
      SET /A "t=(%taille%+524288)/1048576"
      SET unit=Mo
   ) ELSE IF %taille% GEQ 1024 (
      SET /A "t=(%taille%+512)/1024"
      SET unit=Ko
   )
   ECHO %nb% fichier(s) %t% %unit%
   
   GOTO :EOF    

Le résultat est :

183 fichier(s) 31 Mo


 
Jean-Pierre.

n°2023823
shining666​fr2
Posté le 20-09-2010 à 12:00:39  profilanswer
 

Ah excellent la commande S. Par contre le sous programme je suis paumé je sais pas comment l'intégrer. Voici a quoi ressemble le mien avec les modifs:
 
echo.
echo. >> Historiquebak.txt
echo.>> Historiquebak.txt
echo ------    ³        [-[ DATE : %date% %time% ]-]            ³    ------ >> Historiquebak.txt
echo. >> Historiquebak.txt
echo. >> Historiquebak.txt
echo REPERTOIRE AVANT SUPPRESSION : >> Historiquebak.txt
echo. >> Historiquebak.txt
dir / S /-C| find "fichier(s)" >> Historiquebak.txt  
pause
echo. >> Historiquebak.txt
echo. >> Historiquebak.txt
echo.
echo.
ECHO VOULEZ VOUS SUPPRIMER LES FICHIERS BAK PRESENT DANS CE REPERTOIRE ?
echo.
ECHO 1) OUI
echo.
ECHO 2) NON
ECHO.
rem variable d'environnement (paramètre /P obligatoir)
set /p choix= VEUILLEZ ENTRER UN CHOIX S IL VOUS PLAIT (1 ou 2) :
 
if not %choix%=='' set choix=%choix:~0,1%
if %choix%==1 goto OUI
if %choix%==2 goto NON
 
retour au menu principale a cause d'un mauvais choix ou une faute de frappe
echo %choix% N EST PAS CORRECT !
goto menu
 
 
:OUI
echo. >> Historiquebak.txt
 
del /s *.bak >> Historiquebak.txt
echo.>> Historiquebak.txt
echo REPERTOIRE APRES SUPPRESSION : >> Historiquebak.txt
echo. >> Historiquebak.txt
dir /S /-C| find "fichier(s)" >> Historiquebak.txt  
echo.>> Historiquebak.txt
echo.>> Historiquebak.txt
echo ------------------------------------------------------------------------------------------------------------------------- >> Historiquebak.txt
echo.>> Historiquebak.txt
:NON
exit
 
En tout les cas encore merci tu m'auras beaucoup aidé.

n°2023833
aigles
Posté le 20-09-2010 à 13:31:21  profilanswer
 

Ton code avec l'utilisation de mon sous-programme :

echo.
echo. >> Historiquebak.txt
echo.>> Historiquebak.txt
echo ------    ³        [-[ DATE : %date% %time% ]-]            ³    ------ >> Historiquebak.txt
echo. >> Historiquebak.txt
echo. >> Historiquebak.txt
echo REPERTOIRE AVANT SUPPRESSION : >> Historiquebak.txt
echo. >> Historiquebak.txt
 
CALL :PrintDirInfos >> Historiquebak.txt  
 
pause
echo. >> Historiquebak.txt
echo. >> Historiquebak.txt
echo.
echo.
ECHO VOULEZ VOUS SUPPRIMER LES FICHIERS BAK PRESENT DANS CE REPERTOIRE ?
echo.
ECHO 1) OUI
echo.
ECHO 2) NON
ECHO.
rem variable d'environnement (paramètre /P obligatoir)
set /p choix= VEUILLEZ ENTRER UN CHOIX S IL VOUS PLAIT (1 ou 2) :
 
if not %choix%=='' set choix=%choix:~0,1%
if %choix%==1 goto OUI
if %choix%==2 goto NON
 
retour au menu principale a cause d'un mauvais choix ou une faute de frappe
echo %choix% N EST PAS CORRECT !
goto menu
 
 
:OUI
echo. >> Historiquebak.txt
 
del /s *.bak >> Historiquebak.txt
echo.>> Historiquebak.txt
echo REPERTOIRE APRES SUPPRESSION : >> Historiquebak.txt
echo. >> Historiquebak.txt
 
CALL :PrintDirInfos >> Historiquebak.txt  
 
echo.>> Historiquebak.txt
echo.>> Historiquebak.txt
echo ------------------------------------------------------------------------------------------------------------------------- >> Historiquebak.txt
echo.>> Historiquebak.txt
:NON
exit  
 
:PrintDirInfos
   SETLOCAL
   SET dir=%~f1
   FOR /F "tokens=1-4" %%i IN ('CMD /C "DIR /-C /S %dir% | FINDstr fichier"') DO (
      SET nb=%%i
      SET taille=%%k
   )
   SET t=%taille%
   SET unit=octet(s)
   IF %taille% GEQ 1048576 (
      SET /A "t=(%taille%+524288)/1048576"
      SET unit=Mo
   ) ELSE IF %taille% GEQ 1024 (
      SET /A "t=(%taille%+512)/1024"
      SET unit=Ko
   )
   ECHO %nb% fichier(s) %t% %unit%
   
   GOTO :EOF    


 
Une petite astuce pour plus de clarté pour une suite de commandes dont la sortie est à rediriger dans un fichier :
Le code suivant :

echo. >> Historiquebak.txt
echo.>> Historiquebak.txt
echo ------    ³        [-[ DATE : %date% %time% ]-]            ³    ------ >> Historiquebak.txt
echo. >> Historiquebak.txt
echo. >> Historiquebak.txt
echo REPERTOIRE AVANT SUPPRESSION : >> Historiquebak.txt
echo. >> Historiquebak.txt
 
CALL :PrintDirInfos >> Historiquebak.txt  
 
pause
echo. >> Historiquebak.txt
echo. >> Historiquebak.txt

peut être ecrit :

(
   echo.  
   echo.
   echo ------    ³        [-[ DATE : %date% %time% ]-]            ³    ------
   echo.  
   echo.  
   echo REPERTOIRE AVANT SUPPRESSION :  
   echo.  
 
   CALL :PrintDirInfos  
 
   pause 1>&3
   echo.  
   echo.  
) >> Historiquebak.txt


 
Jean-Pierre.

n°2023984
shining666​fr2
Posté le 20-09-2010 à 21:22:53  profilanswer
 

Mille merci pour toutes ton aide voici un programme parfait et surtout merci pour les tuyaux.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Suppression fichier

 

Sujets relatifs
Suppression du fichier desktop.htt par VBSsuppression structure dans fichier
Suppression d'ancien fichier en PERLsuppression doublons dans fichier texte
Bloquer la suppression d'un fichier sous WinXPsuppression de dossiers avec fichier txt en paramètre
Recherche/suppression fichier batchFichier XML Ajout/Suppression de ligne
Suppression d'un nombre de fichier donnée[résolu] suppression d'une ligne dans un fichier txt
Plus de sujets relatifs à : Suppression fichier


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR