gpt4 book ai didi

python - 从同一个批处理文件中读取第一行批处理文件?

转载 作者:可可西里 更新时间:2023-11-01 11:22:34 26 4
gpt4 key购买 nike

我有一个批处理文件,它试图运行第一行指定的程序。类似于 Unix 的 shebang :

C:\> more foo.bat
#!C:\Python27\python.exe
%PYTHON% foo-script.py
C:\>

我想知道的是:有没有办法自动%PYTHON%设置为C:\Python27\python.exe这是在 shebang (#!) 之后的脚本的第一行中指定的?

背景:我尝试这样做是为了在包装脚本中明确指定要调用的 Python 解释器(因为系统上安装了多个 Python 解释器)。

假设:您可以假设脚本已经知道它自己的文件名 (foo) 和 %~dp0是这个脚本的目录。我们如何阅读除 shebang 之外的第一行?

澄清:将 C:\PythonXY 添加到 %PATH% 不是解决方案。 shebang 行应该在用户机器上的安装时间(原始脚本仅在构建机器上生成)期间被修改......可能有多个相同版本的 Python 安装。并且只有 shebang 行是可修改的(这就是程序的工作方式)。

最佳答案

首先,在 Windows 上,不需要 shebang。最好将 Python 解释器的路径包含到运行脚本的用户的 PATH 环境变量中。也就是说,要批量获取第一行,您可以使用 set

set /p var=<file

既然你有多个版本的解释器,为什么不在调用脚本时使用正确的版本呢?

c:\python27\bin\python.exe myscript.py

编辑:

@echo off
set /p var=<test.py
call %var:~2% test.py

输出

C:\test>more test1.py
#!c:\Python26\python.exe

print "hello"


C:\test>more test.bat
@echo off
set /p var=<test1.py
call %var:~2% test1.py

C:\test>test.bat
hello

关于python - 从同一个批处理文件中读取第一行批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2143897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com