@ECHO OFF
:Start
SET /P Enter user name:
SET /P Enter Password:
SET /P Enter age:
SET /p Enter Passeword:
对于给定的上述.bat文件。我如何通过使用Python使用Python将参数传递到批处理文件
我想编写Python脚本的自动化调用该批处理文件,并传递所需的参数在批处理文件
@ECHO OFF
:Start
SET /P Enter user name:
SET /P Enter Password:
SET /P Enter age:
SET /p Enter Passeword:
对于给定的上述.bat文件。我如何通过使用Python使用Python将参数传递到批处理文件
我想编写Python脚本的自动化调用该批处理文件,并传递所需的参数在批处理文件
虽然我不熟悉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%
有,将工作两种方法:
后者的示例性实现可以是:
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
命令,只有执行他们,如果环境变量没有设置和值分配给ENV熨烫变量。另请注意,USERNAME
是Windows环境中已经存在的变量,因此您不希望将其用于此目的。这就是为什么我选择USER_NAME
。
安全买者:这通常被认为是一件坏事™把密码命令行(或环境中,这两者都是很容易接触到机器上运行的其他程序)上。有时候必须完成,但如果可能的话应该避免。在这个程序中,您可以让Python脚本将输入发送到cmd脚本(proc.communicate()
,我认为和SET /P
在.CMD脚本中)以提供密码。还有其他更好的方法,但它们有时很麻烦,而且也不完全安全。
我想写这将打开批处理文件的Python脚本的自动化和价值传递给它 –