script de verification ms_dos

script de verification ms_dos - Shell/Batch - Programmation

Marsh Posté le 25-08-2006 à 13:37:27    

Bonjour,  
 
j'aimerai savoir comment faire pour créer un script qui peut vérifier que la date de dernière modification soit la même que la date du jour en ms dos. je ne connait pas trés bien ce language, mais après m'etre informer sur ce forum, je sais qu'il y as des commande du style:  
 
SET datetoday=%DATE: /=%  
 
if %datemodif% EQU %datetoday%  
echo verif terminée : OK!!!!!!  
 
mais je ne sait pas comment faire pour déterminer la variable datemodif, qui donnerait la date de dernière modif du fichier. la seule commande que j'ai trouver c'est :  dir/p qui permet de voir la date de la dernièer modif du fichier, mais je ne sais pas comment l'intégrer.  
 
mon début de script c'est :  
-----------------------------------------  
SET datetoday=%DATE: /=%  
(echo Verification %%A)  
(if %datemodif% EQU %datetoday%  
echo verif terminée : OK!!!!!! sur %%A  
)  
pause  
-----------------------------------------  
je ne sais pas comment faire ma variable 'datemodif' qui correspondrait a la dernière date de modif  
 
AIDEZ MOI SVP!!!! merci[spoiler]

Reply

Marsh Posté le 25-08-2006 à 13:37:27   

Reply

Marsh Posté le 25-08-2006 à 20:53:04    

Tu dois commencer par regarder l'aide de la commande
for
(for /? donc)
pour comprendre comment parcourir une liste de fichiers.
 
Ensuite, regarde l'aide de  
dir
(dir /?)
pour l'option d'affichage de la date de modif.

Reply

Marsh Posté le 28-08-2006 à 09:27:34    

wackevat a écrit :

Tu dois commencer par regarder l'aide de la commande
for
(for /? donc)
pour comprendre comment parcourir une liste de fichiers.
 
Ensuite, regarde l'aide de  
dir
(dir /?)
pour l'option d'affichage de la date de modif.


 
 
merci de ton aide!!!
 
alors voici ce que j'ai fait maintenant:
----------------------------------------
SET datetoday=%DATE: /=%
for /R \\serveur\partage do (
(echo Verification sur serveur)
(cd serveur)
(cd rep1)
(dir /T:W)
() <--- la il faudrait que je puisse désigner mon fichier X et comparer sa date de modif à la date d'aujourdui
(echo Traitement terminé sur : serveur)
)
pause
------------------------------------------
 
mais je ne sait pas comment comprarer la date de modif de mon fichier X (qui se trouve dans le repertoire rep1) à la date d'aujourdui, as tu une idée?  
 
merci encore.. :)

Reply

Marsh Posté le 28-08-2006 à 21:34:06    

Pourquoi tu mets des parenthèses partout comme ça ? Ce n'est pas nécessaire.
 
Ensuite, la syntaxe de ta boucle for n'est pas correcte.
 
Pour comparer deux dates, il faut d'abord pouvoir les affecter à des variables.
 
Et pour cela, la première des choses est d'écrire ta boucle correctement.

Reply

Marsh Posté le 29-08-2006 à 09:15:24    

wackevat a écrit :

Pourquoi tu mets des parenthèses partout comme ça ? Ce n'est pas nécessaire.
 
Ensuite, la syntaxe de ta boucle for n'est pas correcte.
 
Pour comparer deux dates, il faut d'abord pouvoir les affecter à des variables.
 
Et pour cela, la première des choses est d'écrire ta boucle correctement.


 
merci, encore de rester pour m'aider.
 
alors j'ai changer mon script sa donne:
-----------------------------------------
set datemodif=
set chemin=c:\VERIF_F1
SET datetoday=%DATE:/=%
for /f %%A in (%chemin%\machines.txt) do (
echo Verification serveur sur %%A
\\serveur\sauvegardes
cd %%A
cd rep1
dir /T:W
if %datemodif% EQU %datetoday% *.dat
echo verif terminée : OK!!!!!! sur %%A
if %datemodif% NEQ %datetoday% *.dat
echo problème de sauvegarde sur %%A
)
pause
 
-----------------------------------------------
 
tu dois surment rigoler pasque je suis un peu bison en script, mais je pense que tous le monde à débuter comme ça :)
 
en gros voila ce que j'ai essayer de faire, je dit a mon script de regarder dans le fichier machines.txt, (sachant que j'ai un net use avant) donc de regarder sur ces machines, d'aller dans le repertoire en question, et de dire verif OK si la date du jour est egale a la date de modif pour tous les fichier .dat, et de dire probleme si  les dates sont différentes. mais par contre je ne sais pas comment éditer ma variable %datemodif%
peut tu m'aider ou me dire si je n'ai rien compris a ce que je fait
 
