Explorer 是否有任何 shell 扩展可以执行以#!
shebang 开头的文本文件?
答案1
你的观点与微软的文件模型相悖。在 POSIX 模型中,文件名根本不决定文件是否可执行。这完全是权限的问题。在 Windows 资源管理器中使用的微软模型中,文件是否可执行还由其文件姓名,特别是通过扩展。因此,FTYPE
命令、ASSOC
命令、PATHEXT
环境变量等等。
所以,但这仅限于扩展.CMD
名为为了符合上述模型,实际上是一个扩展,它将以 开头的文件传递给#!
该行上指定的脚本解释器。它是JP Software 的 TCC,一个替代的命令解释器,它有并支持#!
EXTPROC
。可以指示 Explorer 将所有.CMD
文件交给 TCC,TCC 随后读取#!
并交给指定的脚本解释器。
如果您想#!
在资源管理器中使用任何其他文件扩展名,那么您就会遇到范式冲突,并且您必须切换到使用文件扩展名关联,就像 超链接到的文章中 CGI 脚本的人所做的那样new123456
。扩展名确定脚本解释器,而不是文件内容中的魔法数字,是 Windows 资源管理器使用的范式。
答案2
如果你的文本文件恰好是 Python 文件,那么你可以使用pylauncher.
来自文档:
PEP 397 兼容的 Windows 下 Python 启动器。请参阅 http://www.python.org/dev/peps/pep-0397/对于 PEP, http://www.red-dove.com/screencasts/launcher/la... 用于截屏直播