Besoins d'aide pour sauvegarde automatique?

Sans doute un faute de frappe de ma part car j’ai fait des tests avec et sans et c mieux sans.:smiley:

Car :
Si je laisse l’espace il me scanne également la partition système (c:) à la recherche de tous les png.

Par contre si j’enlève cette espace, il ne me scanne que le dossier spécifié…

Mais bon le problème persiste…J’ai plus le réseaux je reverais ça demian en voyant du coté de robocopy…
Edité le 07/04/2010 à 19:55

Après pas mal de recherches, il s’avère que SyncBack ne peut pas ignorer la copie de l’arborescence complète des dossiers lors d’une sauvegarde. Cela pour éviter que si plusieurs fichiers, dans les différents répertoires de la source, portent le même nom ne s’écrasent pas les uns sur les autres dans le seul répertoire de destination (ce qui est logique).

Par contre pour filtrer les fichiers selon l’extension c’est très simple :ane:

Il reste une solution possible avec SyncBack, c’est de créer un profil pour chaque sous-répertoire desquels tu veux effectuer une sauvegarde. Ça peut le faire si tu n’as pas une arborescence trop profonde avec beaucoup de dossiers.

Voilou, ça me titiller de ne pas trouver comment faire :o)

Bon courage pour la suite :pt1cable:
Edité le 07/04/2010 à 20:38

Bonjour, bon voici un petit retour de mes test du matin :

j’ai regardé aussi un peux un coté de Robocopy, mais c pas mieux ( cela dit pas tout compris non plus)

J’avoue que là j’ai les neurones en vrac…

Merci

EDIT : Par acquis de conscience, des fois que mon pc portable soit un peu foireux, j’ai effectué les tests sur un nouveau pc fraichement installé et intégré au réseaux de la boite…malheureusement le problème est identique.
Edité le 08/04/2010 à 14:13

Tu peux dire comment tu as défini Z: ? (on ne sait jamais, ça peut donner une piste pour la suite)
Si tu fais dir Z:\ tu as quelque chose ?
et si oui quand tu fais dir Z:\image1.png ça donne quoi ?

Après, il y a toujours bien sûr le problème des droits d’accès, mais vu le message d’erreur retourné je ne pense pas que ce soit ça.


Je ne suis pas sûr d'avoir compris le résultat que tu fais remonter : [quote=""]
C:\>FOR /F "usebackq delims==" %i IN (`dir D:\test\*.png /s /b`) DO copy Z:\photo\%~ni%~xi

C:\>copy Z:\image1.png
le fichier spécifier est introuvable

[/quote]

La première ligne, tu la tapes en ligne de commande, et les deuxième et troisième c’est la réponse du système ?
Edité le 08/04/2010 à 14:43

re

Z:\ je l’ai créer via la fonction connecter un lecteur réseaux. J’ai créer le partage dessus, visible en lecture et écriture pour tout le monde.

Normalement, les droits d’accès sont bon, car le dir fonctionne, et je peux même utilisé le menu contextuel pour faire un send to de ma machine vers Z et les fichiers sont correctement envoyés.

Par contre le dir :\image1.png me retourne " Fichier introuvable" normale puisque la copie échoue. Si je pause le fichier directement sous Z alors le dire me renvoie les informations taille du fichier…etc

oui c tout à fait ça dans une fenêtre de commande à partir de ma machine.
Edité le 08/04/2010 à 15:04

Je pense qu’il y a une petite erreur
Si j’ai bien compris, dans ton exemple, tu souhaiterais copier tous les .png de D:\test vers un emplacement réseau que tu as rendu accessible via le lecteur z:. (à l’origine, je pensais que tu voulais faire le contraire, sauver ton réseau en local)

Supposons que la commande ait réussi.
Ton fichier image1.png va donc se retrouver dans le répertoire \photo de Z:
Donc normal que dir z:\image1.png ne donne rien
Si tu veux le lister, il faut donc faire dir z:\photo\image1.png (ou dir z:\photo)

Pour en revenir à la commande initiale, elle fonctionne comme un copy classique : copy Source Cible
Pour toi, la source, c’est chacune des valeurs remontée de D:\test, limitée à son nom de fichier+extension, et ta cible, c’est le répertoire z:\photo
Tu dois donc avoir quelque chose de la forme
FOR /F “usebackq delims==” %i IN (dir D:\test\*.png /s /b) DO copy %~ni%~xi Z:\photo