merci de ton aide

Reply

Marsh Posté le 29-08-2006 à 09:44:16    

oops, j'ai oublier le /I après le IF de if %datemodif% EQU %datetoday% ...
 
ce qui donne if /I %datemodif% EQU %datetoday%
echo...

Reply

Marsh Posté le 29-08-2006 à 14:56:00    

C'est mieux, mais pas encore ça ;)
 
La sortie de la commande dir se compose de plusieurs lignes, dont à partir de la x-ième, chacune suit un format fixe : date / heure / taille /nom. Les champs sont séparés par des caractères "blancs", utilisés comme des délimiteurs.
 
Tu dois donc pouvoir "parser" cette sortie ligne par ligne, et récupérer le ou les champs qui t'intéressent.
 
Pour cela, regarde toujours dans l'aide de for, pour l'histoire des tokens jetons ?) et des délimiteurs.

Reply

Marsh Posté le 30-08-2006 à 09:01:35    

[quotemsg=1433096,7,240570]C'est mieux, mais pas encore ça ;)
 
La sortie de la commande dir se compose de plusieurs lignes, dont à partir de la x-ième, chacune suit un format fixe : date / heure / taille /nom. Les champs sont séparés par des caractères "blancs", utilisés comme des délimiteurs.
 
Tu dois donc pouvoir "parser" cette sortie ligne par ligne, et récupérer le ou les champs qui t'intéressent.
 
Pour cela, regarde toujours dans l'aide de for, pour l'histoire des tokens jetons ?) et des délimiteurs.[/quote
 
salut,  
je suis désolé mais je n'ai rien compris a tous ça, je ne suis pas developpeur, c'est pour ça que j'ai autant de mal... :( apparement le delimiteur sont par défaut l'espace et la tabulation, mais je n'ai pas compris par quoi il les remplace ce paramètre (delims=xxx). et le tokens je n'y comprend rien... par contre j'ai vu un paramètre hier interessant pour moi mais je ne sais pas comment l'utiliser, enfin le type de syntaxe aproprié: %~PATH:I
 
ps: ma commande dir (dir/T:W) n'est pas bonne?
 
merci

Reply

Marsh Posté le 30-08-2006 à 10:35:30    

sinon sa serai pas mieux de faire sa? :
 
----------------------------------------------------------
set datemodif=
SET datetoday=%DATE:/=%
\\serveur\save /user:administrateur mot_de_passe /persistent:no
for /R D:\sauvegardes in (fichier.dat) do (
echo Verification save sur %%A
if /I %datemodif% EQU %datetoday%
echo verif terminée : OK!!!!!! sur %%A
if /I %datemodif% NEQ %datetoday%
echo problème de sauvegarde sur %%A
)
pause
-----------------------------------------------------------

Reply

Marsh Posté le 30-08-2006 à 11:59:45    

bonjour,  
 
ton sujet m'interresse, car je cherche à supprimer le fichiers non modifiée depuis plus de 8 jours dans un répertoire, autant mettre nos manip en commun.
 
Je ne comprend néanmoins pas comment tu fais entrer la valeur de la date de modif dans ta variable.
peux tu m'expliquer ?
merci

Reply

Marsh Posté le 30-08-2006 à 11:59:45   

Reply

Marsh Posté le 30-08-2006 à 12:06:48    

salut, ba justement,  c'est ce que je cherche à faire, je ne sais pas comment on fait, je sais juste que pour afficher la date des dernieres modif ya la commande dir /T:W
 
j'attend la reponse du pro 'nglechau' :)
 
mais si tu as des idées ou un début de script tu peux les postes, ils sont les bienvenues :)

Reply

Marsh Posté le 30-08-2006 à 17:02:17    

pollen2k >> puisque tu débutes en script, ça te dirait d'oublier le très antédiluvien et très dépassé batch, et de passer à un langage plus puissant et plus contemporain ? (genre python, VB, etc...)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 31-08-2006 à 08:42:00    

Harkonnen a écrit :

pollen2k >> puisque tu débutes en script, ça te dirait d'oublier le très antédiluvien et très dépassé batch, et de passer à un langage plus puissant et plus contemporain ? (genre python, VB, etc...)


 
 
Salut, ba biensur que ça me dirait, mais, je pensais que celui là était le plus facile, et comme c'est pas mon métier... puis c'est surtout que je comprend au moin un minimum dans ce language tandis que les autres, suis pas sur... :) mais si tu peux m'aider tu est le buien venu :)

Reply

Marsh Posté le 31-08-2006 à 09:55:10    

(+1 avec Harko : en vb.net ce serait pas plus dur, pas plus cher, et beaucoup plus documenté)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed