gpt4 book ai didi

python - 使用 python 代码运行 .bat 文件 [Powershell 模式]

转载 作者:行者123 更新时间:2023-12-01 21:51:02 25 4
gpt4 key购买 nike

Proxy.bat文件包含

@ECHO OFF 1>NUL 2>NUL
powershell -Command $pword = read-host "enter password" -AsSecureString ; $BSTR=
[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ;
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt & set /p password=
<.tmp.txt & del .tmp.txt
>NUL set http_proxy=http://%1:%password%@abc.yz.com:80
>NUL set https_proxy=https://%1:%password%@abc.yz.com:80
>NUL set no_proxy=abc.yz.com

Python代码

from subprocess import Popen
import subprocess
def run_batch_file(file_path):
Popen(file_path,creationflags=subprocess.CREATE_NEW_CONSOLE)

run_batch_file("D:\\gower\\proxy.bat")

密码请求未执行。您能否建议我如何使脚本使用密码响应执行。

最佳答案

您的主要问题 - 至少如发布的那样 - 是您传播了以 powershell 开头的命令。跨多行(不使用 cmd.exe 的行继续机制,即行尾的 ^ ,但仅在 "..." 字符串之外)。

这是一个简化的版本,也消除了对临时文件的需要,通过 for /f循环(PSv5+ 语法):

for /f "usebackq delims=" %%i in (`
powershell -c "[pscredential]::new('unused', (Read-Host 'enter password' -AsSecureString)).GetNetworkCredential().Password"
`) do set "password=%%i"

注意:由于您正在创建运行批处理文件的进程,然后使用标志 subprocess.CREATE_NEW_CONSOLE 运行 PowerShell ,当批处理文件完成时,新创建的控制台窗口将自动关闭,因此为了查看进程的输出,您必须将其重定向到文件或放置 pause例如,在批处理文件的末尾。

关于python - 使用 python 代码运行 .bat 文件 [Powershell 模式],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59701503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com