Arrêter l'exécution d'un batch

Fermé
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - Modifié par mic13710 le 20/02/2015 à 10:08
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 20 févr. 2015 à 13:07
Bonjour,

Je souhaite créer par vba un fichier batch temporaire incorporant un timer pour pouvoir retarder une tâche pendant une durée assez longue, mettons 2 minutes.
Une fois le batch lancé par une commande shell, je voudrais pouvoir le supprimer si besoin pour annuler l'exécution de la tâche avant qu'elle ne soit lancée.
Est-ce que c'est possible et qu'elles peuvent-être les conséquences ?
Sinon, comment faire par vba pour arrêter l'exécution d'un batch ?

D'avance merci pour vos réponses



Michel

2 réponses

mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 354
20 févr. 2015 à 11:33
J'ai un peu creusé le sujet et je pense avoir trouvé une solution :
Plutôt que de vouloir supprimer le .bat, Il suffit de créer un fichier annexe qui servira de témoin.
Si durant l'exécution du batch le témoin est supprimé, alors la tâche est annulée par un goto exit.

Ca devrait marcher, seulement voilà, j'ai un souci pour faire fonctionner mon batch
echo off
echo xx > "chemin de mon fichier\nom du fichier témoin"
PING 1.1.1.1 -n 1 -w 60000 >NUL
if not exist "chemin de mon fichier\nom du fichier témoin" goto exit
del /q /f "chemin de mon fichier\nom du fichier témoin"
del /q /f "chemin de mon fichier\nom du fichier que je veux supprimer"
:exit
Windows me dit à la première instruction que le chemin du fichier est introuvable alors que c'est bien un chemin valide et que j'ai mis toutes les adresses entre guillemet.
En fait, il y a des accents dans le chemin de fichier, et comme le batch a été généré sous windows par VBA, DOS ne les comprend pas et les remplace pas des signes bizarres.

Il semblerait qu'en éditant le fichier sous dos, on puisse remplacer les lettres accentuées par les mêmes lettres accentuées qui seront correctement interprétées, mais c'est mission impossible pour un fichier éphémère et qui sera forcément différent pour chaque machine.

Comme je ne peux pas changer les noms des dossiers, y aurait-il une solution pour que les accents générés sous windows soient reconnus sous dos ?

0
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 354
20 févr. 2015 à 13:07
Après recherche, j'ai trouvé une piste intéressante dans ce sujet
https://forums.commentcamarche.net/forum/affich-27503289-batch-files-et-caracteres-accentues
Effectivement en leurrant le cmd, ça résout le problème des accents et mon code fonctionne.
echo off
chcp 1252
echo xx > "chemin de mon fichier\nom du fichier témoin"
PING 1.1.1.1 -n 1 -w 60000 >NUL
if not exist "chemin de mon fichier\nom du fichier témoin" goto fin
del /q /f "chemin de mon fichier\nom du fichier témoin"
del /q /f "chemin de mon fichier\nom du fichier que je veux supprimer"
:fin
chcp 850
exit
Je me pose la question de savoir si chcp 1252 est toujours le même quelle que soit la version windows ou bien est-ce qu'il peut être différent. Et dans ce cas est il possible au moyen d'un code vba de connaitre le code utilisé par le poste pour pouvoir l'inclure dans le batch ?
0