IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Aide sur fichier batch


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 67
    Points
    67
    Par défaut Aide sur fichier batch
    Bonjour,

    J'ai cree ce petit fichier .bat pour faire mes sauvegardes de dossiers automatiquement.

    J'aimerais savoir s'il est possible d'afficher l'heure de creation du dossier principal dans son nom pour que cela donne ceci :

    BACKUP SITES et DB EASYPHP - (01 09 2005 - 15h35)

    Ci ce n'est pas possible, comment faire pour incrementer le nom du nouveau dossier en BACKUP SITES et DB EASYPHP - (01 09 2005 - 02) si une nouvelle sauvegarde se fait le meme jour ?

    Voici mon fichier BATCH :

    @echo off
    title BackUp Automatique - /!\ NE PAS INTERROMPRE /!\
    echo.
    echo.
    echo **********************************************************
    echo * BackUp Automatique de www & DB de EASYPHP sur G Laptop *
    echo **********************************************************
    echo.
    echo.
    for /f "tokens=1-3 delims=/" %%a in ('date /t') do set dossier=BACKUP SITES et DB EASYPHP - (%%a %%b %%c)
    md "E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%"
    echo.
    md "E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%\WWW\"
    xcopy "C:\Program Files\EasyPHP1-8\www\*" "E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%\WWW\" /E
    echo.
    echo Copie WWW Terminée...
    echo.
    md "E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%\DATA\"
    xcopy "C:\Program Files\EasyPHP1-8\mysql\data\*" "E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%\DATA\" /E
    echo.
    echo Copie DATA Terminée...
    echo.
    (
    @echo Sauvegarde de www et data effectuée le
    date /t
    echo à
    time /t
    ) > "E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%\resume.txt"
    echo Processus fini !
    :Fin
    Merci

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Salut, %dossier% s’est une variable d’environnement ?
    Par ce que si oui sa ne sert a rien de mettre le chemin complet comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     E:\DOCUMENTS PRIVES FLUSH\AW Design\BACKUPS\%dossier%"
    Tu mets juste %dossier% et sa sufi.

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    inspire toi de ceci si il correspond à ton pb:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    @echo off
     
     rem Obtient la date du jour.
     rem renseigne avec la date du jour la variable : DATE 
    call "%LDTOOLS%\Setdate.cmd"
    
     rem * Variables de travail  *
    set Origine=D:\Backup
    if not exist %Origine% goto error1
    
    set /A Count=0
     
     rem Crée le répertoire de backup
     rem permet + exécution dans la même journée
    :Inc_Count
    set CIBLE=%Origine%\Backup_%DATE%-%Count%
    if Exist %cible% Set /A Count+=1&Goto Inc_Count
    md %Cible%
    
     rem E sous répertoire même vide
     rem H fichier caché et système
     rem C continue la copie en cas d'erreur
     rem K attributs
     rem O Acl
    XCopy "%HomeDrive%%Homepath%\*.*" "%Cible%" /E /H /C /K /O
    
    goto ok
    :ok
    Echo Backup effectue sur %Cible%
    goto end
    :error1
    Echo Erreur :
    Echo Le repertoire "%Origine%" n'existe pas.
    pause
    goto end
    
    :end
    
    Set Origine=
    Set Cible=
    le fichier SetDate (sous XP %Date% existe déjà nativement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    echo off
     rem Insére la date systéme dans une variable 
    
     rem recupére la date. Le parametre /T renvoie une ligne contenant 2 "mot"
     rem  le premier = le nom du jour 
     rem le deuxiéme = la date 
     rem on place donc le 2 ieme dans la variable
    for  /f "tokens=1-2 " %%A in ('Date /T') do set date=%%B
    
     rem le séparateur de format de date par défaut est "/"
     rem ce caractére est interdit dans les noms de fichier
     rem On utilise ce caractére séparateur pour parser la date JJ MM YYYY
     rem enfin on reconstruit la date avec le nouveau séparateur
     rem On peut utiliser la variable DATE comme nom de fichier.
     rem attention on code la date sur 10 caractéres (2+1+2+1+4)
     rem SOUS XP DATE=jj/mm/aaaa
    for  /f "tokens=1-3 delims=/" %%A in ('echo %DATE%') do set date=%%A-%%B-%%C

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Re Laurent Dardenne, pourriez vous me donner juste le code qui permet de créer un dossier avec la datte SVP?

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call "Setdate.cmd" 
    Md D:\Backup\%Date%

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Merci encore, je viens de créer un batch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call "Setdate.cmd" 
    Md D:\Backup\%Date%
    Mais il me renvoi "Erreur de syntaxe"

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 67
    Points
    67
    Par défaut
    Voici monn nouveau batch :

    @echo off
    title BackUp Automatique - /!\ NE PAS INTERROMPRE /!\
    echo.
    echo.
    echo **********************************************************
    echo * BackUp Automatique de www & DB de EASYPHP sur G Laptop *
    echo **********************************************************
    echo.
    echo.
    set Origine=E:\DOCUMENTS_PRIVES_FLUSH\AWDesign\BACKUP_SITE_ET_DB_EASYPHP
    echo.
    set /A Count=0

    :Inc_Count
    for /f "tokens=1-3 delims=/" %%a in ('date /t') do set DOSSIER=%origine%\BACKUP-(%%a %%b %%c)-%count%
    if Exist %dossier% Set /A Count+=1&Goto Inc_count
    md "%dossier%"
    echo.
    md "%dossier%\WWW\"
    xcopy "C:\Program Files\EasyPHP1-8\www\*" "%dossier%\WWW\" /E
    echo.
    echo Copie WWW Terminée...
    echo.
    md "%dossier%\DATA\"
    xcopy "C:\Program Files\EasyPHP1-8\mysql\data\*" "%dossier%\DATA\" /E
    echo.
    echo Copie DATA Terminée...
    echo.
    (
    @echo Sauvegarde de www et data effectuée le
    date /t
    echo à
    time /t
    ) > "%dossier%\resume.txt"
    echo Processus fini !
    :Fin
    Il me crée bien ma première sauvegarde cependant lorsque je veux créer la meme sauvegarde le meme jour, il n'incremente pas le %count% !!

    Merci de votre aide.

  8. #8
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Re bonjour à tous, j’avais oublier que quand un chemin ou non de fichier contiens % il faut le mettre entre guillemets, j’ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call "Setdate.cmd" 
    Md “D:\Backup\%Date%”
    Le dossier est bien créer mais en faite au lieux de faire un seul dossier avec la date complète comme « 02\08\2005 » il fait un première dossier « 02 » dans le quel il créer un deuxième dossier « 08 » dans lequel il créer un troisième dossier » 2005.
    Sauriez vous arranger sa ?

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Furius évite de poster dans le même thread on se mélange les pinceaux.
    Principe de base une question=un thread.
    Imagine un forum avec un seul thread !!

    Citation Envoyé par Furius
    Sauriez vous arranger sa ?
    A prioris le batch SetDate n'existe pas, tu utilises donc la variable %DATE% d'XP, sa syntaxe est "01/10/2005". Le '/' est un délimiteur de répertoire, ta syntaxe demande donc de créer une suite de répertoire.

    Si le fichier batch existait le délimiteur serait '-' dans ce cas pas de pb.

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par Flushovsky
    Merci de votre aide.
    le mieux lorsqu'on crée des batch et de pratiquer un peu le debug, voilà ça c'est fait
    C'est à dire qu'en creusant un peu, 10 mn, la solution est simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    set Origine=C:\temp\test
    echo. 
    for  /f "tokens=1-2 " %%A in ('Date /T') do set date=%%B
    rem for  /f "tokens=1-3 delims=/" %%A in ('echo %DATE%') do set date=%%A-%%B-%%C
    rem ou
    for  /f "tokens=1-3 delims=/" %%A in ('echo %DATE%') do set Jour=%%A&set Mois=%%B&set Année=%%C
    
    echo date=%date%
    set /A Count=0
    
    :Inc_Count 
    set DOSSIER=%origine%\BACKUP-(%Jour% %Mois% %Année%)-%count%
    if Exist "%dossier%" Set /A Count+=1&Goto Inc_count
    md "%dossier%" 
    :Fin
    1- recopie l'exemple en entier, tu as recopier une partie du batch de construction de la date
    2- ta modification utilise des espaces dans le nom de répertoire
    3- utilise dans ce cas les guillemets

    Dans ta construction tu "mixes" le tout sur une seule ligne, il est préférable de scinder les opérations. Cela facilite la maintenance et le debug. En tout cas pour les batch.

    Bon backup !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 67
    Points
    67
    Par défaut
    Ok

    Merci pour ces conseils judicieux

    Ceci dit, j'ai quand meme passé du temps à essayer de régler mon problème avant de demander de l'aide à des personnes qualifiées.

    Mais quand ca devient urgent de terminer, c pas facile de résister à la facilité

    Merci en tous cas de ton aide et encore désolé pour le post similaire dans ce forum, c'était pas voulu.

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Flushovsky
    Mais quand ca devient urgent de terminer, c pas facile de résister à la facilité
    C'est vrai.
    Citation Envoyé par Flushovsky
    et encore désolé pour le post similaire dans ce forum, c'était pas voulu.
    Pas de probléme
    A+

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 67
    Points
    67
    Par défaut
    Merci, ca marche impec

    Voici le batch final pour ceux que ca interresse :
    @echo off
    title BackUp Automatique - /!\ NE PAS INTERROMPRE /!\
    echo.
    echo.
    echo **********************************************************
    echo * Le Titre Que Vous Voulez *
    echo **********************************************************
    echo.
    echo.
    set Origine=chemin du dossier ou seront enregistrées les sauvegardes
    echo.
    for /f "tokens=1-2 " %%A in ('Date /T') do set date=%%B
    rem for /f "tokens=1-3 delims=/" %%A in ('echo %DATE%') do set date=%%A-%%B-%%C
    rem ou
    for /f "tokens=1-3 delims=/" %%A in ('echo %DATE%') do set Jour=%%A&set Mois=%%B&set Année=%%C

    echo date=%date%
    set /A Count=0

    :Inc_Count
    set DOSSIER=%origine%\Nom de votre dossier de backup - (%Jour% %Mois% %Année%) - %count%
    if Exist "%dossier%" Set /A Count+=1&Goto Inc_count
    md "%dossier%"
    echo.
    md "%dossier%\Nom du nouveau dossier ou seront sauvegardées les infos provenant du chemin 01\"
    xcopy "chemin 01 vers les informations à sauvegarder*" "%dossier%\Nom du nouveau dossier précédemment créé ou seront sauvegardées les infos provenant du chemin 01\" /E
    echo.
    echo Copie Terminée...
    (
    @echo Sauvegarde effectuée le
    date /t
    echo à
    time /t
    ) > "%dossier%\Infos-Backup.txt"
    :Fin
    Voilà

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette aide, celà m'a bien aidé !!!
    Vive les sauvegardes automatiques générées dans des dossiers datés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide sur fichier excel.
    Par anasleco dans le forum Excel
    Réponses: 2
    Dernier message: 11/09/2008, 23h45
  2. Aide sur fichier WSDL et Jax WS
    Par silverfab34 dans le forum Services Web
    Réponses: 2
    Dernier message: 16/10/2007, 14h05
  3. aide sur les batchs
    Par h_raf dans le forum Windows
    Réponses: 2
    Dernier message: 20/03/2007, 23h16
  4. Aide sur Fichier Formsweb
    Par momo9237 dans le forum Forms
    Réponses: 5
    Dernier message: 16/06/2006, 21h38
  5. Saisie à l'aide de fichier batch
    Par Ti-Pou dans le forum Installation
    Réponses: 2
    Dernier message: 14/02/2006, 01h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo