python - 如何使用 Python 脚本为批处理文件提供输入?

标签 python arrays batch-file parameter-passing

假设我有一个批处理文件,它要求我输入姓名。我把我的名字输入。这是手动方式。

但我想用 Python 尝试一些东西。我是否可以在 Python 脚本中创建一个变量并将我的名字放入变量中,然后在请求输入时将该变量传递给 bat 文件?

我的 bat 文件的第一步是询问我的名字。询问名称批处理文件用于测试目的。我的主批处理文件有这段代码:

@ECHO OFF

:choice
set /P c=Do you want to continue [Y/N]?
if /I "%c%" EQU "Y" goto :yes
if /I "%c%" EQU "N" goto :no
goto :choice


:yes
"scripts\enter.py" yes
goto :continue

:no
"scripts\kick_out.py" no

:continue
pause 
exit

所以,我希望这对您有所帮助。我想传递大约 2 个输入。首先 Y 和其他调用 enter.py 时询问我的登录详细信息。我的用户名和密码。所以,我需要进行 3 次输入。我该怎么做?

最佳答案

这是可行的:我用它来注入(inject)使用不可打印的 ascii 字符(如空字节)的攻击字符串。

使用 Python 3 的示例:

inject_string.py

import ctypes
import time
import subprocess
import binascii


if __name__ =="__main__":
    response = "Y"

    p = subprocess.Popen("echo.bat", stdin = subprocess.PIPE)
    time.sleep(2)

    p.stdin.write(bytes(response, 'ascii')) #Answer the question
    print("injected string :", response)

echo.bat

@ECHO OFF

:choice
set /P c=Do you want to continue [Y/N]?
if /I "%c%" EQU "Y" goto :yes
if /I "%c%" EQU "N" goto :no
goto :choice

:yes
echo "User has typed yes"
goto :continue

:no
echo "User has typed no"

:continue
pause

Output

python inject_string.py
Do you want to continue [Y/N]?injected string : Y
"User has typed yes"

关于python - 如何使用 Python 脚本为批处理文件提供输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31153350/

相关文章:

c++ - 如何创建一个智能指针数组?

javascript - 展平嵌套回调

python - 如何根据参数值 "skip"多功能 python 脚本中的各个函数

使用二进制文件的mysql批处理模式

python - 如何使用 PyQt 组织布局

python - 在 INSTALLED_APPS 添加 "dependencies references nonexistent parent node"后出现 'pinax.notifications' 错误

python - Django 的表单框架是否使用 Django 消息框架?

arrays - 有没有办法在不使用循环的情况下将结构转换为数组?

java - 在java中执行批处理文件会产生意想不到的结果

android - 如何将 python 程序集成到 kivy 应用程序中