Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3015 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] script executé par serveur pour systeme de backup

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] script executé par serveur pour systeme de backup

n°1351644
placebomus​e2
Posté le 22-04-2006 à 00:09:53  profilanswer
 

Bonjour à tous,
 
Je dois (très rapidement) ecrire des fichiers .bat pour un serveur, dans le cadre d'un projet professionnel, or je n'ai jms codé en batch et cela risque de me prendre du temps (trop).
Je suis sûr qu'il y'a parmi vous des pros de batch qui pourront faire ca en 5min ;) , alors par avance merci si vous pouvez m'aider :
 
    * Il faut un fichier (qui sera executé tous les soirs vers 1h du mat) qui, dans un repertoire donné X, parcours tous les sous repertoires A,B,C.... Dans chacun de ces sous repertoires il recupere les fichiers qui ont été modifié la veille et si il y'en a, crée un repertoire portant la date de la veille (du type YYYY-MM-DD) et deplace les fichiers trouvés à l'interieur. Ainsi au final on aura une arborescence du type A>2006-04-20, A> 2006-04-19, B>2006-04-20, etc.....
 
Voila déjà si j'ai ça ce serait vraiment génial !
 
    * Dans un deuxième temps il faudrait que ce même script ou un autre, lors de la consultation de chaque sous repertoire A,B,C,.. verifie si un repertoire porte le nom d'une date supérieur à 90 jours, dans ce cas il le deplace vers un autre lecteur....
 
    * Pour finir...... comme cette arborescence n'a pas été mis en place depuis le debut du backup, actuellement les sous repertoires A,B,C,... sont pleins de fichiers modifiés a des dates differentes. Il faudrait donc un dernier script permettant de trier et ranger tous les fichiers existant comme indiqué ci-dessus.
 
Ouf ! c'est fini. Je vous remercie par avance.

mood
Publicité
Posté le 22-04-2006 à 00:09:53  profilanswer
 

n°1351709
wackevat
Posté le 22-04-2006 à 09:01:21  profilanswer
 

[:zytrahusathome]

n°1351723
placebomus​e2
Posté le 22-04-2006 à 10:28:30  profilanswer
 

^^ mais encore ?

n°1351728
wackevat
Posté le 22-04-2006 à 10:54:58  profilanswer
 

Bah tu ne veux pas un Max et 100E en plus ??
 
Le forum est là pour t'aider à résoudre un souci précis, pas pour faire le boulot à ta place (cf. charte entre autres).
 
Sans compter que la recherche existe, que ces problèmes ont déjà abordés 200 fois mini, que avec un minimum d'efforts tu aurais trouvé un truc qui marche à peu près, alors tu débarques comme ça, tu lances direct ton sujet genre "je passe plus tard ramasser les copies", ça le fait moyen quoi ! :sarcastic:
 
Si tout le monde fait comme toi, on n'est pas sortis de l'auberge.

n°1351758
placebomus​e2
Posté le 22-04-2006 à 12:04:37  profilanswer
 

wackevat a écrit :

Bah tu ne veux pas un Max et 100E en plus ??


un Mars... non j'aime pas ca..
 
Plus sérieusement, je n'ai demandé à personne de me pondre le script niquel d'un coup..... toute aide, que ce soit des liens, ou des éléments de réponse, est bienvenue.
Le but étant pour moi de ne pas passer des heures à chercher sur le net, pour quelque chose d'assez simple (mais lorsque l'on a jamais programmé dans un langage, simple ou pas, ca prend tjs du temps).
 
Merci à toi d'avoir pris le temps de lire mon sujet.

n°1351763
wackevat
Posté le 22-04-2006 à 12:18:21  profilanswer
 

placebomuse2 a écrit :

je n'ai demandé à personne de me pondre le script niquel d'un coup..... toute aide, que ce soit des liens, ou des éléments de réponse, est bienvenue.


Justement on n'a rien vu de tout ça dans ton post d'ouverture.
 
Et je répète, la fonction de recherche marche très bien et ton sujet n'a rien de nouveau.

n°1351816
placebomus​e2
Posté le 22-04-2006 à 14:03:49  profilanswer
 

wackevat a écrit :

Justement on n'a rien vu de tout ça dans ton post d'ouverture.
 
Et je répète, la fonction de recherche marche très bien et ton sujet n'a rien de nouveau.


 
Dsl alors si je ne me suis pas fait comprendre, je repete je cherche donc juste des fragments de code me permettant d'aboutir au script que j'ai énoncé plus haut.
 
J'ai déjà effectué des recherches sur le forum et je dispose d'un tutoriel, mais je n'ai pas vraiment reussi à exploiter ce que j'ai trouvé.  
Je répéte je n'ai absolument aucune notion en script batch, je passe la plupart de mon temps à programmer en Java... bref, rien à voir.  

n°1351838
wackevat
Posté le 22-04-2006 à 14:46:00  profilanswer
 

Et qu'est-ce que tu as déjà trouvé ? Qu'est-ce qui fonctionne déjà ? Quels sont les messages d'erreur retournés par le script actuel ?

n°1351857
placebomus​e2
Posté le 22-04-2006 à 15:50:49  profilanswer
 

Par exemple, peut-on faire directement des operations sur les dates ? Car pour recuperer les fichiers modifiés la veille dans le repertoire A puis creer un sous repertoire A/date de la veille, ce serait plus pratique que :

Citation :


Code :
 
FOR /F "tokens=1* delims=/" %%A IN ("%DATE%" ) DO SET DAY=%%A
SET /A DAY=%DAY%-1
FOR /F "tokens=2-3* delims=/" %%A IN ("%DATE%" ) DO SET DIRNAME=%%B-%%A-
SET DIRNAME=%DIRNAME%%DAY%
ECHO %DIRNAME%


