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 14430 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 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..

101 réponses

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

Bonjour brucine. Pour contrôler les connexions sortantes, j'utilise l'excellent glasswire. Connais tu ce soft, et qu'en penses-tu ?

0
brucine Messages postés 14430 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 3 mai 2024 1 841
28 avril 2023 à 09:45

Bonjour,

Rien, je ne connais pas; j'utilise Comodo qui semble faire correctement le job que je lui confie.

0