有没有一种方法可以让Windows任务计划程序自动响应Python脚本中的input()?

时间:2019-07-17 15:58:13

标签: python input scheduled-tasks

我正在尝试安排python脚本在Windows 10计算机上自动运行。该脚本单独运行时,会提示用户输入一些运行时要使用的输入。我想在调度程序运行.bat文件时自动设置这些输入。例如:

test.py

def main():
    name = input('What is your name? ')
    print(f'Hello, {name}. How are you today?')

main()

如果我只运行脚本,这很好用,但是理想情况下,我希望从name文件中将.bat变量传递给它。

test.bat

"path\to\python.exe" "path\to\test.py"
pause

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您只想提供一个固定的输入,可以这样做:

REM If you add extra spaces before `|` those will be passed to the program
ECHO name_for_python| "path\to\python.exe" "path\to\test.py"

不幸的是,没有好的方法可以将其扩展到多行。您将使用一个文件,其中包含您要为此输入的行:

"path\to\python.exe" "path\to\test.py" < file_with_inputs.txt

如果要将所有内容都放入独立脚本中,则可以执行以下操作:

REM Choose some path for a temporary file
SET temp_file=%TEMP%\input_for_my_script
REM Write input lines to file, use > for first line to make sure file is cleared
ECHO input line 1> %temp_file%
REM Use >> for remaining lines to append to file
ECHO input line 2>> %temp_file%
ECHO input line 3>> %temp_file%
REM Call program with input file
"path\to\python.exe" "path\to\test.py" < file_with_inputs.txt
REM Delete the temporary file
DEL %temp_file% /q

很明显,这是假设您不能使用标准的sys.argv(或扩展名argparse),这是将参数发送到脚本的更标准,更方便的方法。