Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Batch avec comparaison de contenu de fichiers

9 réponses
Avatar
Guillaume FOUJANET
Bonsoir,

Voici le problème:

Dans un dossier \\serveur\share$\folder\ se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous certaines
conditions dans le dossier c:\folder\

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script
vérifie si le contenu de c:\folder\version.txt est différent de
\\serveur\share$\folder\version.txt.
Si différent => \\serveur\share$\folder\appli.accdb remplace
\\serveur\share$\folder\appli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et
comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume

9 réponses

Avatar
Michel__D
Bonjour,

Guillaume FOUJANET a écrit :
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous certaines
conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script
vérifie si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume



Mouais, tu pourrais évaluer la sortie de la commande FC :

Set Local=c:folder
Set Serveur=serveurshare$folder
Set Fichier=version.txt
FC %Serveur%%Fichier% %Local%%Fichier% | FINDSTR "aucune diff"
ECHO %ERRORLEVEL%
Avatar
Michel Claveau - MVP
Bonsoir !

Teste ce batch :

@echo off
setlocal

set /PA=<serveurshare$folderversion.txt
set /PB=<c:folderversion.txt

:echo A=%A% :si on veut voir le contenu du 1er version.txt
:echo B=%B% :si on veut voir le contenu du 2e version.txt

if %A%==%B% goto :EGAL
echo DIFF ; mettre ici le traitement si difference
goto :FIN
:EGAL
echo EGAL ; mettre ici le traitement si egalite

:FIN
endlocal



@-salutations
--
Michel Claveau
Avatar
Fabrice [MVP]
"Guillaume FOUJANET" a écrit dans le message de
news:
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous certaines
conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script
vérifie si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume





Bonjour,

En plus des deux propositions que tu as eu, tu peux tenter quelque chose de
plus sympathique, avec la commande ROBOCOPY qui sais faire cela nativement
(le plus récent remplace le plus ancien, sinon rien.)

--
Fabrice, Microsoft MVP
http://www.fab3d.fr.st
Faq Windows XP : http://a.vouillon.online.fr/faq-winxp.htm
Avatar
Guillaume FOUJANET
Fabrice [MVP] avait prétendu :
"Guillaume FOUJANET" a écrit dans le message de
news:
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous certaines
conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script vérifie
si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume





Bonjour,

En plus des deux propositions que tu as eu, tu peux tenter quelque chose de
plus sympathique, avec la commande ROBOCOPY qui sais faire cela nativement
(le plus récent remplace le plus ancien, sinon rien.)



Merci de ta contribution, mais appli.accdb sera modifié tous les jours
sur le poste client mais ne devra être mis à jours que quelques fois
dans l'année...

Ce serai trop simple sinon...

Guillaume
Avatar
Guillaume FOUJANET
Michel__D avait écrit le 17/07/2009 :
Bonjour,

Guillaume FOUJANET a écrit :
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous certaines
conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script vérifie
si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume



Mouais, tu pourrais évaluer la sortie de la commande FC :

Set Local=c:folder
Set Serveur=serveurshare$folder
Set Fichier=version.txt
FC %Serveur%%Fichier% %Local%%Fichier% | FINDSTR "aucune diff"
ECHO %ERRORLEVEL%



ca le fait :-)
Avatar
Guillaume FOUJANET
Michel Claveau - MVP a formulé ce samedi :
Bonsoir !

Teste ce batch :

@echo off
setlocal

set /PA=<serveurshare$folderversion.txt
set /PB=<c:folderversion.txt

:echo A=%A% :si on veut voir le contenu du 1er version.txt
:echo B=%B% :si on veut voir le contenu du 2e version.txt

if %A%==%B% goto :EGAL
echo DIFF ; mettre ici le traitement si difference
goto :FIN
:EGAL
echo EGAL ; mettre ici le traitement si egalite

:FIN
endlocal



@-salutations



Parfait également, je suis partis dans cette direction merci

Guillaume
Avatar
Guillaume FOUJANET
Michel__D a formulé ce vendredi :
Bonjour,

Guillaume FOUJANET a écrit :
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous certaines
conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script vérifie
si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume



Mouais, tu pourrais évaluer la sortie de la commande FC :

Set Local=c:folder
Set Serveur=serveurshare$folder
Set Fichier=version.txt
FC %Serveur%%Fichier% %Local%%Fichier% | FINDSTR "aucune diff"
ECHO %ERRORLEVEL%



La contrainte de ce script est que je dois le personnalisé en fonction
de la langue de l'os.....
Avatar
Michel__D
Bonjour,

Guillaume FOUJANET a écrit :
Michel__D a formulé ce vendredi :
Bonjour,

Guillaume FOUJANET a écrit :
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous
certaines conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script
vérifie si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume



Mouais, tu pourrais évaluer la sortie de la commande FC :

Set Local=c:folder
Set Serveur=serveurshare$folder
Set Fichier=version.txt
FC %Serveur%%Fichier% %Local%%Fichier% | FINDSTR "aucune diff"
ECHO %ERRORLEVEL%



La contrainte de ce script est que je dois le personnalisé en fonction
de la langue de l'os.....



Voici une autre alternative si ton fichier .txt comporte plusieurs lignes :

setlocal enabledelayedexpansion

Set Local=c:folderversion.txt
Set Serveur=serveurshare$folderversion.txt

FOR /F "delims=" %%i IN ('TYPE %Serveur%') DO SET A=!A!%%i
FOR /F "delims=" %%j IN ('TYPE %Local%') DO SET B=!B!%%j

REM ECHO %A%

if "%A%"=="%B%" goto :EGAL
echo DIFF

goto :FIN
:EGAL
echo EGAL

:FIN
endlocal
Avatar
Michel__D
Bonjour,

Guillaume FOUJANET a écrit :
Michel__D a formulé ce vendredi :
Bonjour,

Guillaume FOUJANET a écrit :
Bonsoir,

Voici le problème:

Dans un dossier serveurshare$folder se trouvent deux fichiers
_ appli.accdb
_ version.txt

J'aimerais creer un script.bat qui copierai ces fichiers sous
certaines conditions dans le dossier c:folder

le contenu de version.txt serai de type v1.34 (vXX.XX)

En gros je veux que lorque l'utilisateur lance script.bat le script
vérifie si le contenu de c:folderversion.txt est différent de
serveurshare$folderversion.txt.
Si différent => serveurshare$folderappli.accdb remplace
serveurshare$folderappli.accdb
Si identique => goto :identique

je suis parti dans pas mal de direction avec les commandes fc et comp...
j'essayai de récupérer le résultat via %errorlevel% mais sans succès...
J'avais toujours les mêmes retours, fichiers identiques ou non.

Comme vous l'avez compris, je ne suis pas un habitué du scripting :D

Merci à ceux qui auront tout lu.

Guillaume



Mouais, tu pourrais évaluer la sortie de la commande FC :

Set Local=c:folder
Set Serveur=serveurshare$folder
Set Fichier=version.txt
FC %Serveur%%Fichier% %Local%%Fichier% | FINDSTR "aucune diff"
ECHO %ERRORLEVEL%



La contrainte de ce script est que je dois le personnalisé en fonction
de la langue de l'os.....



Juste pour dire que chez moi (XP SP3) la commande FC agit bien sur la
variable %ERRORLEVEL% en fonction de la ressemblance ou pas des fichiers.