Tệp .bat không được thực thi sau khi conda kích hoạt py36

Aug 17 2020

Tôi có một tệp .bat chứa:

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

Nếu tôi chạy nó trực tiếp từ dòng lệnh, nó hoạt động, nhưng tôi thực thi tệp .bat thì nó sẽ dừng sau khi conda kích hoạt py36 mà không có thông báo lỗi.

Chỉnh sửa: Bây giờ tôi thấy vấn đề, khi tập lệnh được thực thi trong lời nhắc bình thường, nó không hoạt động, nó chỉ hoạt động trong dấu nhắc lệnh của quản trị viên. Nhưng khi tôi chạy .bat với tư cách là quản trị viên, lời nhắc bình thường bắt đầu. Làm thế nào tôi có thể buộc nó mở bằng cmd quản trị?

Trả lời

1 WasifHasan Aug 16 2020 at 23:15

Có, bạn có thể làm cho tệp hàng loạt tự động nâng lên:

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));
//

Nó sẽ kiểm tra các priviliges nâng cao và nếu không hiển thị một hộp thoại UAC để nhắc cho priviliges quản trị. Cách khác:

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