Batch avec comparaison de contenu de fichiers

Le
Guillaume FOUJANET
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #19778161
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%
Michel Claveau - MVP
Le #19778881
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
Fabrice [MVP]
Le #19779211
"Guillaume FOUJANET" 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
Guillaume FOUJANET
Le #19783211
Fabrice [MVP] avait prétendu :
"Guillaume FOUJANET" 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
Guillaume FOUJANET
Le #19783251
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 :-)
Guillaume FOUJANET
Le #19783241
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
Guillaume FOUJANET
Le #19783271
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.....
Michel__D
Le #19785641
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
Michel__D
Le #19785741
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.
Publicité
Poster une réponse
Anonyme