Attention, l’espace est indispensable entre %~xi et Z:
A noter aussi que pour que ça fonctionne, il faut que le répertoire photo ait été créé au préalable

Merci bien,

j’vais pas avoir le temps de tester ça de suite, mais je te tiens au courant.

pour la commande copy, je dois faire un /D /Y pour qu’il ne copy à chaque fois que les élément qui on été ajouté ou modifié à la source?? c’est bien ça?? Le /Y pour éviter qu’il ne me demande confirmation pour écraser les fichiers??

Donc :

FOR /F “usebackq delims==” %i IN (dir D:\test\*.png /s /b) DO copy /D /F %~ni%~xi Z:\photo

Suis pas sur de l’emplacement dans la ligne de code!! Une petite confirmation de tout ça serait bienvenue.

ET en tout cas merci. :clap:

:jap:

EDIT : Bon je viens de tester la ligne de code(avant de me rentrer)…et ben désolé de te le dire mais j’ai les mêmes erreurs que citées précédemment. Arg m’attendais pas à que ce soit si compliqué ce truc…
Edité le 08/04/2010 à 18:22

Pour les paramètres de la commande Copy :
Copy /D, je ne connaissais pas, je viens de la découvrir dans l’aide suite à ta suggestion et je ne pense pas que ce soit ce qui va te convenir
D’ailleurs, je ne sais pas s’il existe une possibilité de tester l’antériorité avec la commande copy
Je pensais plutôt à la commande xcopy, avec cette fois le /D qui vient tester la date.
Et pour ce qui est de masquer la demande de confirmation, c’est bien /Y. Pourquoi as-tu mis /F ?

Tu peux taper copy /? et xcopy /? en ligne de commande pour avoir accès aux différentes options proposées

Pour ta ligne de commande qui ne fonctionne pas : normal avec ce que je t’ai donné
ce serait plutôt du genre
FOR /F “usebackq delims==” %i IN (dir D:\test\*.png /s /b) DO copy “%i” “Z:\photo%~ni%~xi”

(il sera toujours temps de voir plus tard pour choisir entre copy et xcopy, par contre, j’ai encadré source et cible de guillemets au cas où il y aurait des caractères exotiques (genre espace) dans les noms de fichiers)

Et si ça ne fonctionne toujours pas tape ceci :
@FOR /F “usebackq delims==” %i IN (dir D:\test\*.png /s /b) DO @echo copy /Y “%i” “Z:\photo%~ni%~xi”
et copie-nous le résultat
Edité le 08/04/2010 à 20:03

Bonjour,

Bon je pensais également à xcopy et non copy^^

FOR /F “usebackq delims==” %i IN (dir D:\test\*.png /s /b) DO xcopy /D /C /Y “%i” “Z:\photo%~ni%~xi”

Yep cette fois ça fonctionne.

J’ai ajouté le /C, histoire que ça sauvegarde jusqu’au bout.

Tu disais que pour le batch il faut doubler les % ?? Tous??


FOR /F “usebackq delims==” %%i IN (dir D:\test\*.png /s /b) DO xcopy /D /C /Y “%%i” “Z:\photo%%~ni%%~xi”

Par contre vue qu’avec le /C il continu sont travail malgré des éventuelles erreurs, j’aimerais pouvoir sortir un Log.txt du résultat pour vérifié si tous c bien passé. Si tu sais comment faire ça je suis preneur aussi:D

Un grand merci.

:clap:

Pour le %%, c’est bien comme tu l’as mis
Pour le /C, à vérifier, mais je ne pense pas que ce soit utile : en effet, on fait les copies un seul fichier à la fois, et je pense qu’une erreur de copie va interrompre la copie en cours, mais pas la boucle qui va enchainer sur le nom de fichier suivant.

Par contre, il faut effectivement avoir un log (exploitable) des opérations effectuées.
Pour ce qui est de la faisabilité, la réponse est oui, pour la réalisation, ça demande un minimum de réflexion et surtout un windows pour tester.

edit:
Je te redirai ça en début d’après midi
Edité le 09/04/2010 à 12:05

:hello:

j’ai modifié ainsi le bat

