Это выглядит как несправедливое сравнение плохо написанного пакета с одним вкладышем и полноценного bash-скрипта (я согласен, что cmd.exe гораздо более ограничен).
Почему вы удаляете первые 3 символа из имени папки при удалении?
Эта партия может работать:
@Echo off for /D %%f in (*) do ( If exist "%f\setup.py" ( PushD "%%f" pip uninstall "%%f" pip install . PopD ) )