我得到一个 .bat 文件,其中包含:
call C:\ProgramData\Anaconda3\Scripts\activate.bat
conda activate py36
python C:\Users\User\button5.py
conda deactivate
如果我直接从命令行运行它,它可以工作,但是当我执行.bat 文件时,它会在 conda activate py36 后停止,并且没有任何错误消息。
编辑:我现在知道问题所在了,当在正常提示符下执行脚本时,它不起作用,只有在管理员命令提示符下才起作用。但是当我以管理员身份运行 .bat 时,正常提示符就会启动。我如何强制它使用管理员命令打开?
答案1
是的,您可以让批处理文件自动提升:
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));
//
它将检查提升的权限,如果没有,则会出现一个 UAC 对话框,提示您输入管理权限。另一种方法:
@echo off & powershell.exe -command "& {Start-Process cmd.exe -ArguemntList 'conda activate py36 & python C:\Users\User\button5.py & conda deactivate' -Verb RunAs}"