python - 如何在批处理脚本中嵌入 python 代码

标签 python windows bash batch-file

在 bash 中,我们可以:

python - << EOF
import os
print 'hello'
EOF

在 bash 脚本中嵌入 python 代码片段。

但在 Windows 批处理中,这不起作用 - 虽然我仍然可以使用 python -c 但这需要我将我的代码合并成一行,这是我试图避免的事情。

有没有办法在批处理脚本中实现这一点?

谢谢。

最佳答案

您可以使用混合技术,此解决方案也适用于 python 导入。

1>2# : ^
'''
@echo off
echo normal 
echo batch code
echo Switch to python
python "%~f0"
exit /b
rem ^
'''
print "This is Python code"

批处理代码在多行字符串 ''' 中,因此这对 python 是不可见的。
批处理解析器看不到 python 代码,因为它之前已经退出。

第一行是关键。
它对批处理和 python 都有效!
在 python 中,它只是一个没有输出的无意义的比较 1>2,该行的其余部分是 # 的注释。

对于批处理 1>2# 是流 1 到文件 2# 的重定向。
命令是一个冒号:这表示标签和标签行永远不会被打印。
然后最后一个插入符只是将下一行附加到标签行,因此批处理看不到 ''' 行。

关于python - 如何在批处理脚本中嵌入 python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467441/

相关文章:

python - 嵌套单行循环

python - 你能改变python中的索引吗?

python - 如何将 Google 文档列表 API 与非文档文件(例如 .jpeg .gif)一起使用?

ruby-on-rails - Windows 上的 Rails : Slow?

bash - 过滤床文件中的重叠条目

linux - 删除所有超过 60 天的目录及其文件,无论目录是否为空

python - PyQt 和 QML - 如何创建自定义数据模型

Windows批处理For循环将空字符串拖到最后

python - 为什么 Python 不能在 Windows 命令行上丰富地打印文本样式,而只能打印颜色?

bash - 在 ubuntu 中用 sed 替换字符串