FOR /F “usebackq delims==” %%i IN (dir D:\test\*.xls /s /b) DO xcopy /D /C /Y “%%i” “Z:\devis*.*%%~ni%%~xi” > D:\test\log.txt

Le . que j’ai rajouté derrière le Z:\devis\ est là pour la confirmation “est-ce un nom de fichier ou un non de dossier”
et

D:\test\log.txt pour la création du log ( reste à savoir si il notera dans ce log le nom des fichier sur lesquels y aurait une erreur ou seulement le nombres d’erreurs???)

Comment ça un windows pour tester lol…linux power??

Me reste à trouver un freeware pour exécuter la commande à l’extinction du PC…
Edité le 09/04/2010 à 12:18

Oui, ce matin c’était windows en fermé ou linux avec réseau ; donc pour répondre à Clubic …

Ta ligne modifiée, j’avoue que l’astuce du . pour forcer le choix fichier je ne connaissais pas. J’ai toujours utilisé un fichier de réponse en entrée (du genre fichier yes/no). Tu as une référence qui explique ce fonctionnement ?

Pour ce qui est du log, on travaille en boucle, donc la commande xcopy s’exécute plusieurs fois.
Et à chaque fois, elle va t’écraser le résultat précédent. Il faut utiliser l’écriture en append (>>) ; ce qui veut dire aussi qu’il faut effacer toute trace éventuelle du log.txt avant de rentrer dans la boucle.

Mettre le résultat du log dans D:\test, ça risque de te poser des problèmes si un jour tu veux sauvegarder aussi les fichiers .txt …

Là tu vas récupérer le compte rendu de la commande uniquement (ex : 1 fichier copié). Je ne sais pas ce qu’il en est pour les erreurs véritables, il faudra peut être rajouter 2>>log.txt, c’est à tester.
Et pour savoir à quoi se rapporte la réponse, le mieux est de faire d’abord un écho de la commande passée
Une autre solution serait de passer par les errorlevel ; à voir.

Au final ton fichier batch devrait plus ou moins ressembler à quelque chose de ce genre :


@echo off
del D:\test\log.txt
FOR /F "usebackq delims==" %%i IN (`dir E:\homework\lemilia\*.txt /s /b`) DO (
echo copie de "%%i" : >> D:\test\log.txt
xcopy /D /C /Y "%%i" "Z:\devis\*.*%%~ni%%~xi" >> D:\test\log.txt
)

A toi de voir si tu gardes le /C ou non

Oki ben je regarde ça Lundi au taf…

Merci.

j’ai découvert aujourd’hui

FreeFileSync et PureSync.

Ils doivent faire l’affaire pour ce que tu recherche

Bonjour,

Bon FreeFileSync à priori ne répond pas à mes exigences.

PureSync peut-étre un peut plus, mais je vais rester sur l’idée du batch.

Merci.

De retour sur mes essais, j’ai donc repris ton batch :

[b]


@echo off
del D:\test\log.txt
FOR /F "usebackq delims==" %%i IN (`dir D:\test\*.png /s /b`) DO (echo copie de "%%i" : >> D:\test\log.txt xcopy /D /C /Y "%%i" "Z:\Photo\*.*%%~ni%%~xi" >> D:\test\log.txt)

[/b]

Alors première chose, les fichiers ne se copies pas??

et le log ressemble à ça:

copie de “D:\test\Solaire photovolta?que\devis\Bloqué.png” : xcopy /D /C /Y “D:\test\Solaire photovolta?que\devis\09072009052.png” “Z:\Photo*.*Bloqué.png”
copie de “D:\test\Solaire photovolta?que\devis\Image1.png” : xcopy /D /C /Y “D:\test\Solaire photovolta?que\devis\Image1.png” “Z:\Photo*.*Image1.png”

Aucune information sur les images qui sont copiés ou qui aurait échoués, a priori c la commande echo copie de “%%i” : >> D:\test.log ( si je supprime ce passage cela fonctionne).

Pour ce qui est du log, est-il possible qu’il n’affiche que les erreurs concernant les fichier qu’il n’a pas pu copier?

Nota : j’ai créer le fichier bloqué sous mon compte admin fichier sur lequel j’ai interdit toutes actions sur ma session.

Avec l’ancien log :

[b]


