Page 1 sur 1

Problème avec le planificateur [Résolu]

Posté : dim. 22 mai 2016 20:51
par cyrille
Bonjour,

Je me suis créé un batch que j'exécute à une heure précise en utilisant le planificateur de tâches (PT) de W7.
Il s'agit de l'exécution de la commande xcopy entre 2 dossiers écrite dans un batch.
J'ai ajouté la commande de redirection pour que les messages de résultats soient stockés dans un fichier
Exemple : xcopy c:\dossier1 c:\dossier2 > /E /Y /D > rapport.txt
Dans ce fichier, il faudrait que j'ai :
"fichier tartenpion.txt"
" 1 fichier copié"
qui s'affiche habituellement à l'écran après l'exécution d'une commande xcopy.

Problème : Si je me place dans le dossier où se trouve le batch, et si j'exécute le batch à partir de l'Invite de Commandes (IC), les fichiers sont copiés et le rapport généré.
Si j'essaye avec le PT, j'obtiens "Accès refusé" dans l' IC qui s'affiche automatiquement.
Par contre, si je supprime l'option de redirection dans le batch, la sauvegarde se fait.

Pour être plus précis, voici la commande litigieuse :
xcopy "C:\Program Files (x86)\Collectorz.com\Movie Collector\*.*" "D:\DOSSIERS\DOSSIERS par DEFAULT ET SAUV\SAUV\COLLECTORZ\DONNES 2015" /E /Y /D > rapport.txt

Si quelqu'un comprend quelque chose ...
Merci d'avance pour l'aide.

Cyrille E.

Re: Problème avec le planficateur

Posté : dim. 22 mai 2016 21:25
par Alain Quarré
La différence est le contexte dans lequel est exécuté le script.

Quand tu l'exécutes manuellement, son contexte est le dossier où le script se trouve.
Quand tu l'exécutes par tâches planifiée, son contexte est dans le dossier C:\Windows\System32
et sans les droits admin, l’accès en écriture de ce dossier est refusé.

Plusieurs solutions pour corriger cela.
  • Déplacer le contexte dans la tâche planifiée.
    dans le champ 'Commencer dans (facultatif)', renseigne le dossier ou tu veux le rapport.
  • Déplace le contexte dans le script lui-même;
    Mets la ligne CD /D %~dp0 au début du script.
  • Redirige la sortie du rapport en donnant le chemin absolu et non simplement le nom du fichier.
    ex: xcopy c:\dossier1 c:\dossier2 /E /Y /D>C:\Users\Truc\Desktop\script\rapport.txt
Perso, j'utilise la méthode 2 (CD /D %~dp0)

NB: évite les espace avant et après >
NB2: xcopy est obsolète, préfère Robocopy. (avec comme avertissement que mal utilisé, Robocopy peut être très destructeur)

Re: Problème avec le planficateur

Posté : mar. 24 mai 2016 19:56
par cyrille
J'ai réussis avec la première solution.

Pour CD /D %~dp0, il faut que je cherche ce que cela signifie.
Quelque sites peut-être pour éclairer mes lanternes peut-être ceux déjà indiqués (je n'ai pas eu encore le temps de lire)

Quant à la troisième solution : pigé

Merci pour votre aide.

Re: Problème avec le planificateur [Résolu]

Posté : mar. 24 mai 2016 22:53
par PatriciaG
Bonjour,
cyrille a écrit :Pour CD /D %~dp0, il faut que je cherche ce que cela signifie.
Voici la réponse à ta question.
il suffit d'utiliser la variable %~dp0 qui renvoie le chemin du dossier où se trouve le batch.
Source : http://www.commentcamarche.net/forum/af ... in-courant
J'ai un fichier cmd qui contient la ligne suivante : cd /d %~dp0
Censé (vous dîtes si je me trompe) initialiser le répertoire courant avec le répertoire parent du fichier cmd lancé.
Source : http://www.commentcamarche.net/forum/af ... irconflexe

Les pages suivantes t'apporteront des réponses complémentaires :
http://stackoverflow.com/questions/1830 ... in-windows
http://saladtomatonion.com/blog/2013/01 ... cript-bat/
http://ss64.com/nt/syntax-args.html - en particulier http://ss64.com/nt/cd.html

@+

Re: Problème avec le planificateur [Résolu]

Posté : mer. 25 mai 2016 00:22
par Alain Quarré
cyrille a écrit :Pour CD /D %~dp0, il faut que je cherche ce que cela signifie.
LA variable %0 contient le chemin absolu et le nom du script
Tu peux extraire de cette variable différentes valeurs, comme le disque (d) et le chemin (p) (le p de path, chemin en anglais)

dons, si ton script et son chemin sont:
C:\Truc\Machin\Dossier\Script.cmd
%~d0 = C:
%~p0 = \Truc\Machin\Dossier\
et tu peux associer d et p, ce qui nous donne:
%~dp0 = C:\Truc\Machin\Dossier\
on utilise alors la commande CD pour déplacer le Current Directory vers le dossier où le script se trouve.
l'option /D permet à CD de changer aussi de lecteur si besoin est.

Il y a d'autre possibilité d'extraction d'info de la variable %0
%~n0 = Script
%~x0 = .cmd
%~nx0 = Script.cmd

Si tu as bien suivi, tu en déduiras que
%~dpnx0 = %0
Logique, non?

Plus d'info sur cela avec la commande:
for /? dans une fenêtre de commande.

++

Alain

Re: Problème avec le planificateur [Résolu]

Posté : mer. 25 mai 2016 00:36
par PatriciaG
Bonjour,
Alain Quarré a écrit : Si tu as bien suivi, tu en déduiras que
%~dpnx0 = %0
Logique, non?
Merci pour ces explications très claires assorties d'une conclusion limpide. :)
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure,
L'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément.
Source : De L'Art poétique - Nicolas Boileau

@+