Das sieht aus wie ein unfairer Vergleich zwischen einem schlecht geschriebenen Batch-One-Liner und einem vollwertigen Bash-Skript (ich bin damit einverstanden, dass cmd.exe wesentlich eingeschränkter ist).
Warum entfernen Sie bei der Deinstallation die ersten 3 Zeichen vom Ordnernamen?
Diese Charge könnte funktionieren:
@Echo off for /D %%f in (*) do ( If exist "%f\setup.py" ( PushD "%%f" pip uninstall "%%f" pip install . PopD ) )