Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

start instable

4 réponses
Avatar
Alain Bourgeois
Bonjour,


J'ai chez plus de 100 clients le batch (.bat) suivant:
del backup.bat
start /wait appli.mdb
if exist backup.bat backup.bat

principe:
dans l'application (access), l'utilisateur peut demander un backup.
Auquel cas l'application génère un fichier backup.bat avec les copies
nécessaires.
Puis le batch le lance une fois l'application appli.mdb fermée.

Quand win xp sp3 est installé, start /wait appli.mdb rend la main
directement sans attendre que appli.mdb ne soit fermé par l'utilisateur
(et donc backup.bat n'est jamais créé).

Qu'est-ce qui peut expliquer ce nouveau comportement du start /wait ???
Et comment l'éviter?

Merci,
Alain

4 réponses

Avatar
Laurent Jumet
Hello Alain !

Alain Bourgeois wrote:

J'ai chez plus de 100 clients le batch (.bat) suivant:
del backup.bat
start /wait appli.mdb
if exist backup.bat backup.bat



Quand win xp sp3 est installé, start /wait appli.mdb rend la main
directement sans attendre que appli.mdb ne soit fermé par l'utilisateur
(et donc backup.bat n'est jamais créé).



Qu'est-ce qui peut expliquer ce nouveau comportement du start /wait ???
Et comment l'éviter?



Je parie que c'est parce que .MDB n'est pas défini dans PATHEXT:
PATHEXT=.COM;.EXE;.BAT;.BTM;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.LNK

Essaie de le rajouter dans le Batch lui-même comme ceci:

SETLOCAL ENABLEEXTENSIONS
SET PATHEXT=%PATHEXT%;.MDB
del backup.bat
start /wait appli.mdb
if exist backup.bat backup.bat


Par prudence, il faudrait aussi que tu désignes BACKUP.BAT et APPLI.MDB par leur chemin complet, car s'il y a changement de dossier ils deviennent inaccessibles.


--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]
Avatar
Alain Bourgeois
Bonjour,

1. Le pathext n'est pas le souci: le .mdb se lance bien dans access...
mais le batch considère qu'il se termine immédiatement et n'attend pas
que le .mdb soit fermé.
2. j'ai su reproduire le souci sous win xp sp3: selon que l'on aie ou
pas déjà lancé une ligne de commande cmd.exe, le start se comporte
différemment.
3. Si je lance start /?, c'est bien le start - commande interne qui est
lancé, pas un start.vbs/.com/.exe/.bat venu d'ailleurs.
4. Ce souci ne se produit pas sous win xp sp2 (des dizaines
d'utilisateurs sous xp sp2 et vista n'ont pas ce souci (et sans jamais
avoir touché au pathext).
5. Le pc "problématique" a été infecté par un virus par le passé, virus
enlevé depuis par nod32 (pc apparemment clean), mais est-ce lié, je ne
sais pas. Le problème se produit toujours même si nod32 est désactivé.
6. J'ai deux cas de figure sur ce pc:
soit le start ne rend pas la main même quand access est fermé,
soit le start rend la main sans qu'access ne soit fermé,
mais bien que le start démarre le .mdb, je n'arrive pas à faire en
sorte que son comportement soit correct, même en redémarrant le pc et en
activante ou désactivant l'anti-virus.
Y a-t'il moyen de "déboguer" le comportement du start? Rien dans
l'event viewer en tout cas.

J'ai pour l'instant contourné le souci en insérant un "pause" entre le
"start" et le "if exist" (la fenêtre DOS étant en arrière-plan, ca ne
pose pas de souci, l'utilisateur fait <enter> pour démarrer le backup).
Mais j'ai peur que les dizaines d'autres client n'aient le même souci
après installation du sp3, et s'imaginent que leur backup est fait alors
que ce n'est pas le cas (car si le pc tombe en panne sans backup, cela
peut coûter cher et ma responsabilité/réputation peut en prendre un
coup).



Laurent Jumet wrote:

Hello Alain !

Alain Bourgeois wrote:

> J'ai chez plus de 100 clients le batch (.bat) suivant:
> del backup.bat
> start /wait appli.mdb
> if exist backup.bat backup.bat

> Quand win xp sp3 est installé, start /wait appli.mdb rend la main
> directement sans attendre que appli.mdb ne soit fermé par l'utilisateur
> (et donc backup.bat n'est jamais créé).

> Qu'est-ce qui peut expliquer ce nouveau comportement du start /wait ???
> Et comment l'éviter?

Je parie que c'est parce que .MDB n'est pas défini dans PATHEXT:
PATHEXT=.COM;.EXE;.BAT;.BTM;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.LNK

Essaie de le rajouter dans le Batch lui-même comme ceci:

SETLOCAL ENABLEEXTENSIONS
SET PATHEXT=%PATHEXT%;.MDB
del backup.bat
start /wait appli.mdb
if exist backup.bat backup.bat

Par prudence, il faudrait aussi que tu désignes BACKUP.BAT et APPLI.MDB par leur chemin complet, car s'il y a changement de dossier ils deviennent inaccessibles.

--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]


Avatar
Th.A.C
Alain Bourgeois a écrit :

start /wait appli.mdb







essaye comme ca

start "" /wait appli.mdb

Sinon, il se peut que le programme lancé lance lui-même un autre
programme et se termine juste après avoir lancé le 2eme programme.
Dans ce cas, on ne peut pas savoir quand se termine ce fameux 2eme
programme.

Regarde si les installations sont bien toutes identiques (même version
d'Access, Runtime pour les uns et version complète pour les autres, ...)

Tu peux aussi vérifier ce qui est véritablement lancé (msaccess.exe ou
bien un autre fichier de commande?)
Avatar
Laurent Jumet
Hello Alain !

Alain Bourgeois wrote:

1. Le pathext n'est pas le souci: le .mdb se lance bien dans access...



...oui mais ce n'est pas *la même chose*, car si le PATHEXT ne le contient pas, tu sors de l'interpréteur de commandes.
As-tu essayé ceci:

SETLOCAL ENABLEEXTENSIONS
SET PATHEXT=%PATHEXT%;.MDB
del backup.bat
start /wait appli.mdb
if exist backup.bat backup.bat


--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]