Ada*_*M-W 32 unix windows shell shebang command-prompt
我目前正在使用服务脚本在Windows 7上使用Node.js提供目录.它在MSYS shell中运行良好或使用sh,因为我已将node.exe和服务脚本放在我的〜/ bin中(这是在我的PATH上),只输入"serve"就可以了,因为它的Shebang(#!)指令告诉shell用节点运行它.
但是,Windows命令提示符似乎不支持没有*.bat或*.exe扩展名的普通文件,也不支持shebang指令.是否有任何注册表项或其他黑客可以强制这种行为从内置cmd.exe?
我知道我可以写一个简单的批处理文件来运行它与节点,但我想知道它是否可以在内置的fasion中完成所以我不必为这样的每个脚本编写脚本?
更新:实际上,我在想,是否有可能为所有'未找到的文件'等编写一个默认处理程序,我可以自动尝试在其中执行sh -c?
谢谢.
a_h*_*ame 50
是的,这可以使用PATHEXT环境变量.例如,它也用于注册.vbs或.wsh"直接"运行脚本.
首先,您需要扩展PATHEXT变量以包含该服务脚本的扩展(在下面我假设扩展名为.foo,因为我不知道Node.js)
默认值如下所示:
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
Run Code Online (Sandbox Code Playgroud)
您需要更改它(通过控制面板),如下所示:
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.FOO
Run Code Online (Sandbox Code Playgroud)
使用控制面板(控制面板 - >系统 - >高级系统设置 - >环境变量是必要的,以保持PATHEXT变量的值.
然后,你需要使用的命令是扩展到注册正确的"解释" FTYPE和ASSOC:
ASSOC .foo=FooScript
FTYPE FooScript=foorunner.exe %1 %*
Run Code Online (Sandbox Code Playgroud)
(上面的例子是从提供的帮助中无耻地获取的ftype /?.)
ASSOC和FTYPE将直接写入注册表,因此您需要一个管理帐户来运行它们.
小智 18
实际上看起来像是一个知道如何编写批处理文件的人比我也接近这个.他们的批处理文件可能会更好.
http://whitescreen.nicolaas.net/programming/windows-shebangs
Windows 的设计根本就不像 Unix/Linux。
我没有听说过,但这应该在超级用户上询问,而不是在这里。