Ce qu'il faut que tu saches c'est que dans un script batch sous windows pas de fonction ou de contrôle du flux comme dans bash ou autre langage évolué. A ce titre tu pourrait éventuellement essayer de te pencher vers le vbscript. Donc en gros en batch pas de fonction pas de if(...then), else, else if (elif), for, while, do...while, until, j'en passe et des meilleures...
Dans un fichier batch toutes les insctructions sont exécutées ligne par ligne et la seule possibilité de saut c'est l'utilisation de goto (méthode critiquée par de nombreux développeurs moi y compris... m'enfin on va pas réinventer les fichiers de commande windows)
Au vu de ce qui vient d'être dit je ne comprend pas trop l'utilité du deuxième set var ? Et pour couronner le tout je ne suis pas forcément plus à l'aise en batch windows donc la syntaxe après le = du premier var ne me dis rien sous Windows donc à par le fait que tu utilises une commande externe pour savoir si le processus explorer.exe est présent ou pas je ne le comprend pas trop En fait c'est jute le $(...) que je ne comprend pas...
Je vois plus ça comme ça mais ça reste à tester.
set var=$(qprocess | find "explorer.exe" /C)
if %var% == "0" goto test
if %var% == "1" goto fin
:test start explorer.exe
:fin taskkill /F /im explorer.exe