ceci marche très bien mais dans l'état actuel il faudrait une batterie de test pour verifier qu'on est pas le 1er du mois, si le mois d'avant a 30 ou  31 jours, si l'année est bisextile...etc

Message cité 1 fois
Message édité par placebomuse2 le 22-04-2006 à 15:51:57
n°1351867
wackevat
Posté le 22-04-2006 à 16:14:01  profilanswer
 

placebomuse2 a écrit :

ceci marche très bien mais dans l'état actuel il faudrait une batterie de test pour verifier qu'on est pas le 1er du mois, si le mois d'avant a 30 ou  31 jours, si l'année est bisextile...etc


Par exemple :
http://forum.hardware.fr/hardwaref [...] 3264-1.htm
http://forum.hardware.fr/hardwaref [...] 4243-1.htm

mood
Publicité
Posté le 22-04-2006 à 16:14:01  profilanswer
 

n°1352675
placebomus​e2
Posté le 24-04-2006 à 14:02:41  profilanswer
 


Merci bien !

 

J'ai un petit soucis, voici un bout de mon code :

 
Citation :

:CHKFILES
 

 


for %%a in (%mypath%*) do call :CHKTHISFILE %%a
 

 

 


:CHKTHISFILES
 
set myfile=%*
 
ECHO %myfile%
 
dir %myfile% > dir.tmp
 
findstr %MYDATE% dir.tmp
 

 

Ca marche, mais ca ne boucle pas ! Après avoir traité le 1er fichier du repertoire, le prog s'arrete.

 

Avez-vous une idée ?

 

Merci  :jap:

 

n°1352761
placebomus​e2
Posté le 24-04-2006 à 15:23:41  profilanswer
 

^^ bon si en fait ca boucle :D
en revanche j'ai un autre soucis :
 

Citation :


:CHKFILES
for %%a in (%mypath%*) do call :CHKTHISFILE %%a
goto END
 
 
:CHKTHISFILE
set myfile=%*
ECHO %myfile%
dir %myfile% > dir.tmp
findstr %MYDATE% dir.tmp
 
if ERRORLEVEL 0 xcopy %myfile% %mypath%%DIRNAME%
 


 
Quelque soit le resultat de findstr, le prog rentre dans le if, pourquoi ?

n°1352775
PepMat
Posté le 24-04-2006 à 15:29:50  profilanswer
 

placebomuse2 a écrit :


Quelque soit le resultat de findstr, le prog rentre dans le if, pourquoi ?


 
Un IF errorlevel X passe quand la valeur de l'erreur est SUPERIEURE ou égale au chiffre indiqué.
 
Par conséquent un IF errorlevel 0 passe dans tous les cas.


Message édité par PepMat le 24-04-2006 à 15:30:23
n°1352780
placebomus​e2
Posté le 24-04-2006 à 15:34:03  profilanswer
 

^^ merci c parfait ;)

n°1352846
placebomus​e2
Posté le 24-04-2006 à 16:31:49  profilanswer
 

je cherche maintenant a recuperer uniquement le nom des repertoires appartenant a mon repertoire courant, voici mon code  :
 

Citation :


FOR /F "skip=5 usebackq delims=> tokens=2" %%i IN ('dir %mypath%') DO ECHO %%i


 
J'obtiens :
.
..
Repertoire1
Repertoire2
 
Comment faire pour que les lignes . et .. ne fassent pas parti du résultat ???  
Merci

n°1352851
wackevat
Posté le 24-04-2006 à 16:37:44  profilanswer
 

placebomuse2 a écrit :

je cherche maintenant a recuperer uniquement le nom des repertoires appartenant a mon repertoire courant


dir /b /a:d

n°1352891
placebomus​e2
Posté le 24-04-2006 à 17:14:01  profilanswer
 

^^ merci :)
 
est-ce que quelqu'un est capable de me dire pkoi lorsque je fais :
 

Citation :


FOR /f in ('dir %mypath% /b /a: d') DO call :CHKDIRFILES %%i
 
:CHKDIRFILES
set getdirectory=%*
set DIRPATH=%mypath%%getdirectory%\%DIRNAME%
MKDIR %DIRPATH%
 


 
(sachant que mypath= test\, que getdirectory=A (B, C, etc..) et DIRNAME=23-04-2006)
 
 le programme me crée bien le répertoire 23-04-2006 dans test\A\ , test\B\, etc... mais qu'il le crée egalement systematiquement dans test\ ??


Message édité par placebomuse2 le 24-04-2006 à 17:14:24
n°1352930
wackevat
Posté le 24-04-2006 à 17:50:21  profilanswer
 

Il faut sauter ta procédure après la boucle for :
 

Code :
  1. for ... () do ()
  2. goto end
  3. :chkdirfiles
  4. ....
  5. :end

n°1352968
placebomus​e2
Posté le 24-04-2006 à 18:20:39  profilanswer
 

^^ oups...en effet


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] script executé par serveur pour systeme de backup

 

Sujets relatifs
scriptchanger un script
batch : extraire la difference entre 2 fichiers[Batch] Automatiser save file en codage ANSI
pb caracteres joker dans un batch windowsBesoin d'un script
Variable en batchScript de formulaire à modifier/améliorer
script qui scan des rep avec html et qui remplace des motsscript simple mais je ne suis qu'un débutant :D
Plus de sujets relatifs à : [Batch] script executé par serveur pour systeme de backup


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR