none
Planificateur de tâches RRS feed

  • Discussion générale

  • Bonjour

    J'ai écrit un batch de test pour préparer une mise à jour sur une machine distante par robocopy.
    Ce test consiste dans une instruction de création de fichier.

    L'environnement utilisé est le suivant :
    une machine windows serveur 2012 R2 intégré à un domaine
    une machine indépendante (workgroup)  windows 7
    Une connexion réseau (C$) définie sur le serveur 2012 vers le disque C de la machine distante.
    le compte utilisé est le compte d'administrateur du serveur 2012 R2 exécutant le planificateur de tâches.

    le batch de 10 lignes  est le suivant :

    @echo off
    set RepSrce="D:\81 - Usinage\999 - Test Transfert Auto"
    set RepDest="Y:\WNC\home\d_xnc\p_p\prog\41 - BIESSE"

    set NomFichier=%date:~8,2%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%
    set NomFichier=%NomFichier: =0%
    set NomFich="%RepDest:~1,-1%\%NomFichier%test.txt"
    echo "Ligne 8 - TestEcrituresurRoverA-v3.bat - Ecriture sur Machine distante - %time%">%NomFich%
    set NomFich="%RepSrce:~1,-1%\%NomFichier%test.txt"
    echo "Ligne 10 - TestEcrituresurRoverA-v3.bat - Ecriture sur Machine locale - %time%">%NomFich%
    exit

    Quand le fichier batch de test est lancé manuellement, j'obtiens le comportement attendu à savoir :
    Ecriture du fichier yyddmmHHmmtest.txt sur le serveur 2012
    Ecriture du fichier yyddmmHHmmtest.txt sur la machine windows 7

    Quand le planificateur de tâches lance ce fichier, la tâche s'exécute sans erreur mais partiellement :
    Le fichier est correctement écrit sur le serveur 2012
    Mais rien n'est écrit sur la machine windows7

    NB autre difficulté set NomFichier=%NomFichier: =0% semble inopérant le premier fichier écrit est celui de 10h00 Quelle piste suivre?

    vendredi 20 janvier 2017 19:43

Toutes les réponses

  • Bonjour,

    Une (petite) remarque : à moins que vous ayez des contraintes particulières, vous auriez avantage à écrire votre script en Windows PowerShell. Il est tout à fait possible de lancer un robocopy en PowerShell. L'environnement Windows PowerShell est beaucoup plus souple que les scripts cmd.

    Une piste éventuelle, 

    Est-ce que la zone "Commencer dans (facultatif)" de l'action est bien renseignée avec le nom du chemin où se trouve le script à lancer.

    Pour le calcul de date et le problème rencontré, je vous suggère la modification suivante à adapter à vos besoins :

    set _DTE=%date:~6,4%-%date:~3,2%-%date:~0,2%
    if "%time:~0,1%"==" " (set _TIM=0%time:~1,1%h%time:~3,2%m) else (set _TIM=%time:~0,2%h%time:~3,2%m)

    Pour info, en PowerShell, l'équivalent de votre commande de calcul de date est :

    $DTE = (Get-Date).ToString("yyyyMMddHHmmss")


    Claude Couderc Consultant IIS, SharePoint, Exchange http://coudr.com


    dimanche 22 janvier 2017 09:17
  • Bonsoir

    Pour reprendre dans l'ordre du plus simple au plus complexe

    Le calcul de date est résolu, merci de votre réponse
    Concernant "commencer dans" il était vide, je n'ai pas noté de modification en le renseignant.
    Côté power shell, j'ai lu beaucoup, pour pouvoir écrire mon premier script.
    Mais pour l'instant échec :
    J'ai écrit un script principal, qui fait appel à deux fonctions.
    Le script fonctionne correctement lorsque je le lance depuis l'interface PowerShell ISE ou lorque je le lance depuis l'explorateur de fichier, mais ...
    Je retombe sur la même difficulté que celle rencontrée lors de ma première version Batch. Le planificateur de tâche, lance la première tâche, semble ne pas retrouver le programme appelant et refuse toute autre nouvelle exécution
    "Demande de lancement ignorée, l’instance est déjà en cours d’exécution"

    lundi 23 janvier 2017 23:47