@ECHO OFF
:Start
SET /P Enter user name:
SET /P Enter Password:
SET /P Enter age:
SET /p Enter Passeword:
对于上面给出的.bat文件。如何使用PYTHON传递参数
我想编写Python自动化脚本,该脚本调用批处理文件并在批处理文件中传递所需的参数
答案 0 :(得分:0)
虽然我不熟悉python,但您需要检查命令行的方式,然后使用python.exe
。
您需要修改您的批次,如:
@ECHO OFF
:Start
SET /P user_name=Enter user name:
SET /P password=Enter Password:
SET /P user_age=Enter age:
SET /p passEword=Enter Passeword:
然后:
call python.exe %user_name% %password% %user_age% %passEword%
答案 1 :(得分:0)
有两种方法可行:
后者的示例实现可以是:
from subprocess import Popen
import os
command = [
'mybatch.cmd'
]
params_by_env = {}
# "inherit" the current environment
for k,v in os.environ.items(): params_by_env[k] = v
# Specify the envvars for mybatch.cmd
params_by_env['USER_NAME'] = 'billg'
params_by_env['PASSWORD'] = 'killfree'
params_by_env['AGE'] = '60'
params_by_env['PASSEWORD'] = 'pa$$ew0rd'
proc = Popen(command,env=params_by_env)
proc.wait()
print "Finished"
.CMD脚本的修改版本可能如下所示:
@SETLOCAL
@ECHO OFF
:Start
IF "%USER_NAME%"=="" SET /P USER_NAME=Enter user name:
IF "%PASSWORD%"=="" SET /P PASSWORD=Enter Password:
IF "%AGE%"=="" SET /P AGE=Enter age:
IF "%PASSEWORD%"=="" SET /p PASSEWORD=Enter Passeword:
@ECHO Username: %USER_NAME%
@ECHO Password: %PASSWORD%
@ECHO Age: %AGE%
@ECHO Passeword: %PASSEWORD%
请注意SET /P
命令的更改,仅在未设置环境变量时执行它们并将值分配给环境变量。另请注意,USERNAME
是Windows环境中已存在的变量,因此您不希望将其用于此目的。这就是我选择USER_NAME
的原因。
安全警告:通常认为将密码放在命令行上(或在环境中 - 这两者都可以在机器上运行的其他程序轻松访问)是一件坏事™ 。有时必须这样做,但如果可能的话应该避免。对于此程序,您可以让Python脚本将输入发送到cmd脚本(我认为proc.communicate()
和.CMD脚本中的SET /P
)以提供密码。还有其他甚至更好的方法,但它们有时很难实现,也不完全安全。