Con un po' di testardaggine ho ottenuto quello che volevo
Il problema è che nel nome delle label per i GOTO vengono considerati solo i primi 8 caratteri. L'ho trovato scritto nella documentazione per Windows
2000, per windows
2003 e anche per Windows
XP, anche se abbiamo visto che in quest'ultimo caso non è poi tanto vero (e nemmeno negli altri 2 secondo me) e il BAT alla fine funziona.
La limitazione delle 8 lettere è invece assolutamente esatta per Windows 98/ME (e DOS).
Quindi chiamare le 2 etichette dell'ERRORLEVEL in questo modo...
Process_NotFound
Process_Found
... falsa il risultato del file batch, perché in entrambi i casi i primi 8 caratteri sono
Process_. Levando il trattino a uno dei 2 (e al riferimento dopo il GOTO) va tutto ok:
- Codice: Seleziona tutto
@echo off
pv.exe %1 >nul
IF ERRORLEVEL 1 GOTO :ProcessNotFound
:Process_Found
echo Process %1 is running
GOTO END
:ProcessNotFound
echo Process %1 is not running
GOTO END
:END