我正在尝试安排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
任何帮助将不胜感激!
答案 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
),这是将参数发送到脚本的更标准,更方便的方法。