让 Windows 在双击时使用 Shebang 运行文件?

use*_*686 8 windows windows-7 shell-extensions

是否有任何适用于 Explorer 的 shell 扩展程序可以#!在开头使用shebang执行文本文件?

Jde*_*eBP 5

您与 Microsoft 的文件模型有很大的冲突。在 POSIX 模型中,文件名根本不指示文件是否可执行。这只是权限的范围。在 Windows 资源管理器中使用的 Microsoft 模型中,文件是否可执行还取决于其文件,特别是扩展名。因此就有了FTYPE命令、ASSOC命令、PATHEXT环境变量等等。

因此,附带条件是,这仅限于具有.CMD扩展名的文件,为了适应上述模型,实际上有一个扩展名会将以 开头的文件传递#!给该行上指定的脚本解释器。它是JP Software 的 TCC,一个替代命令解释器,同时支持#!EXTPROC。可以告诉资源管理器将所有文件移交.CMD给 TCC,TCC 反过来将读取文件#!并将其移交给指定的脚本解释器。

如果您想#!在资源管理器中使用任何其他文件扩展名,那么您就会遇到范式冲突,并且您必须切换到使用文件扩展名关联,就像使用 CGI 脚本的人在 超链接到的文章中所做的那样new123456。Windows 资源管理器使用的范例是确定脚本解释器的扩展名,而不是文件内容中的幻数。