File .bat non eseguito dopo che conda ha attivato py36

Aug 17 2020

Ho un file .bat contenente:

call C:\ProgramData\Anaconda3\Scripts\activate.bat
conda activate py36
python C:\Users\User\button5.py
conda deactivate

Se lo eseguo direttamente dalla riga di comando funziona, ma quando eseguo il file .bat si ferma dopo che conda attiva py36 senza messaggi di errore.

Modifica: ora vedo il problema, quando lo script viene eseguito nel prompt normale non funziona, funziona solo nel prompt dei comandi dell'amministratore. Ma quando eseguo il .bat come amministratore si avvia il normale prompt. Come posso forzare l'apertura con admin cmd?

Risposte

1 WasifHasan Aug 16 2020 at 23:15

Sì, puoi elevare automaticamente il file batch:

goto="Batch" /*
:Admin
call C:\ProgramData\Anaconda3\Scripts\activate.bat
conda activate py36
python C:\Users\User\button5.py
conda deactivate
exit /b 0
:RunAsAdmin
color 4f & echo Running Admin Shell, Please wait.... & call cscript //nologo /e:JScript "%~f0" RunAsAdmin "%1" & exit /b
:"Batch"
@echo off & setlocal enabledelayedexpansion & cls
openfiles >nul 2>&1 || goto :RunAsAdmin
goto :Admin
:"JScript" */
function RunAsAdmin(self, arguments) { WSH.CreateObject('Shell.Application').ShellExecute(self, arguments, '', 'runas', 1) }
if (WSH.Arguments.length>=1 && WSH.Arguments(0)=='RunAsAdmin') RunAsAdmin(WSH.ScriptFullName,WSH.Arguments(1));
//

Verificherà i privilegi elevati e, se non presenti, una finestra di dialogo UAC per richiedere i privilegi amministrativi. Un altro modo:

@echo off & powershell.exe -command "& {Start-Process cmd.exe -ArguemntList 'conda activate py36 & python C:\Users\User\button5.py & conda deactivate' -Verb RunAs}"