@echo off
del D:\test\log.txt
FOR /F "usebackq delims==" %%i IN (`dir D:\test\*.png /s /b`) DO xcopy /D /C /Y "%%i" "Z:\photo\*.*%%~ni%%~xi" >> D:\test\log.txt

[/b]

Les fichiers sont copiés.

Le log ressemble à ça:

D:\test\Solaire photovolta?que\devis\09072009052.png
0 fichier(s) copi?(s)
D:\test\Solaire photovolta?que\devis\Image1.png
1 fichier(s) copi?(s)

De premier abord le second script semble fonctionner. Par contre pourquoi cela ne fonctionne sur ta dernière version??
De plus est-il possible de ne logger que les erreurs de copie?
Edité le 12/04/2010 à 09:53

La version que je t’ai donnée fonctionne chez moi (j’ai même laissé les noms de fichier pour être sûr de ne pas me tromper en les renommant)
Par contre, dans la transcription que tu donnes, si ce n’est pas l’éditeur clubic qui fait des siennes, c’est normal que ça ne marche pas : il faut respecter la mise en page, au moins en ce qui concerne les retours à la ligne.

@echo off
del D:\test\log.txt
FOR /F "usebackq delims==" %%i IN (`dir D:\test\*.png /s /b`) DO (
echo copie de "%%i" : >> D:\test\log.txt 
xcopy /D /C /Y "%%i" "Z:\Photo\*.*%%~ni%%~xi" >> D:\test\log.txt
)

Ton second script fonctionne parce que le problème ne se pose pas, vu qu’il n’y a qu’une seule commande dans le DO.

Si tu veux ne logger que les erreurs de copie, il faut que tu passes par le retraitement du code retour de xcopy avec errorlevel.
http://1100f.free.fr/Batchs/la_commande_xcopy.htm

:hello:

Merci.

Bon effectivement j’ai recopié tel quel avec le respect des retours en ligne, et c tout bon.

je regarde les errorlevel.

Bonjour,

Bon cela semble fonctionner pas trop mal, voir meme pas mal du tout don c grand merci à toi gcc.

je laisse ici le script final, des fois que cela puisse servir à quelqu’un d’autre:


@echo off
del D:\test\log_photo.txt
FOR /F "usebackq delims==" %%i IN (`dir D:\test\*.png + D:\test\*.jpg /s /b`) DO (
echo copie de "%%i" : >> D:\test\log_Photo.txt 
xcopy /D /C /Y "%%i" "Z:\Photo\*.*%%~ni%%~xi" >> D:\test\log_photo.txt
)
del D:\test\log_devis.txt
FOR /F "usebackq delims==" %%i IN (`dir D:\test\*.xls /s /b`) DO (
echo copie de "%%i" : >> D:\test\log_Devis.txt 
xcopy /D /C /Y "%%i" "Z:\Devis\*.*%%~ni%%~xi" >> D:\test\log_Devis.txt
)

@ECHO OFF
ECHO @ECHO off> question.bat
ECHO SET /p var= SAUVEGARDE TERMINEE. ENREGISTRER VOS DOCUMENTS OU APPUYEZ SUR ENTREE POUR ANNULER L'EXTINCTION>> question.bat
ECHO ECHO ^>%systemdrive%\stop.txt>> question.bat
ECHO EXIT>>question.bat
START question.bat
ECHO Veulliez patientez SVP ...
PING -n 10 127.0.0.1>NUL
IF EXIST %systemdrive%\stop.txt GOTO fin
SHUTDOWN -s -t 180
:fin
IF Exist question.bat DEL question.bat
IF Exist %systemdrive%\stop.txt DEL %systemdrive%\stop.txt
TSKILL cmd


La seconde partie me permet d’effectuer un Shutdown avec un compteur à 3 mn, laissant le temps à l’utilisateur de sauvegarder sont travail avant extinction ou de l’annuler.

Voilà.

Edit : Si tu vois des incohérences ou autres, fait moi signe.:jap:
Edité le 13/04/2010 à 16:39

Non, pas d’incohérence, juste que si tu veux être rigoureux jusqu’au bout, il faut aussi que tu mettes un if exist pour la ligne
del D:\test\log_photo.txt

Le @ECHO OFF de la ligne 13, il doit faire double emploi.
Et pour la suite du script, je ne vois pas très bien comment ça marche, mais je suppose que tu as déjà vérifié le fonctionnement.

ok

Merci bien.