Script batch incorrect :(

Fermé
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 - 11 mars 2023 à 15:38
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 - 28 avril 2023 à 09:45

Bonjour à tous,

Voici un petit fichier .bat qui m'expose la taille de 2 dossiers, (chacun des 2 dossiers comporte plusieurs sous dossiers et fichiers).
Jusque là, tout fonctionne, il m'affiche un 1er résultat en octets, et un second avec séparateurs de milliers.
C'est lorsque je cherche à calculer la différence de taille entre ces dossiers que ça ne va plus. Le résultat est toujours 0...
L'objectif :
* calculer la différence de taille dossier source/cible (ligne : set /a diff=size1-size2)
* afficher le résultat en octets de :taille fichier source - taille fichier cible
* si égalité (taille =0) , afficher message de type "Operation OK", sinon, afficher "Erreur"

@echo off
setlocal enabledelayedexpansion

set "target1=C:\Users\bibi\AppData\Roaming\Thunderbird\Profiles\rdwdst72.default-release"
if not defined target1 set "target1=%cd%"
set "size1=0"
for /f "tokens=3,5" %%a in ('
dir /a /s /w /-c "%target1%"
^| findstr /b /l /c:"  "
') do if "%%b"=="" set "size1=%%a"
echo; Taille source (C:) :         %size1% octets

set "target2=D:\bibi\Pro\Documents\Sauvegardes_pro\Mails_thunderbird\rdwdst72.default-release"
if not defined target2 set "target2=%cd%"
set "size2=0"
for /f "tokens=3,5" %%a in ('
dir /a /s /w /-c "%target2%"
^| findstr /b /l /c:"  "
') do if "%%b"=="" set "size2=%%a"
echo; Taille destination (D:) :    %size2% octets

set /a diff=size1-size2


set "folder3=C:\Users\bibi\AppData\Roaming\Thunderbird\Profiles\rdwdst72.default-release"
set "folder4=D:\bibi\Pro\Documents\Sauvegardes_pro\Mails_thunderbird\rdwdst72.default-release

set "size3=0"
set "size4=0"

for /f "tokens=3" %%i in ('dir /s /a "%folder3%" ^| findstr /i "fichier(s)"') do set size3=%%i
for /f "tokens=3" %%i in ('dir /s /a "%folder4%" ^| findstr /i "fichier(s)"') do set size4=%%i

echo Taille du dossier source : %size3% octets
echo Taille du dossier cible  : %size4% octets
echo Difference : %diff% octets

if %diff% EQU 0 (
  echo Operation OK
) else (
  echo Erreur
)

pause

Et voici le retour :

 Taille source (C:) :         8965660753 octets
 Taille destination (D:) :    8965506493 octets
Taille du dossier source : 8 965 660 753 octets
Taille du dossier cible  : 8 965 506 493 octets
Difference : 0 octets
Operation OK
Appuyez sur une touche pour continuer..

Ou peut être mon erreur ?
Je n'y connais rien en script batch et ne pourrai le dire, n'ayant fait qu'accumuler des lignes de commmande piochées à droite et à gauche..

A voir également:

101 réponses

bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
1 avril 2023 à 14:04

Bonjour, heureusement que mes posts ne sonnent pas chez les gens car j'ai une légère tendance oiseau de nuit à l'approche des weekend...

Bon, euh, comment dire : ai copié collé intégralemnt le dernier Script de synchronisation, en remplaçant uniquement E: par D: et le message est exactement le même que celui posté hier soir (ce matin..).

Si je fais fonctionner l'ancien batch du post 54, j'ai

Mystère..

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
1 avril 2023 à 14:09

Les valeurs de la fenêtre postée juste avant sont exactes (celles du script du post 54).

Et si je on retire les exclusions, celà pourrait il marcher ? Car je n'ai pas besoin d'exclusions

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
1 avril 2023 à 18:03

Que veux-tu que je te dise, chez moi ça marche, je viens de tester à nouveau des fois que mes modifications pour la nuit aient planté le script de jour.

Les exclusions n'ont aucune importance sinon que, si la taille des dossiers qui les renferme change (elle est susceptible de changer à chaque ouverture de Thunderbird), tu vas être alerté en permanence de sauvegardes inutiles.

Si elles ne te plaisent pas, tu enlèves les commutateurs d'exclusion, dans le script XXCOPY  ils reposent sur le fait que c'est en principe le dossier datareporting sous le profil qui contient les fichiers coupables; dans la syntaxe PowerShell, on avait directement spécifié l'extension jsonlz4 ; je m'aperçois dans ce dernier cas que j'avais oublié le "l" de jsonlz4 dans une des sentences ECHO Taille, cela peut éventuellement fausser l'affichage de la taille de sauvegarde, mais pas le processus lui-même.

Mais ce ne sont pas elles qui sont responsables de l'erreur.

Si la taille de la sauvegarde est à 0 alors que tu n'aurais rien changé au script y compris par inadvertance, c'est soit que le chemin virtuel Thunderbird ou celui de destination que je t'ai repris ne sont pas bons, soit qu'il y a une erreur dans la variable de destination, soit que le copie se fait bien mais qu'il y a une erreur dans l'affichage de la taille de la sauvegarde.

Pour tester, s'agissant de mails qu'on ne reçoit pas à volonté, il faut faire comme moi: copier quelques fichiers bidon dans la source, sauvegarder, les enlever de la destination, recommencer.

Il faut tester physiquement: vérifier par propriétés des dossiers (et par simple exploration visuelle pour les fichiers bidon par exemple images) que leur taille est conforme, qu'une erreur de syntaxe n'a pas fait que la copie s'est bien faite, mais dans un autre sous-dossier, vérifier selon ce qu'on a fait la présence des fichiers bidon d'un côté ou de l'autre.

Partir ensuite à la chasse à l'erreur de formule dans le script (en faire préalablement une copie de sauvegarde dans un autre dossier): mettre REM devant @ echo off et vérifier l'absence de message d'erreur.

S'il en est ramené une et qu'on ne la localise pas exactement, mettre successivement un pause derrière chaque groupe de commandes.

Si on ne trouve toujours pas, évaluer les variables (celles dans les étiquettes :PROCESS doivent l'être à la fin du bloc CALL :PROCESS correspondants): enlever notre REM devant @ echo off puis introduire après chaque bloc echo %mavariable% et pause.

Je dois notamment vérifier l'echo/pause des variables:

-dans DOSSIERS: %dest% (emplacement physique de sauvegarde), %destfin% (horodatage date d'exécution), %destinit% (nom horodaté sauvegarde précédente).
-VIERGE: que %dest%\%destinit% correspond bien au chemin horodaté

-SIZE: vérifier que la valeur copiée est la bonne (3 blocs successifs source, destination, différence) dans les fichiers debut.txt et fin.txt; si elle l'est, c'est que les lignes XXCOPY sont correctes, et que les valeurs ont peut-être été mal sélectionnées dans la boucle PROCESS: faire l'écho avant les étiquettes :PROCESS des variables correspondant à source, sauvegarde et différence.

Mais bon, si le script a vraiment été copié à l'identique à part la lettre de lecteur, cela plaide plutôt pour un chemin de sauvegarde incorrect à vérifier ou bien que les couches ont été empilées: supprime tout dossier de la sauvegarde, ça doit repartir à VIERGE et te créer un dossier horodaté dont tu vérifies le contenu.

Recommences en supprimant quelques fichiers au hasard du dossier de sauvegarde.

Si tu es amené à faire des pause sur erreur et à sortir du script avant la fin, supprimes les fichiers txt sur le bureau dont sinon le contenu rajouté te mettra la zizanie.

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
2 avril 2023 à 19:02

Boonsoir brucine,
Ce n'est pas faute d'avoir :
- shunté l'echo off, et tebté de comprendre chaque ligne
- mis des pauses ça et là puis vérifié des valeurs
Il y a toujours quelque chose qui ne va pas dans la taille des dossiers, ce ce soit source/dest/diff

J'ai ensuite supprimé le dossier rdwdst72.default-release du rep de sauvegarde puis testé à nouveau

Il crée 1 dossier "02042023_18h40" (à la place de "rdwdst72.default-release"), dans lequel il a mis dossiers et fichiers source (dont des *json.lz4, *.json, *,.sqlite, etc..), mais pas tous car il manque le dossier "datareporting", quelques *,.sqlite.

Si, immédiatement après, je relance le batcht, j'ai

à ne rien y comprendre. Va t'il sonder une dossier rdwdst72.default-release qui n'existe plus ?

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
2 avril 2023 à 20:41

Sur le premier point, les différences sont faibles (respectivement de l'ordre de 230 Ko et exactement 1 Mo).

En dehors du dossier datareporting qui est manquant (c'est normal, je l'ai exclu), la copie transporte d'autres fichiers de configuration externes à ce dossier et que tu rapportes, rendant envisageable une variation infime de la source (230 Ko) pendant l'exécution du script.

Je t'ai alerté à ce propos depuis un moment, sauf à exclure tout ce qui peut varier hors les mails, ou plus intelligent ne copier que le dossier mails, les tailles risquent de ne pas être cohérentes; il va falloir que je fasse une installation Thunderbird bidon pour voir l'arborescence exacte des dossiers (mais qui n'aura bien sûr pas de mails sauf si j'en importe).

Sauf à chercher le rôle exact de chaque fichier sur la doc Mozilla, je ferai ça dès que j'aurai un moment (on se moque du datareporting de télémétrie mais pas de l'ensemble des bases de données sqlite dont certains représentent les bases de données de mots de passe, contacts...), on va donc forcément retourner de petites différences.

Il n'y a pas sauf à isoler le rôle de chacun de ces fichiers (à nouveau je testerai sur une installation Thunderbird dès que j'aurai un moment) de solution à 100%: soit on se moque de l'affichage des tailles et on fait une tâche planifiée incrémentielle de copie quotidienne (c'est ce que je fais, en une ligne XXCOPY), soit on triche en gardant l'exclusion pour le calcul des tailles mais pas pour la copie réelle, mais ce qui va forcément rendre une différence si on n'enlève  pas aussi l'exclusion à la troisième ligne XXCOPY de :SIZEFIN

A :COPY, remplacer par (en enlevant le filtre d'exclusion) par:
 

XXCOPY %orig% %dest%\%destinit% /Q3 /CBQ /CLONE /YY >NUL

Sur le nom horodaté du fichier 02042023_18h40, c'est normal, on a fait exprès à ta demande d'avoir un Log d'exécution de la sauvegarde sans créer des fichiers Log; tu as en <119> un batch de restauration qui fait exactement l'inverse en cas de besoin: renommer 02042023_18h40 en rdwdst72.default-release avant de copier dans l'autre sens.

Les fichiers _debut.txt, _fin.text et thunder.txt sont effacés en :END si on ne ferme pas le batch avant par échappement ou fermer avec la croix, ils servent respectivement à consigner les tailles source, destination et différence avant et après copie et à sélectionner dans les 2 valeurs m0t3lq06.default rdwdst72.default-release celle qui nous intéresse (la deuxième); si on n'avorte pas le script, -debut.txt ne peut pas être vide sans quoi on n'aurait pas de valeurs initiales sauf si les valeurs des variables correspondantes sont erronées: entrer sous la dernière ligne XXCOPY à :SIZEDEBUT un echo des variables  %orig% et %dest%\%destinit% suivi  de pause pour vérifier.

On suppose qu'à la première itération il n'y a aucun dossier dans la destination et qu'après on n'a pas modifié le nom de celui qui est créé, et qu'on a effacé du bureau les 3 fichiers txt s'ils y sont restés.

A la deuxième itération (attendre une ou deux minutes pour que l'heure change), dans :DOSSIERS, la séquence:
 

IF NOT EXIST "%dest%\**_**h**" GOTO VIERGE
SET "destfin=%date1%%date2%%date3%_%time1%h%time2%"
FOR /F %%p IN ('DIR /B "%dest%\**_**h**"') DO SET destinit=%%p

teste l'existence d'un dossier s'appelant **_**h** (dossier horodaté) dans la destination, le crée à :VIERGE à l'heure courante s'il n'existe pas, dans le cas contraire fait la même chose à la ligne SET mais met dans la ligne FOR  dans %destinit% l'horodatage du dossier déjà existant: si la taille de quelque chose "qui n'existe pas" est calculée, la sauvegarde initiale vaudra forcément 0.

Je dois donc m'assurer que la syntaxe IF NOT permettant de ne pas aller à :VIERGE fonctionne en mettant juste sous vierge echo toto et pause: je ne dois pas voir "toto".

Et je dois m'assurer que %destinit% est bien créé en FOR en mettant après FOR echo %destinit% et pause, moyennant quoi la section :SIZEDEBUT ne fait que lire ces variables.

Dans le doute de leur récupération dans le fichier _debut.txt, mettre après chaque ligne IF EQU de :PROCESSD une ligne supplémentaire IF %i% EQU 2 ECHO %sizeorigD% (idem pour les 2 autres lignes) suivi de pause après la dernière.

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
2 avril 2023 à 19:08

Oublié de dire qu'il me crée 2 fichiers sur le bureau (le batch que je lance est aussi sur mon bureau) :

- 1 _debut.txt : vide

- 1 thunder.txt : qui contient :

m0t3lq06.default
rdwdst72.default-release

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
2 avril 2023 à 23:49

Te fatigues pas, j'ai trouvé le bug en installant Thunderbird et en y migrant quelques mails.

Comme je ne peux pas y changer les fichiers Inbox sans risquer de mettre le bazar dans ma boîte mail normale, j'ai copié dans la source des fichiers qui ne sont pas dans la destination et vice-versa.

La seule différence de ce montage avec mes tests précédents, c'est qu'il y a des sous-dossiers alors que mes tests n'avaient que des fichiers à la racine: XXCOPY me fait du zèle et affiche les fichiers excédentaires des sous-dossiers dans le fichier _debut.txt avec autant de lignes que de fichiers (donc en nombre variable), ce qui a pour effet de planter la recherche des bonnes valeurs ordonnées aux lignes 2, 9 et 16 ainsi déplacées.

Curieusement, ça ne plante que quand c'est la destination qui comporte de tels fichiers.

Je n'ai pas envie de chercher la parade ce soir, demain, il fera jour, mais en attendant, ça ne sert à rien que tu te battes contre des moulins, laisse en l'état.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
3 avril 2023 à 15:21

En ayant remplacé par

XXCOPY %orig% %dest%\%destinit% /Q3 /CBQ /CLONE /YY >NUL

C'est génial, ça marche ! La copie s'effectue dans 1 dossier "03042023_15h03". Je ne sais pas si l'absence des quelques fichiers de moins d'un Mo auront un impact lors de la restitution du dossier et quand on relance thunderbird, car la source détectée pr le batch est de 9 075 467 862  octets alors que dans ses propriétés elle fait 9 076 434 571  octets, soit 966 709octets, ce qui n'est vraiment pas grand chose..

Et si je relance le batch juste après :
 

Différence =  0  octets
Différence nulle: Synchronisation inutile

Donc tout fonctionne à merveille, même 8mn plus tard. Franchement top ! Merci

Et Merci aussi d'avoir pris la peine d'installer thunderbird pour celà. Ducros ne s'est pas seulement décarcassé, il s'est éviscéré.... ;)

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
3 avril 2023 à 15:30

Je t'ai fait une nouvelle version qui commence par ne tester que la taille du dossier Mail de Thunderbird (existence de nouveaux mails) puis qui propose d'enchaîner sur celle du profil en entier (contacts, favoris, identifiants, fichiers de configuration...), à faire de temps à autre.

Elle ne prend pas en charge le cas où les mails de destination sont plus gros que ceux de la source (différence de taille qui aurait pour résultat de supprimer l'excédent de la destination), mais cette situation relève normalement d'une restauration dont tu as le script.

Tu me donneras l'écho.

 

@echo off
set z=0
MD %~dp0_temp

echo %time% > %~dp0_temp\time.txt
FOR /F %%q IN ('type "%~dp0_temp\time.txt"') DO SET heure=%%q
set time1=%heure:~0,2%
set time11=%heure:~0,1%
set time12=%heure:~1,1%
IF %time12%==: (
 GOTO AM
 ) ELSE (
 GOTO TIME
)
:AM
set time1=%z%%time11%
GOTO TIME

:TIME
set time2=%time:~3,2%
set date1=%date:~0,2%
set date2=%date:~3,2%
set date3=%date:~6,4%

DIR /B %Appdata%\Thunderbird\Profiles\ >> %~dp0_temp\_thunder.txt
FOR /F %%v IN ('FINDSTR "release" %~dp0_temp\_thunder.txt') DO SET nomthunder=%%v
SET "orig=%AppData%\Thunderbird\Profiles\%nomthunder%"
SET "dest=E:\bibi\Pro\Documents\Sauvegardes_pro\Mails_thunderbird"
SET "destfin=%date1%%date2%%date3%_%time1%h%time2%"

echo:
ECHO ^[104;93mSAUVEGARDE THUNDERBIRD[0m
echo:

IF NOT EXIST "%dest%\**_**h**" GOTO VIERGE
FOR /F %%p IN ('DIR /B "%dest%\**_**h**"') DO SET destinit=%%p
GOTO SIZEMAILDEBUT

:VIERGE
SET destinit=%date1%%date2%%date3%_%time1%h%time2%
MD %dest%\%destinit%
GOTO SIZEMAILDEBUT

:SIZEMAILDEBUT
CHCP 1252 >NUL
XXCOPY %orig%\Mail C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Mailorigdebut.txt
XXCOPY %dest%\%destinit%\Mail C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Maildestdebut.txt
XXCOPY %orig%\Mail %dest%\%destinit%\Mail /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Maildiffdebut.txt
FOR /F "tokens=1,2 delims==" %%g IN ('FINDSTR "Total" %~dp0_temp\_Mailorigdebut.txt') DO SET sizemailorigdebut=%%h
FOR /F "tokens=1,2 delims==" %%i IN ('FINDSTR "Total" %~dp0_temp\_Maildestdebut.txt') DO SET sizemaildestdebut=%%j
FOR /F "tokens=1,2 delims==" %%k IN ('FINDSTR "Total" %~dp0_temp\_Maildiffdebut.txt') DO SET sizemaildiffdebut=%%l

CHCP 65001 >NUL
ECHO ^[104mTaille Mails:[0m
echo Mails Source     = %sizemailorigdebut% octets
echo Mails Sauvegarde = %sizemaildestdebut% octets
set diff1maildebut=%sizemaildiffdebut:~1%
set diff2maildebut=%diff1maildebut:~0,1%
IF %diff2maildebut% LSS 1 (
 echo ^[103;92mPas de nouveau mail: %sizemaildiffdebut% octets[0m & GOTO NOMAIL
) ELSE (
 echo ^[103;91mNouveaux Mails: %sizemaildiffdebut% octets[0m & GOTO CHOICEMAIL
)

:CHOICEMAIL
echo:
ECHO ^[93mSauvegarder les nouveaux mails?[0m
CHOICE /C ON
IF %ERRORLEVEL% EQU 1 GOTO COPYMAIL
IF %ERRORLEVEL% EQU 2 GOTO QUITMAIL

:CHOICEPROFIL
echo:
ECHO ^[93mSauvegarder le Profil?[0m
CHOICE /C ON
IF %ERRORLEVEL% EQU 1 GOTO COPYPROFIL
IF %ERRORLEVEL% EQU 2 GOTO QUIT

:NOMAIL
echo:
echo ^[103;92mVoulez-vous afficher le reste du profil?[0m
CHOICE /C ON
IF %ERRORLEVEL% EQU 1 GOTO SIZEPROFILDEBUT
IF %ERRORLEVEL% EQU 2 GOTO END

:NOCOPY
echo:
echo ^[103;92mDifférence nulle: Synchronisation Profil inutile[0m
GOTO END

:QUIT
echo:
echo ^[103;91mAttention, Synchronisation Abandonnée![0m
DIR /b /s /a "%dest%\%destinit%" | findstr .>nul || (
  RD /S /Q %dest%\%destinit%
)
GOTO END

:COPYMAIL
echo:
echo ^[93mPatientez, Sauvegarde Mails en cours...%[0m
XXCOPY "%orig%\Mail" "%dest%\%destinit%\Mail" /Q3 /CBQ /CLONE /YY >NUL
echo:
echo ^[32mSauvegarde Mails effectuée %destfin%[0m
echo:

:SIZEMAILFIN
CHCP 1252 >NUL
XXCOPY %orig%\Mail C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Mailorigfin.txt
XXCOPY %dest%\%destinit%\Mail C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Maildestfin.txt
XXCOPY "%orig%\Mail" "%dest%\%destinit%\Mail" /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_Maildifffin.txt
FOR /F "tokens=1,2 delims==" %%G IN ('FINDSTR "Total" %~dp0_temp\_Mailorigdebut.txt') DO SET sizemailorigfin=%%H
FOR /F "tokens=1,2 delims==" %%I IN ('FINDSTR "Total" %~dp0_temp\_Maildestfin.txt') DO SET sizemaildestfin=%%J
FOR /F "tokens=1,2 delims==" %%K IN ('FINDSTR "Total" %~dp0_temp\_Maildifffin.txt') DO SET sizemaildifffin=%%L

CHCP 65001 >NUL
ECHO ^[104mTaille Mails:[0m
echo Mails Source     = %sizemailorigdebut% octets
echo Mails Sauvegarde = %sizemaildestfin% octets
echo ^[32mDifférence       : %sizemaildifffin% octets[0m

:QUITMAIL
echo:
echo ^[103;92mVoulez-vous voir le reste du profil?[0m
CHOICE /C ON
IF %ERRORLEVEL% EQU 1 GOTO SIZEPROFILDEBUT
IF %ERRORLEVEL% EQU 2 GOTO QUIT

:SIZEPROFILDEBUT
CHCP 1252 >NUL
echo:
ECHO ^[104mTaille Profil:[0m
XXCOPY %orig% C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_origdebut.txt
XXCOPY %dest%\%destinit% C:\_TEMPD /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_destdebut.txt
XXCOPY %orig% %dest%\%destinit% /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_diffdebut.txt
FOR /F "tokens=1,2 delims==" %%a IN ('FINDSTR "Total" %~dp0_temp\_origdebut.txt') DO SET sizeorigdebut=%%b
FOR /F "tokens=1,2 delims==" %%c IN ('FINDSTR "Total" %~dp0_temp\_destdebut.txt') DO SET sizedestdebut=%%d
FOR /F "tokens=1,2 delims==" %%e IN ('FINDSTR "Total" %~dp0_temp\_diffdebut.txt') DO SET sizediffdebut=%%f
echo Source           = %sizeorigdebut% octets
echo Sauvegarde       = %sizedestdebut% octets
set diff1debut=%sizediffdebut:~1%
set diff2debut=%diff1debut:~0,1%
CHCP 65001 >NUL
IF %diff2debut% LSS 1 (
 echo ^[103;92mDifférence       = %sizediffdebut% octets[0m & GOTO NOCOPY
) ELSE (
 echo ^[103;91mDifférence       = %sizediffdebut% octets[0m & GOTO CHOICEPROFIL
)

:COPYPROFIL
echo:
echo ^[93mPatientez, Sauvegarde en cours...%[0m
XXCOPY %orig% %dest%\%destinit% /Q3 /CBQ /CLONE /YY >NUL
echo:
echo ^[32mSauvegarde effectuée %destfin%[0m
echo:

:SIZEPROFILFIN
CHCP 1252 >NUL
XXCOPY %orig% C:\_TEMPF /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_origfin.txt
XXCOPY %dest%\%destinit% C:\_TEMPF /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_destfin.txt
XXCOPY %orig% %dest%\%destinit% /L /Q3 /CBQ /CLONE /YY >> %~dp0_temp\_difffin.txt
FOR /F "tokens=1,2 delims==" %%A IN ('FINDSTR "Total" %~dp0_temp\_origfin.txt') DO SET sizeorigfin=%%B
FOR /F "tokens=1,2 delims==" %%C IN ('FINDSTR "Total" %~dp0_temp\_destfin.txt') DO SET sizedestfin=%%D
FOR /F "tokens=1,2 delims==" %%E IN ('FINDSTR "Total" %~dp0_temp\_difffin.txt') DO SET sizedifffin=%%F

IF %destinit%==%destfin% GOTO :DISPLAY
MOVE %dest%\%destinit% %dest%\%destfin% >NUL

:DISPLAY
CHCP 65001 >NUL
ECHO ^[104mTaille finale:[0m
echo Source     = %sizeorigfin% octets
echo Sauvegarde = %sizedestfin% octets
echo ^[103;92mDifférence = %sizedifffin% octets[0m
GOTO END

:END
echo:
pause
RD /S /Q %~dp0_temp
0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
3 avril 2023 à 16:24

Là c'est le confort intégral !

La taille des dossiers (entiers) est ok quand on choisit de svg le profil. C'est très rapide et très efficace ! Un petit fichier de 6Ko fait mieux qu'un soft dédié. C'est fort. Chapeau et Merci !

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
3 avril 2023 à 19:22

Si je reviens à browser.bookmarks.autoExportHTML à passer en "true" sur firefox, sait tu ou il loge le html, et s'il conserve les dossiers créés dans les bookmarks ? (les json ne respectent pas les dossiers créés)

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
3 avril 2023 à 19:51

Il est à la racine du profil.

Si je cherche à consulter ou éditer le fichier html correspondant avec l'éditeur de mon choix, je vais évidemment l'avoir dans le dos; mais si j'écrase le fichier bookmarks.html par sa sauvegarde ou mieux, que je supprime le fichier courant puis que je me serve du menu Firefox (Marque pages, organiser, importation), aucun problème avec les dossiers, j'en ai une palanquée et je fais la manipulation de temps à autre.

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
3 avril 2023 à 20:31

Super astuce, merci. Effectivement, bookmarks.html y est (racine). Je vais tenter de faire un mini-script pour qu'il aille me le chercher et le sauvegarder (je devrais y arriver, car ça n'a pas l'air trop compliqué..) . La seule chos qui est ennuyeuse, c'est qu'une mise à jour sur 5, firefox bouscule tout ; recréer un profile, virer les prefs, zapper les add-ons (ublock origin + cookies autoDelete), etc. Comme il renomme le profile, mon script devra être adapté à chaque fois, mais ce n'est que 3 fois par an...

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
3 avril 2023 à 21:12

Moi, je ne m'embête pas:
 

XXCOPY "C:\Users\brucine\AppData\Roaming\Mozilla\Firefox\Profiles" H:\Firefox /CLONE /YY

ça copie tout le profil en tâche planifiée incrémentielle tous les jours, y compris les extensions, si le nom change, et ça ne pèse pas très lourd; tu peux spécifier le fichier bookmarks.html seul de la même manière, mais bon...

Un script n'a même pas besoin d'être adapté si on copie tout le dossier Profiles; si on veut le faire du profil lui-même, tu as les outils: la syntaxe qui va récupérer le nom du profil dans le dossier Thunderbird récupérera le nom du profil Firefox de la même manière si on change le chemin en conséquence.

Il ne t'a pas non plus échappé que le script horodaté Thunderbird est accompagné d'un script de restauration qui fait exactement la manip inverse: chercher le nom du profil (Thunderbird ou Firefox) qu'il soit nouveau ou ancien et en renommer le dossier horodaté au nom du profil, mais peu importe qu'il soit horodaté: il renomme un dossier qu'on lui dit d'aller chercher dans un endroit précis avec un minimum d'identification.

Ce qui a compliqué ton script Thunderbird, ce sont les fantaisies de présentation des chiffres, la comparaison de tailles: si tu en extrais dans un autre script juste de quoi aller chercher le nom du profil Firefox , la définition source et destination, la ligne de sauvegarde, ce n'est que l'affaire de quelques lignes.

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
3 avril 2023 à 20:34

Ceci dit, si je peux t'être d'1 quelconque utilité, ce sera avec plaisir. Le batch n'est pas mon fort, mais j'ai d'autres domaines de compétence..

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
4 avril 2023 à 10:52

Tu as raison, la copie intégrale du profile suffit. Je ne sais pas si ce "profile" contient les prefs, du type about:config modifié, add-ons ajoutés, et préférences du navigateur, etc.. mais si c'est le cas, alors ça vaut vraiment le coup...

Combien de temps je passe à chaque fois à enlever les autorisations d'Util données perso qui ont été bousculées, de config remise à 0, sans parler des add-on carrément virés..

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
Modifié le 4 avril 2023 à 12:29

Les 2 premiers paragraphes suffisent en principe.

https://support.mozilla.org/fr/kb/profils-la-ou-firefox-conserve-donnees-utilisateur

Je me suis la plupart du temps contenté d'écraser les fichiers de marque-pages et identifiants: la moralité en est que lors d'une nouvelle installation, on perd alors les icônes de site, les extensions, les paramétrages Firefox.

Et dans tous les cas le fichier de personnalisation de l'interface userChrome.css (espacement des marque-pages...) si on en a créé un à C:\Users\brucine\AppData\Roaming\Mozilla\Firefox\Profiles\spihkb5j.default-release\chrome: le sauvegarder.

Mais en écrasant l'intégralité du contenu du profil (qui contient aussi les extensions) on ne doit pas avoir le problème sauf si, je ne crois pas, certains paramètres de personnalisation sont dans le dossier Programmes.

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888 > brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024
4 avril 2023 à 13:07

Je suis assez circonspect sur l'écrasement intégral d'un profil Firefox: si on a formaté, bien sûr pas de problème; si c'est parce que Firefox est planté, on va replanter avec la sauvegarde sauf si on enregistre, au lieu d'une sauvegarde quotidienne, par exemple celles des 3 derniers jours (ça aussi, ça peut se "scripter").

Dans ce domaine, les extensions sont souvent au premier rang des coupables et il vaut mieux écraser fichier par fichier.

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
4 avril 2023 à 17:51

Tu as raison, il m'est arrivé d'écraser le .jsonlz4 stocké dans bookmarkbackups, et je perds les icônes des sites avec un petit globe gris à la place, ce qui n'est pas super ergonomique, et n'ai jamais su ou firefox conservait ces mini-icônes...

Pour les autres fichiers de config, la copie total du profil est une bonne solution au cas ou firefox plante, mais ça ne m'est jamais arrivé d'écraser avec 1 profil sauvegardé en intégralité. Le mien fait environ 80Mo. C'est vrai que ça ne fait pas lourd si on cumule quelques anciens profils en cas de réinstallation du soft. Je dois avoir eu 1 crash tous les 2 ans, et c'est pour ça que je sauvegarde les bookmarks... :(

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
5 avril 2023 à 12:21

On continue dans la défonce du consommateur, script de sauvegarde Firefox.

Il vaut mieux l'exécuter Firefox fermé pour pas que ça pédale; il crée un dossier à la date du jour avec la copie intégrale du profil.

Les fichiers "sensibles" sont également copiés dans les dossiers -z ce qui évite d'aller chercher à quoi ils correspondent en cas de restauration de ces seuls items; je n'y ai mis que ce qui me semblait pertinent, rien n'empêche d'y ajouter les cookies, les autorisations de popups ou ce qu'on veut:
https://support.mozilla.org/fr/kb/profils-la-ou-firefox-conserve-donnees-utilisateur

Il n'est destiné à être utilisé qu'une fois par jour du fait de ces fichiers supplémentaires qui ne sont pas synchronisés, il supprime en fin d'exécution tout dossier datant de 3 jours: en clair, s'il est exécuté tous les jours, il conserve les 3 dernières dates mais, s'il ne l'est pas, il ne prévoit pas en l'état de supprimer les sauvegardes antérieures.

Il est assez long à s'exécuter, mais l'idée est de le faire en tâche planifiée quotidienne de nuit (auquel cas on enlève ECHO et pause); c'est aussi pourquoi je n'ai pas mis de script de restauration: personne ne sait si on va restaurer seulement un fichier spécifique ou tout le profil, et dans ce dernier cas jusqu'à quelle date il faut remonter pour qu'il soit valide.

Il ne prévoit pas non plus de calcul de taille, les données de navigation sont en principe modifiées tous les jours.
 

@echo off
MD %~dp0_temp

:DATE
FOR /F "usebackq" %%i IN (`PowerShell $date ^= Get-Date^; $date ^= $date^; $date.ToString^('ddMMyyyy'^)`) DO SET NewDate=%%i

:DOSSIERS
DIR /B %Appdata%\Mozilla\Firefox\Profiles\ >> %~dp0_temp\_firefox.txt
FOR /F %%v IN ('FINDSTR "release" %~dp0_temp\_firefox.txt') DO SET nomfirefox=%%v
SET "orig=%AppData%\Mozilla\Firefox\Profiles\%nomfirefox%"
SET "dest=E:\bibi\Pro\Documents\Sauvegardes_pro\Firefox"
SET destdate=%dest%\%NewDate%\%nomfirefox%

echo:
ECHO ^[104;93mSAUVEGARDE FIREFOX[0m
echo:

:COPYPROFIL
echo ^[93mPatientez, Sauvegarde en cours...%[0m
XXCOPY %orig% %destdate% /Q3 /CBQ /CLONE /YY >NUL

:FICHIERS_SUPPLEMENTAIRES
XXCOPY %destdate%\places.sqlite %dest%\%NewDate%\z_historique\ >NUL
XXCOPY %destdate%\favicons.sqlite %dest%\%NewDate%\z_historique\ >NUL
IF EXIST %destdate%\bookmarks.html (
 XXCOPY %destdate%\bookmarks.html %dest%\%NewDate%\z_historique\ >NUL
 ) ELSE (
 XXCOPY %destdate%\bookmarkbackups %dest%\%NewDate%\z_historique\bookmarkbackups >NUL
 )
XXCOPY %destdate%\key4.db %dest%\%NewDate%\z_identifiants\ >NUL
XXCOPY %destdate%\logins.json %dest%\%NewDate%\z_identifiants\ >NUL
XXCOPY %destdate%\extensions %dest%\%NewDate%\z_extensions\ >NUL
XXCOPY %destdate%\xulstore.json %dest%\%NewDate%\z_barres_outils\ >NUL
XXCOPY %destdate%\prefs.js %dest%\%NewDate%\z_preferences\ >NUL
XXCOPY %destdate%\handlers.json %dest%\%NewDate%\z_actions_telechargement\ >NUL
IF EXIST %destdate%\chrome XXCOPY %destdate%\chrome %dest%\%NewDate%\z_chrome\ >NUL

:CLEAN
FOR /F "usebackq" %%j IN (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-3^)^; $date.ToString^('ddMMyyyy'^)`) DO SET OldDate=%%j
IF EXIST %dest%\%OldDate% RD /S /Q %dest%\%OldDate%
RD /S /Q %~dp0_temp

:END
echo:
CHCP 65001 >NUL
echo ^[32mSauvegarde effectuée %NewDate%[0m
echo:
pause



 

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
5 avril 2023 à 12:21

Pour tout dévoiler, voici mon dossier de sauvegarde

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
5 avril 2023 à 12:29

Le raccourci "Temporary Internet Files - Raccourci" pointe

C:\Users\bibi\AppData\Local\Microsoft\Windows\INetCache

mais il est devenu inutile depuis que j'utilise firefox...

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
5 avril 2023 à 12:35

et NETTOY-ordi-PRO - Win10.bat

cd\
cls
rem ####################################################
rem #### SUPPRESSION DES FICHIERS TEMPORAIRES ####
rem #################################################
del /S /Q /F "C:\WINDOWS\Temp\*.*"
rmdir /S /Q "C:\Users\bibi\AppData\Local\Temp"
pause
cls
rem #######################################
rem #### SUPPRESSION DES COOKIES ####
rem ###################################
rmdir /S /Q "C:\Users\bibi\AppData\Roaming\Microsoft\Cookies"
rmdir /S /Q "C:\Users\bibi\AppData\Roaming\Microsoft\Windows\Cookies"
del /Q /F "C:\Users\bibi\AppData\Local\cache"
del /Q /F "C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\Cache"
del /Q /F "C:\Users\bibi\AppData\Local\Mozilla\Firefox\Profiles\4m2uqi60.default-release\Cache2"
del /Q /F "C:\Users\bibi\AppData\Local\mbamtray\cache"
del /Q /F "C:\Users\bibi\AppData\Local\Autodesk\AutoCAD 2016\R20.1\fra\BrowserCache"
del /Q /F "C:\Users\bibi\AppData\Local\Autodesk\AutoCAD 2022\R24.1\fra\BrowserCache"
del /Q /F "C:\Users\bibi\AppData\Local\Autodesk\AutoCAD 2022\R24.1\enu\BrowserCache"
del /Q /F "C:\Users\bibi\AppData\Local\Autodesk\Autodesk Desktop App\BrowserCache"
del /S /Q /F "C:\Users\bibi\AppData\Local\NVIDIA Corporation\NVIDIA GeForce Experience\CefCache"
del /S /Q /F "C:\Users\bibi\AppData\Local\NVIDIA Corporation\NVIDIA Notification\CefCache"
del /S /Q /F "C:\Users\bibi\AppData\Local\NVIDIA Corporation\NVIDIA Share\CefCac
del /Q /F "C:\ProgramData\NVIDIA Corporation\NV_Cache"
del /Q /F "C:\Users\bibi\AppData\Local\NVIDIA Corporation\NVIDIA Share\CefCache"
pause
cls
rem ########################################################
rem #### SUPPRESSION DES FICHIERS RECENTS WINDOWS ####
rem #######################################################
del /S /Q /F "C:\Users\bibi\AppData\Roaming\Microsoft\Recent"
pause

cls
ipconfig/flushdns
pause

Me nettoie à peu près tout ce que ccleaner ne fait pas, mais

rmdir /S /Q "C:\Users\bibi\AppData\Local\Temp me signale "accès refusé"....

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
5 avril 2023 à 20:20

Un peu de paranoïa?

Comme à peu près tout le monde, je déconseille formellement l'utilisation de Ccleaner ou équivalents, qui savent se montrer davantage nuisibles que réellement efficaces; je ne m'en sers pour ma part que très rarement pour la seule fonction registre pour réinstaller des logiciels récalcitrants qui ont laissé des scories de désinstallation.

Ta syntaxe CD\ (qui pointe sur C:) n'est pas utile: le PATH par défaut est C:\Windows et C:\Windows\System32; les pause répétés non plus, un à la fin suffit, pourquoi les REM sont-ils décorés alors qu'on ne les verra pas si @echo off et que, sinon, nous avons vu qu'ils sont avantageusement remplacés par l'ECHO de zolies couleurs.
Le cls en tête de gondole ne sert non plus à rien puisque, par définition, la console est encore vierge.

Je n'ai pas l'essentiel de tes fichiers Cache que je ne commenterai pas sinon qu'il faut être prudent, certains logiciels ne fonctionnent pas sans, ni les fichiers récents Windows, Office, historiques ou caches de navigation puisque paramétrés dans chacun des produits concernés à ne jamais être conservés.

Une fois rappelé que "C:\Users\bibi\AppData\Local\Temp" s'écrit plus rapidement %Temp%, le problème est de 2 ordres:

-On ne peut pas supprimer même avec /F ce qui est ouvert dans Windows, on reçoit un message d'erreur (c'est par exemple le cas des fichiers OfficeClickToRun du jour dans C:\Windows\Temp, exécutés même si Office ne l'est pas).

-En trichant avec le commutateur /S de DEL, on va supprimer des sous-fichiers mais laisser derrière d'éventuels sous-dossiers vides.

Je dois donc aussi viser ces dossiers vides et me contenter de cacher sous le tapis des messages d'erreur que je ne peux pas éviter:

DEL /Q /F C:\WINDOWS\Temp\* >NUL 2>&1
RD /S /Q C:\WINDOWS\Temp\ >NUL 2>&1
RD /S /Q %Temp%\ >NUL 2>&1

Sur un plan plus large, il n'est pas contesté que les addicts des logiciels ou des jeux ont souvent des dossiers Téléchargement et Temp obèses.

On peut vouloir faire Monsieur Propre parce qu'on aime bien (moi aussi), ou bien pour des raisons d'espace ou de confidentialité, mais un simple script voue les 3 à l'échec.

Sur l'espace, on repeint les murs sales; sauf petits SSD et filmeurs/joueurs impénitents, la place est devenue généreuse: on passe sous silence tous les gadgets installés par chaque nouveau logiciel (et qu'on devrait nettoyer avant même de s'en servir, fichiers de langues exotiques, images, vidéos et sons divers...) et surtout les mêmes présents dans Windows maintenant la plupart du temps multilingue (sans compter par exemple les pilotes de modem farfelus dont on n'a jamais entendu parler, les thèmes envahissants...) et les applications Windows, le tout invirable sauf à passer par des utilitaires dédiés.

Il en va de même de la confidentialité: il est à peu près impossible de l'amener à 100%, pour s'y attaquer, il faut commencer par paramétrer ses logiciels et éventuellement son pare-feu en conséquence, restant l'impressionnant arsenal télémétrique Windows auquel il est impossible de faire face sans là aussi des utilitaires dédiés.


 

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888 > brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024
5 avril 2023 à 20:23

J'oubliais, pendant que je suis là, si ça t'intéresse, une nouvelle version du script Firefox qui maintenant fonctionne 15 fois par jour si ça nous prend et qui se contente de conserver les 3 dernières sauvegardes quelle qu'en soit la date:

 

@ echo off

echo:
ECHO ^[104;93mSAUVEGARDE FIREFOX[0m
echo:

MD %~dp0_temp

DIR /B %Appdata%\Mozilla\Firefox\Profiles\ >> %~dp0_temp\_firefox.txt
FOR /F %%v IN ('FINDSTR "release" %~dp0_temp\_firefox.txt') DO SET nomfirefox=%%v
SET "orig=%AppData%\Mozilla\Firefox\Profiles\%nomfirefox%"
SET "dest=E:\bibi\Pro\Documents\Sauvegardes_pro\Firefox"

:DATE
FOR /F "usebackq" %%i IN (`PowerShell $date ^= Get-Date^; $date ^= $date^; $date.ToString^('ddMMyyyy'^)`) DO SET NewDate=%%i

:DOSSIERS
IF EXIST %dest%\%NewDate% (
 GOTO COPYPROFILMEMEJOUR
 ) ELSE (
 GOTO COPYPROFIL
 )

:COPYPROFIL
SET destdate=%dest%\%NewDate%\%nomfirefox%
echo ^[93mPatientez, Sauvegarde en cours...%[0m
XXCOPY %orig% %destdate% /Q3 /CBQ /CLONE /YY >NUL
GOTO FICHIERS_SUPPLEMENTAIRES

:COPYPROFILMEMEJOUR
SET destdate=%dest%\%NewDate%\%nomfirefox%
echo ^[93mPatientez, Sauvegarde en cours...%[0m
XXCOPY %orig% %destdate% /Q3 /CBQ /CLONE /YY >NUL
GOTO FICHIERS_SUPPLEMENTAIRES_JOUR

:FICHIERS_SUPPLEMENTAIRES_JOUR
RD /S /Q %dest%\%NewDate%\Fichiers_Supplementaires

:FICHIERS_SUPPLEMENTAIRES
MD %dest%\%NewDate%\Fichiers_Supplementaires
XXCOPY %destdate%\places.sqlite %dest%\%NewDate%\Fichiers_Supplementaires\historique\ >NUL
XXCOPY %destdate%\favicons.sqlite %dest%\%NewDate%\Fichiers_Supplementaires\historique\ >NUL
IF EXIST %destdate%\bookmarks.html (
 XXCOPY %destdate%\bookmarks.html %dest%\%NewDate%\Fichiers_Supplementaires\historique\ >NUL
 ) ELSE (
 XXCOPY %destdate%\bookmarkbackups %dest%\%NewDate%\Fichiers_Supplementaires\historique\bookmarkbackups >NUL
 )
XXCOPY %destdate%\key4.db %dest%\%NewDate%\Fichiers_Supplementaires\identifiants\ >NUL
XXCOPY %destdate%\logins.json %dest%\%NewDate%\Fichiers_Supplementaires\identifiants\ >NUL
XXCOPY %destdate%\extensions %dest%\%NewDate%\Fichiers_Supplementaires\extensions\ >NUL
XXCOPY %destdate%\xulstore.json %dest%\%NewDate%\Fichiers_Supplementaires\barres_outils\ >NUL
XXCOPY %destdate%\prefs.js %dest%\%NewDate%\Fichiers_Supplementaires\preferences\ >NUL
XXCOPY %destdate%\handlers.json %dest%\%NewDate%\Fichiers_Supplementaires\actions_telechargement\ >NUL
IF EXIST %destdate%\chrome XXCOPY %destdate%\chrome %dest%\%NewDate%\Fichiers_Supplementaires\chrome\ >NUL

echo:
CHCP 65001 >NUL
echo ^[32mSauvegarde effectuée %NewDate%[0m
echo:

:CLEAN
RD /S /Q %~dp0_temp
FOR /F %%a IN ('powershell.exe -Command "(Get-ChildItem "%dest%" | Measure-Object).Count"') DO SET number=%%a
IF %number% LEQ 3 GOTO END
FOR /F "skip=3 delims=" %%a in ('dir "%dest%\" /B /O:-N /A:D') DO RD /S /Q "%dest%\%%a"
GOTO END

:END
pause
0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
6 avril 2023 à 12:00

Impressionnant ce batch ! Merci, il fonctionne parfaitement !

Je ne sais pas pourquoi il crée "Fichiers_Supplementaires" contanant "actions_telechargement+barres_outils+extensions+historique+identifiants+preferences". Est-ce une copie classée et nommée de certains fichiers choisis ? Et comme tu disais, à replacer 1 à 1 en cas de crash pour ne pas faire un écrasement brutal du dossier profil ?

Sinon, pour le nettoyage j'utilise ccleaner très occasionnellement avec prudence, et lui préfère Glary utilities, plus soft et efficace. Du coup, je n'utilisais presque plus le batch killer de temp, mais avec ton astuce, je vais pouvoir le réemployer. Merci. (Les REM sont mon "pense-bête" en cas d'édition, car comme tu le sais, je suis une bille en batch..). ;)

Pour la confidentialité, je vais souvent sur https://someonewhocares.org/hosts/ pour mettre mon hosts à jour...

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
6 avril 2023 à 13:07

Tout à fait, les fichiers supplémentaires sont des copies partielles du profil global classées par type d'utilité et destinées par exemple à restaurer isolément les marque-pages ou les identifiants sans avoir à réinstaller intégralement Firefox ou écraser globalement le profil si ce sont les seules pannes mises en cause, et sans avoir à chercher lesquels sont les fichiers correspondants.

L'utilité est manifeste aussi en cas de désinstallation de Firefox et de réinstallation, donc vierge et avec un nouveau profil: il suffit d'écraser les fichiers du nouveau profil par ceux-là pour retrouver ses moutons (c'est ce que je fais dans ce cas de figure).

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
6 avril 2023 à 12:02

et je lui adjoins mes blocages perso..

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
6 avril 2023 à 14:11

C'est franchement top. Merci !

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
6 avril 2023 à 14:47

Si j'ai bien compris, je peux sans souci dans un même batch, faire les 2 opés (thuderbird+firefox) en additionnant les scripts, et en retirant la ligne @echo off en début du second script qui sera copié ?

0
bibi2224 Messages postés 95 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 19 octobre 2023 2
6 avril 2023 à 14:51

Je pose la question car, ne percevant pas la subtilité des 2 batchs, la même variable pourrait être utilisée 2 fois et me mettre 1 sacré bazar...

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
6 avril 2023 à 15:02

Je ne sais pas, cela dépend nom seulement du nom des variables mais de leur emplacement dans le script, je vérifierai dans l'après-midi ou demain et je ferai un test, ce n'est pas la peine de déclarer en double ce qui n'a pas besoin de l'être (par exemple les dates et la partie commune des chemins).

Pas sûr ce que soit une bonne idée parce que ça va allonger le temps d'exécution du script, que celui de Thunderbird est interactif et apparemment exécuté plusieurs fois par jour, celui de Firefox non.

Le meilleur compromis dans un batch mixte serait d'enlever les fioritures Thunderbird et de systématiquement lancer ce batch mixte tous les soirs sans se poser de question, c'est généralement ce qui se fait en matière de sauvegarde.

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888 > brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024
6 avril 2023 à 15:37

Le mieux, et pas trop indigeste à exécuter, me semble être de garder la sauvegarde actuelle Thunderbird isolée mais non horodatée pour s'en servir à la demande au besoin (donc à modifier à cet effet et qui écraserait celle du script commun ) puis de faire un script commun exécuté une fois par jour sur le même mode que Firefox, savoir les 3 sauvegardes quotidiennes les plus récentes de chaque.

Ton avis?

0
brucine Messages postés 14622 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 15 mai 2024 1 888
6 avril 2023 à 22:37

Tu ne vas plus savoir quoi en faire.

Celui-là fait une sauvegarde des 3 derniers jours qui ont été exécutés pour Firefox et Thunderbird, celle du jour courant est incrémentielle et peut être renouvelée dans la journée.

 

@echo off

echo:
ECHO ^[104;93mSAUVEGARDE FIREFOX ET THUNDERBIRD[0m
echo:

MD %~dp0_temp

DIR /B %Appdata%\Mozilla\Firefox\Profiles\ >> %~dp0_temp\_firefox.txt
DIR /B %Appdata%\Thunderbird\Profiles\ >> %~dp0_temp\_thunderbird.txt
FOR /F %%v IN ('FINDSTR "release" %~dp0_temp\_firefox.txt') DO SET nomfirefox=%%v
FOR /F %%w IN ('FINDSTR "release" %~dp0_temp\_thunderbird.txt') DO SET nomthunderbird=%%w
SET "origfirefox=%AppData%\Mozilla\Firefox\Profiles\%nomfirefox%"
SET "origthunderbird=%AppData%\Thunderbird\Profiles\%nomthunderbird%"
SET "dest=E:\bibi\Pro\Documents\Sauvegardes_pro"

:DATE
FOR /F "usebackq" %%i IN (`PowerShell $date ^= Get-Date^; $date ^= $date^; $date.ToString^('ddMMyyyy'^)`) DO SET NewDate=%%i

SET "destfirefox=%dest%\Firefox\%NewDate%"
SET "destthunderbird=%dest%\Mails_thunderbird\%NewDate%"

:DOSSIERS
IF EXIST %destfirefox%\Fichiers_Supplementaires (
 GOTO FICHIERS_SUPPLEMENTAIRES_JOUR
 ) ELSE (
 GOTO COPYPROFIL
 )

:FICHIERS_SUPPLEMENTAIRES_JOUR
RD /S /Q %destfirefox%\Fichiers_Supplementaires

:COPYPROFIL
echo ^[93mPatientez, Sauvegarde en cours...%[0m
XXCOPY %origfirefox% %destfirefox%\%nomfirefox% /Q3 /CBQ /CLONE /YY >NUL
XXCOPY %origthunderbird% %destthunderbird%\%nomthunderbird% /Q3 /CBQ /CLONE /YY >NUL

:FICHIERS_SUPPLEMENTAIRES
MD %destfirefox%\Fichiers_Supplementaires
XXCOPY %destfirefox%\%nomfirefox%\places.sqlite %destfirefox%\Fichiers_Supplementaires\historique\ >NUL
XXCOPY %destfirefox%\%nomfirefox%\favicons.sqlite %destfirefox%\Fichiers_Supplementaires\historique\ >NUL
IF EXIST %destfirefox%\%nomfirefox%\bookmarks.html (
 XXCOPY %destfirefox%\%nomfirefox%\bookmarks.html %destfirefox%\Fichiers_Supplementaires\historique\ >NUL
 ) ELSE (
 XXCOPY %destfirefox%\%nomfirefox%\bookmarkbackups %destfirefox%\Fichiers_Supplementaires\historique\bookmarkbackups >NUL
 )
XXCOPY %destfirefox%\%nomfirefox%\key4.db %destfirefox%\Fichiers_Supplementaires\identifiants\ >NUL
XXCOPY %destfirefox%\%nomfirefox%\logins.json %destfirefox%\Fichiers_Supplementaires\identifiants\ >NUL
XXCOPY %destfirefox%\%nomfirefox%\extensions %destfirefox%\Fichiers_Supplementaires\extensions\ >NUL
XXCOPY %destfirefox%\%nomfirefox%\xulstore.json %destfirefox%\Fichiers_Supplementaires\barres_outils\ >NUL
XXCOPY %destfirefox%\%nomfirefox%\prefs.js %destfirefox%\Fichiers_Supplementaires\preferences\ >NUL
XXCOPY %destfirefox%\%nomfirefox%\handlers.json %destfirefox%\Fichiers_Supplementaires\actions_telechargement\ >NUL
IF EXIST %destfirefox%\%nomfirefox%\chrome XXCOPY %destfirefox%%nomfirefox%\chrome %destfirefox%\Fichiers_Supplementaires\chrome\ >NUL

echo:
CHCP 65001 >NUL
echo ^[32mSauvegarde effectuée %NewDate%[0m
echo:

:CLEANFIREFOX
SET firefox=%dest%\Firefox
FOR /F %%a IN ('powershell.exe -Command "(Get-ChildItem "%firefox%" | Measure-Object).Count"') DO SET numberf=%%a
IF %numberf% LEQ 3 GOTO CLEANTHUNDERBIRD
FOR /F "skip=3 delims=" %%a in ('dir "%firefox%\" /B /O:-N /A:D') DO RD /S /Q "%firefox%\%%a"

:CLEANTHUNDERBIRD
SET thunderbird=%dest%\Mails_thunderbird
FOR /F %%b IN ('powershell.exe -Command "(Get-ChildItem "%thunderbird%" | Measure-Object).Count"') DO SET numbert=%%b
IF %numbert% LEQ 3 GOTO END
FOR /F "skip=3 delims=" %%b in ('dir "%thunderbird%\" /B /O:-N /A:D') DO RD /S /Q "%thunderbird%\%%b"

:END
RD /S /Q %~dp0_temp
pause
0