Bonjour,
en batch :
tu peux "linker" , lier les appels.
cela permet d'enchainer les appels de scripts et fonctions.
par exemple : pour remettre les fichiers systèmes en état :
sfc /Scannow & dism /online /cleanup-image /restorehealth :: 1 seul & est utilisé.
pourtant toute la ligne est dans le 'buffer'.
sfc /Scannow & dism /online /cleanup-image /restorehealth
1 seul & : toute la ligne est dans le buffer, mais la partie 'droite' est executée si et seulement si la partie gauche est réussie.
Quelle différence ?
1 seul & => command_1 et command_2 sont lancées , et executées.
2 & => command_1 est excutée ; PUIS commande_2
c'est utile pour chainer des appels.
et appliquer une contrainte.
"si 1 échoues , toute ligne échoues". [ effet de bord !!!! ]
"si 1 réussi , 2 est lancé" => & [ c'est séquencé et dépendant de la réussite de chaque ]
"si 1 réussi , 2 est lancé" ou " 1 échoues , 2 est lancé " [ sans effet de bord, c'est séquencé et exclusif ] => &&
" mes appels sont 'successifs' ( serial ) ; plutot que 'asynchrone' ( parallel ).
===========
pour gérer au mieux des 'trigger' pour un jour de la semaine :
il faut créer une task ...
par GUi dans le "task scheduler",
ou par une ligne de commande Batch.
pour ta question :
dans le cas ou tes taches peuvent être lancés indépendamment,
1 & fait un parfait travail.
si elles dépendent l'une de l'autre , et que la deuxième dépends de la première , tu les 'link' avec double & ( && ).
dans ton batch
si tu utilises start ... c'est 'asynchrone|parallel' ( & ) car plusieurs sessions console sont crées
si tu fais sans start ... c'est 'successif/serial' ( && ) dans la même session.
le setlocal, tu peux le laisser, il redéfinit des variables 'chemin' , des adresses disques durs, ( et des paramètres fenetres / typo / couleur /canal dédier / et les variables étendues ),
en fait à remettre setlocal dans ton script , tu 'reset/RAZ' temporairement l'environement console du Pc en question le temps de l'execution.
2 exemples :
====monBatch-1
commande_1 // succes ou échec
commande_2 // succes ou échec
commande_3 // succes ou échec
commande_4 // succes ou échec
=========
=========
c'est équivalent à :
====monBatch-2
commande_1 && commande_2 && commande_3 && commande_4
=========
========= c'est 'optimistic' // un échec n'est pas un gros problème. appel de commande suivant .....
pas besoin d'utiliser 'start' .
si ton idée c'est d'ouvrir plusieurs fenetres 'console' ( plein plein plein de 'cmd' ):
start sera une syntaxe réduite.
start cmd /k dir /S *.*
start cmd /k tree
start cmd /k shutdown /r 60 //( secondes )
/k conserves la fenetre ouverte à la fin de l'execution
/u la refermes.
start cmd /k chkdsk /f /R && start cmd /k defrag c:
ou :
start cmd /k chkdsk /f /R & start cmd /k defrag c: ( 1 seul & )
Message édité par djinto le 13-05-2021 à 00:35:24