在 Windows 批处理脚本中执行多行 python 代码
Execute multi-line python code inside Windows Batch script
我想在 Windows 批处理脚本中使用多行 python 语句。
比如我的BAT脚本是:
@echo off
echo "Executing Python Code..."
goto python_code
:python_code_back
echo "Executed Python Code!"
pause
exit()
:python_code
python -c print("""Python code running""")
goto python_code_back
python -c
适用于单个语句。但是让我的 python 代码嵌入是:
import random
num = input("Enter Number: ")
num = int(num)
if num%2 == 0:
print("Even")
else:
print("Odd")
exit()
如何将此 Python 代码 嵌入我的 Windows 批处理脚本不调用另一个 python 脚本或创建临时 python 文件?
我有一些选择:
将 python -c
与分号一起使用:我如何打算像 if 这样的代码
上面的陈述?如果有办法,人们可能仍然想要干净的代码
多行,但我很感激这个答案。
我可以 运行 python
并找到一种向解释器发送命令的方法吗?也许使用子流程?
有什么方法可以构建一个包含 python 代码的多行字符串,然后将其发送给 python 解释器或 python 命令?
在 bash 中,我们可以使用 EOF 来保持多行清洁。有没有类似的方法to this in BAT? I think no because people have proposed many workarounds。
能否使用 Batch 专门解释的 '''
(三个单引号)或 """
(三个双引号)语法?喜欢 here?
这样试试:
0<0# : ^
'''
@echo off
echo batch code
python %~f0 %*
exit /b 0
'''
import random
import sys
def isOdd():
print("python code")
num = input("Enter Number: ")
num = int(num)
if num%2 == 0:
print("Even")
else:
print("Odd")
def printScriptName():
print(sys.modules['__main__'].__file__)
eval(sys.argv[1] + '()')
exit()
用法示例:
call pythonEmbeddedInBatch.bat isOdd
call pythonEmbeddedInBatch.bat printScriptName
第一行将是 python 中的布尔表达式,但是批量重定向到一个空标签。批处理代码的其余部分将在多行 python 注释中。
我想在 Windows 批处理脚本中使用多行 python 语句。
比如我的BAT脚本是:
@echo off
echo "Executing Python Code..."
goto python_code
:python_code_back
echo "Executed Python Code!"
pause
exit()
:python_code
python -c print("""Python code running""")
goto python_code_back
python -c
适用于单个语句。但是让我的 python 代码嵌入是:
import random
num = input("Enter Number: ")
num = int(num)
if num%2 == 0:
print("Even")
else:
print("Odd")
exit()
如何将此 Python 代码 嵌入我的 Windows 批处理脚本不调用另一个 python 脚本或创建临时 python 文件?
我有一些选择:
将
python -c
与分号一起使用:我如何打算像 if 这样的代码 上面的陈述?如果有办法,人们可能仍然想要干净的代码 多行,但我很感激这个答案。我可以 运行
python
并找到一种向解释器发送命令的方法吗?也许使用子流程?有什么方法可以构建一个包含 python 代码的多行字符串,然后将其发送给 python 解释器或 python 命令?
在 bash 中,我们可以使用 EOF 来保持多行清洁。有没有类似的方法to this in BAT? I think no because people have proposed many workarounds。
能否使用 Batch 专门解释的
'''
(三个单引号)或"""
(三个双引号)语法?喜欢 here?
这样试试:
0<0# : ^
'''
@echo off
echo batch code
python %~f0 %*
exit /b 0
'''
import random
import sys
def isOdd():
print("python code")
num = input("Enter Number: ")
num = int(num)
if num%2 == 0:
print("Even")
else:
print("Odd")
def printScriptName():
print(sys.modules['__main__'].__file__)
eval(sys.argv[1] + '()')
exit()
用法示例:
call pythonEmbeddedInBatch.bat isOdd
call pythonEmbeddedInBatch.bat printScriptName
第一行将是 python 中的布尔表达式,但是批量重定向到一个空标签。批处理代码的其余部分将在多行 python 注释中。