[BATCH] Script de Sauvegarde incrémentielle!!
Fermé
Slam
-
18 oct. 2010 à 14:05
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 19 oct. 2010 à 15:31
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 19 oct. 2010 à 15:31
A voir également:
- [BATCH] Script de Sauvegarde incrémentielle!!
- Logiciel sauvegarde incrémentielle gratuit - Guide
- Script vidéo youtube - Guide
- Fichier batch - Guide
- Sauvegarde android - Guide
- Sauvegarde facile - Télécharger - Sauvegarde
3 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
Modifié par cchristian le 18/10/2010 à 22:25
Modifié par cchristian le 18/10/2010 à 22:25
Bonsoir,
J'ai récupéré ça (%%~zI) dans un de mes programmes, il semble que ce soit ce que tu cherches à faire :
SET /A TailleFichier = 0
FOR %%I IN ("000.bat") DO ( SET /A TailleFichier = %%~zI )
echo taille du fichier 000.bat: %TailleFichier% octets.
(2em Ajout - oubli lors du 1er ajout.) Résultat :
taille du fichier 000.bat: 211 octets.
(1er Ajout - Précision.) Vérification:
En consultant, sous l'explorateur Windows, les propriétés du fichier de test 000.bat j'ai bien 211 octets pour la taille.
Cordialement.
Cchristian.
J'ai récupéré ça (%%~zI) dans un de mes programmes, il semble que ce soit ce que tu cherches à faire :
SET /A TailleFichier = 0
FOR %%I IN ("000.bat") DO ( SET /A TailleFichier = %%~zI )
echo taille du fichier 000.bat: %TailleFichier% octets.
(2em Ajout - oubli lors du 1er ajout.) Résultat :
taille du fichier 000.bat: 211 octets.
(1er Ajout - Précision.) Vérification:
En consultant, sous l'explorateur Windows, les propriétés du fichier de test 000.bat j'ai bien 211 octets pour la taille.
Cordialement.
Cchristian.
Bonjour Cchristian,
Tout d'abord merci de ta réponse, cela me sembel être un bon début puisque cela fonctionne, la taille est bien récupérée par ton expression (en test à part de mon batch de sauvegarde).
Mais maintenant il me faut l'adapter:
- dans ma sauvegarde, je ne connais pas le nom des fichiers à copier ni leur extension, d'où le "*.*" dans le code qui suit.
- ensuite, il y a plusieurs fichiers bien évidemment, penses-tu qu'il est possible d'intégrer un test IF dans cette boucle FOR pour tester la taille de chacun de ces fichiers par rapport à une taille max.
- enfin, la plus grosse partie ... intégrer tout cela à mon premier script dans le xcopy ... ou bien le xcopy qui s'intégrerai dans une de ces boucles, mais il me faudrait alors un moyen de récupérer à chaque fois le nom des fichiers ... A voir
En gros:
Je précise que c'est un test qui ne fonctionne pas à cause du IF ... surement mal écrit syntaxiquement, mais j'ai testé de plusieurs façon et s'il y a plusieurs fichiers dans le dossier, il me récupère la taille du dernier fichier.
Donc il réalise toute la boucle for avant de passer au reste alors qu'il faudrait pouvoir y imbriquer le IF, d'où le test avec les différents noeuds.
En clair ce que je voudrais faire:
J'ai mélangé les langages, mais la compréhension est globale... pour tout dire je débute en BATCH donc même les %%~zI , etc .. je n'ai pas tout compris ^^
Merci de ton aide,
Cordialement
Tout d'abord merci de ta réponse, cela me sembel être un bon début puisque cela fonctionne, la taille est bien récupérée par ton expression (en test à part de mon batch de sauvegarde).
Mais maintenant il me faut l'adapter:
- dans ma sauvegarde, je ne connais pas le nom des fichiers à copier ni leur extension, d'où le "*.*" dans le code qui suit.
- ensuite, il y a plusieurs fichiers bien évidemment, penses-tu qu'il est possible d'intégrer un test IF dans cette boucle FOR pour tester la taille de chacun de ces fichiers par rapport à une taille max.
- enfin, la plus grosse partie ... intégrer tout cela à mon premier script dans le xcopy ... ou bien le xcopy qui s'intégrerai dans une de ces boucles, mais il me faudrait alors un moyen de récupérer à chaque fois le nom des fichiers ... A voir
En gros:
cd "C:\Documents and Settings\%username%\Bureau\testing SET /A TailleFichier = 0 SET /A TailleMax = 150000 SET msg = taille du fichier trop volumineux, copie manuelle nécessaire pour ce fichier dépassant 150 Mo :node FOR %%I IN ("*.*") DO ( SET /A TailleFichier = %%~zI ) goto node1 pause goto end :node1 IF %TailleFichier% >= %TailleMax% echo %msg% :end pause
Je précise que c'est un test qui ne fonctionne pas à cause du IF ... surement mal écrit syntaxiquement, mais j'ai testé de plusieurs façon et s'il y a plusieurs fichiers dans le dossier, il me récupère la taille du dernier fichier.
Donc il réalise toute la boucle for avant de passer au reste alors qu'il faudrait pouvoir y imbriquer le IF, d'où le test avec les différents noeuds.
En clair ce que je voudrais faire:
for %%I In (*.*) Do { TailleFichier = %%~zI; if (TailleFichier >= TailleMax){ echo "Fichier NomFichier trop volumineux, copie manuelle nécéssaire. } else { suite du programme ou xcopy en fonction du NomFichier } }
J'ai mélangé les langages, mais la compréhension est globale... pour tout dire je débute en BATCH donc même les %%~zI , etc .. je n'ai pas tout compris ^^
Merci de ton aide,
Cordialement
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
Modifié par cchristian le 19/10/2010 à 15:38
Modifié par cchristian le 19/10/2010 à 15:38
Bonjour,
J'espère que ce qui suit répondra à tes questions (séquence testée).
rem (!....!) VOIR HELP SET expansion retardée de variables sous l'invite de
rem commandes (dernière page)
SETLOCAL ENABLEdelayedExpansion
SETLOCAL ENABLEextensions
SET /A TailleMax = 15000
rem (%%I) VOIR HELP FOR sous l'invite de commandes dernière page
for %%I In (*.*) Do (
ECHO _
rem %%~nI: VOIR HELP FOR sous l'invite de commandes dernière page
ECHO "Pour Controle en test nom + extension du fichier: %%I: ."
ECHO " ou bien nom seul du fichier: %%~nI."
rem %%~xI: VOIR HELP FOR sous l'invite de commandes dernière page
SET "ExtensFichier=%%~xI"
ECHO "Pour Controle en test extension du fichier %%I: !ExtensFichier!."
rem %%~zI: VOIR HELP FOR sous l'invite de commandes dernière page
SET /A TailleFichier = %%~zI
ECHO "Pour Controle en test taille du fichier %%I: !TailleFichier! octets."
rem GEQ: VOIR HELP IF sous l'invite de commandes dernière page
rem !....!: VOIR HELP SET expansion retardée de variables sous l'invite de
rem commandes (dernière page)
rem Dans un IF ce sont des parenthèses, non des {}.
if !TailleFichier! GEQ !TailleMax! (
echo "Fichier %%I trop volumineux, copie manuelle nécéssaire."
) else (
echo "suite du programme"
rem ou
echo "xcopy en fonction du %%I"
)
)
Cordialement.
Cchristian.
J'espère que ce qui suit répondra à tes questions (séquence testée).
rem (!....!) VOIR HELP SET expansion retardée de variables sous l'invite de
rem commandes (dernière page)
SETLOCAL ENABLEdelayedExpansion
SETLOCAL ENABLEextensions
SET /A TailleMax = 15000
rem (%%I) VOIR HELP FOR sous l'invite de commandes dernière page
for %%I In (*.*) Do (
ECHO _
rem %%~nI: VOIR HELP FOR sous l'invite de commandes dernière page
ECHO "Pour Controle en test nom + extension du fichier: %%I: ."
ECHO " ou bien nom seul du fichier: %%~nI."
rem %%~xI: VOIR HELP FOR sous l'invite de commandes dernière page
SET "ExtensFichier=%%~xI"
ECHO "Pour Controle en test extension du fichier %%I: !ExtensFichier!."
rem %%~zI: VOIR HELP FOR sous l'invite de commandes dernière page
SET /A TailleFichier = %%~zI
ECHO "Pour Controle en test taille du fichier %%I: !TailleFichier! octets."
rem GEQ: VOIR HELP IF sous l'invite de commandes dernière page
rem !....!: VOIR HELP SET expansion retardée de variables sous l'invite de
rem commandes (dernière page)
rem Dans un IF ce sont des parenthèses, non des {}.
if !TailleFichier! GEQ !TailleMax! (
echo "Fichier %%I trop volumineux, copie manuelle nécéssaire."
) else (
echo "suite du programme"
rem ou
echo "xcopy en fonction du %%I"
)
)
Cordialement.
Cchristian.