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 XP Discussion :

Schtasks, chemin de l'éxécutable avec des espaces, solution


Sujet :

Windows XP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Points : 54
    Points
    54
    Par défaut Schtasks, chemin de l'éxécutable avec des espaces, solution
    bonsoir,

    j'essaie de lancer par programmation (visual basic 2008) une commande de batch (Schtasks ...) sous XP Pro SP3. Elle fonctionne si mon exe est par exemple calc.exe,
    par contre dés que je veux executer un programme dans un des dossiers, impossible!!

    Voici ma ligne de commande: doc1
    dans la console ouverte, la tâche a bien été mise en planifié: doc2.jpg
    et le message dans le log des tâches planifiées aprés traitement: doc3.jpg


    au vu des trés nombreux essais, recherches .. je suis incapable de passer correctement le paramétre de l'arborescence du programme à exécuter et de sa cible (Démarrer dans), par contre le delete des batchs en liste est OK

    Cette tâche fonctionne si elle est définie manuellement par l'utilitaire 'Création de tâches planifiées'

    Voici le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            ' effacer le fichier batch qui pourrait exister
            CmdLigneJob = "cmd /c schtasks.exe /delete /S \\" & S_system & " /U " & U_username & " /P " & P_password & " /TN " & TN_taskname & " /F"
            Shell(CmdLigneJob, AppWinStyle.MinimizedNoFocus, True)
    
            ' preparer les paramétres du prochain
            If Batch.Checked = True Then
                If Grab(SelGrab) = "Hebdomadaire" Then D_days = AbrevQuelJour(SelQuelJour)
                If Grab(SelGrab) = "Quotidienne" Then D_days = "*"
    
                CmdLigneJob = "cmd /k schtasks /Create /S \\" & S_system & " /U " & U_username & " /P " & P_password & " /TN " & TN_taskname & " /TR " & TR_taskrun & " /SC " & SC_schedule & " /D " & D_days & " /ST " & ST_starttime
                MsgBox(CmdLigneJob)
                Shell(CmdLigneJob, AppWinStyle.MinimizedNoFocus, True)
            End If
    le user est définit à l'éxecution: l'administrateur et son mot de passe (seul utilisateur du PC)

    Merci de votre aide, je séche!

    PS incapable de passer la troisiéme piéce jointe ! mystére
    bref le message de l'ordonanceur est de deux parties, d'abord
    1 0x00000003: Le chemin d'accés spécifié est introuvable.
    2 0x80070005: Accés refusé
    Images attachées Images attachées   

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut


    1er point : tu essaies de te connecter sur l'ordinateur distant \\ENIAC, est ce qu'il ne faudrait pas que ton chemin, des lors, ressemble à \\Eniac\mon_dossier\programme.exe ?
    inversement, Ssi le prog est executé en local, par contre, peut etre qu'il faut enlever le /S \\Eniac, non?

    2eme point : si ca marche pour calc et pas pour un autre exe, c'est probablement parce que calc est dans "path" windows. est ce que si tu changes ton path windows pour le faire pointer vers le dossier de ton executable, ca marche?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Flamby38 Voir le message


    1er point : tu essaies de te connecter sur l'ordinateur distant \\ENIAC, est ce qu'il ne faudrait pas que ton chemin, des lors, ressemble à \\Eniac\mon_dossier\programme.exe ?
    inversement, Ssi le prog est executé en local, par contre, peut etre qu'il faut enlever le /S \\Eniac, non?

    2eme point : si ca marche pour calc et pas pour un autre exe, c'est probablement parce que calc est dans "path" windows. est ce que si tu changes ton path windows pour le faire pointer vers le dossier de ton executable, ca marche?
    merci deta réponse, toutefois
    1 avec ou sans le path /S le pb est identique, Eniac est le système local, et pour le delete des travaux précédents il marche.

    Citation de la doc MS : /S system A value that specifies the remote computer to connect to



    2 si tu regardes la première piéce jointe, le path est celui du fichier à exécuter /TR \C:\......\Guide.exe que je pense mal décrire (j'ai essayé avec des quotes /TR "C:\.....\Guide.exe" , peine perdue puisque l'ordonanceur démarre mais me renvoie les deux messages d'erreur cités.

    citation doc MS : /TR taskrun A value that specifies the path and file name of the task to be run at the scheduled time. For example: C:\Windows\System32\calc.exe.

    As tu une autre piste?

    Merci et à plus

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    Citation de la doc MS : /S system A value that specifies the remote computer to connect to
    remote computer signifie bien ordinateur distant, donc via réseau, maintenant si ca marche quand meme quand tu mets ton nom d'ordinateur local, je suppose que le problème ne vient effectivement pas de là.

    quand je te parlais de path, je te parle du path windows, c'est à dire ce qui apparait quand tu tapes "path" dans dans une fenetre DOS.

    voila la manip que je te propose de tester :
    tu ouvres une fenetre de commande cmd.
    tu tapes "path"
    il va te retourner path=c:\windows;machin;truc;
    tu vas lui rajouter le dossier de ton executable en tapant la commande suivante :
    "path c:\windows;machin;truc;c:\mondossier\monfichier.exe"
    (il faut lui remettre ce que tu as vu dans le path et rajouter ton chemin).
    tu retapes "path" pour verifier que ta commande a été prise en compte.
    et enfin tu retestes ton programme voire si c'est mieux ou pas.

    C'est peut etre pas ca du tout mais bon, ca coute rien d'essayer

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Flamby38 Voir le message
    tu vas lui rajouter le dossier de ton executable en tapant la commande suivante :
    "path c:\windows;machin;truc;c:\mondossier\monfichier.exe"
    (il faut lui remettre ce que tu as vu dans le path et rajouter ton chemin).
    tu retapes "path" pour verifier que ta commande a été prise en compte.
    et enfin tu retestes ton programme voire si c'est mieux ou pas.

    C'est peut etre pas ca du tout mais bon, ca coute rien d'essayer
    Manip faite, mais pas de changement!
    voici le texte de l'erreur récupérée dans le log SchedLgU.Txt

    "BatchGuide.job" (Guide.exe) 07/06/2008 07:11:00 ** AVERTISSEMENT **
    Répertoire de travail non valide..
    L'erreur spécifique est*:
    0x00000003: Le chemin d'accès spécifié est introuvable.
    Vérifiez que le répertoire existe et réessayez.
    "BatchGuide.job" (Guide.exe) 07/06/2008 07:11:00 ** ERREUR **
    Impossible de commencer la tâche.
    L'erreur spécifique est*:
    0x80070005: Accès refusé.
    Essayez de localiser l'application avec le bouton Parcourir de la page des tâches.
    [ ***** Les opérations les plus récentes sont listées ci-dessus ***** ]

    Il me semble bien que le pb tourne autour de l'art et la maniére de définir le chemin de l'éxecutable et des droits pour y accéder.

    Concernant le chemin /TR je fourni le chemin complet C:\Program_Files\...\Guide.exe essayé avec et sans quote mais toujours sans résultat!

    Concernant les droits, mon nom d'utilisateur est administrateur, disposant des droits d'administrateur, et son mot de passe!

    bref le blues!


    mais qui donc a déja utilisé ce fichu API et posséde sa syntaxe?

    Merci de ton aide et à plus

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Points : 54
    Points
    54
    Par défaut Quelques précisions suppmémentaires
    Si l'executable à lancer est rangé dans "C:\DossierErnie\ProgrammeErnie\" la tâche planifiée est créée et exécutée! Bravo!!!

    Par contre si le chemin est "C:\Dossier Ernie\Programme Ernie\" les blancs mettent la pagaïlle, la tache planifiée est créée et à l'exécution plouf

    Pour éviter ce souci je pensai qu'il fallait remplacer les blancs dans la ligne de commande par _ soit: "C:\Dossier_Ernie\Programme_Ernie\" erreur, visiblement, ça ne marche pas


    Quel est donc ce fichu caractére de remplacement des blancs?

    Merci de vos contributions

  7. #7
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 73
    Points : 86
    Points
    86
    Par défaut
    il suffit de doubler les guillemets, car pour faire passer un chemin avec du blanc dedans il faut mettre des guillemet en plus de ceux qui font comprendre au compilateur que le chemin est une chaine de caractère. il y a bien le %20 mais c pas la solution a ton problème.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Points : 54
    Points
    54
    Par défaut Bug ou inexpérience?
    Citation Envoyé par Kaderovich Voir le message
    il suffit de doubler les guillemets, car pour faire passer un chemin avec du blanc dedans il faut mettre des guillemet en plus de ceux qui font comprendre au compilateur que le chemin est une chaine de caractère. il y a bien le %20 mais c pas la solution a ton problème.

    merci de ton intérêt, quelques précisions car certes ta solution couvre les cas ou un espace figure dans le chemin du fichier dans une ligne de commande, mais dans le cas du stasks.exe la présence d'un espace interdit à l'ordonanceur des tâches planifiées de lancer la tâche en utilisant stasks.exe


    un exemple pour être plus clair, cette variable décrit le chemin utilisé par stasks.exe (Guillemet= " )ce qui est la mise en oeuvre de ta recommendation:

    TR_taskrun = Guillemet + "C:\Program Files\Ernie\guide.exe" + Guillemet KO


    ce que je croyais être la solution normale
    TR_taskrun = Guillemet + "C:\Program_Files\Ernie\guide.exe" + Guillemet KO


    enfin
    TR_taskrun = Guillemet + "C:\ProgramFiles\Ernie\guide.exe" + Guillemet OK

    le problème est donc de savoir décrire un chemin d'accés à un fichier, dans le cas de stasks.exe pour un fichier appartenant à un dossier de Program Files, non réservé de XP.

    Ne souhaitant pas réinstaller mon système et l'ensemble des programmes sous Programs Files la solution est ?
    Merci de ta contribution, place aux suggestions. Bye

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    salut,

    essaye de rajouter des \ en plus des guillemets comme décrit dans le lien suivant :

    http://windowsitpro.com/article/arti...not-start.html

    autre possibilité, tu peux essayer d'utiliser l'argument /V1, mais je sais pas si il existe sous XP, c'est peut etre valable que sur vista.

    Bonne chance.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Points : 54
    Points
    54
    Par défaut Flamby38 a trouvé la solution
    Citation Envoyé par Flamby38 Voir le message
    salut,

    essaye de rajouter des \ en plus des guillemets comme décrit dans le lien suivant :

    autre possibilité, tu peux essayer d'utiliser l'argument /V1, mais je sais pas si il existe sous XP, c'est peut etre valable que sur vista.

    Bonne chance.

    Super et un trés grand merci problème résolu, ce qui marche:


    1 en fichier cmd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Schtasks /Create /TN "BatchGuide" /TR "\"C:\Program Files\Team MediaPortal\Guide\Programmes\Guide.exe\"arguments" /SC "Toutes les semaines" /SD 08/06/2008 /ST 10:37:00
    2 dans un programme avec shell:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        
    TR_taskrun = Guillemet + "\" + Guillemet + "C:\Program Files\Team MediaPortal\Guide\Programmes\Guide.exe\" + Guillemet + "arguments" + Guillemet
    
    CmdLigneJob = "schtasks /Create  /RU " & U_username & " /RP " & P_password & " /TN " & TN_taskname & " /TR " & TR_taskrun & " /SC " & SC_schedule & " /D " & D_days & " /ST " & ST_starttime
                Shell(CmdLigneJob, AppWinStyle.MinimizedNoFocus, True)
    dans ce dernier exemple Guillemet, variable string, Guillemet = Chr(34)


    J'ai modifié le titre pour faciliter la recherche de ceux qui rameront avec le même problème, merci pour ton aide

    PS: V1 n'existe pas sous XP

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Woohoo !
    Merci !

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

Discussions similaires

  1. chemin d'accès avec des espaces ?
    Par black bulldog dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2014, 11h11
  2. Gérer un chemin avec des espaces
    Par helaaa dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/03/2013, 20h15
  3. Problème de chemin de fichier avec des espaces
    Par Akronyme dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 18h12
  4. os.system et chemins avec des espaces
    Par frenchy404 dans le forum Général Python
    Réponses: 3
    Dernier message: 08/12/2006, 23h03
  5. Réponses: 18
    Dernier message: 29/08/2006, 00h07

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