如何解决尽管没有批处理文件的扩展名,但可以将任意文件例如.vbs混合脚本文件运行为批处理脚本
即使扩展名与批处理文件使用的扩展名不同,有没有办法使cmd.exe像运行批处理脚本一样运行文本文件的内容?
我问,因为我创建了混合VBScript和Batch脚本文件。现在,我指向的是一个扩展名为.bat的硬链接,但是文件可以自调用起来要简单得多。
这是我目前正在使用的设置示例:
C:\Users\USER_REDACTED\AppData\Roaming\Microsoft\Windows\Start Menu\Programs>tree /F
Folder PATH listing
Volume serial number is ****-****
C:.
│ Genie.bat
└───Startup
Genie.vbs
大型部分已删节,但重要部分在那里。 Genie.bat和Genie.vbs是指向我的文档文件夹中同一文件的硬链接,我将共享下一个代码。
警告:复制粘贴此部分将不起作用,我已将控件字符替换为用作占位符的字符来表示它。对于未来的Google员工,如果您想要混合脚本文件,则正在寻找this answer。
::'␚@ECHO OFF
::'␚wsl.exe genie -i
::'␚Rem echo Executed at: %TIME% > genie.log
::'␚EXIT
Set WshShell = CreateObject("WScript.Shell")
Set FSObject = CreateObject("Scripting.FileSystemObject")
Set ScriptDirectory = FSObject.GetFolder(FSObject.GetParentFolderName(WScript.ScriptFullName))
WshShell.CurrentDirectory = ScriptDirectory
WshShell.Run chr(34) & "..\Genie.bat" & chr(34),0
Set WshShell = Nothing
Set FSObject = Nothing
Set ScriptDirectory = Nothing
这利用了一个怪癖,其中我已将SUB控制字符替换为用于表示它的符号,该注释可用于进行注释,而该注释被CMD.exe批处理解释忽略,并受到VBScript的解释器的尊重。因此,当以.bat扩展名作为批处理脚本运行时,它将运行第一部分,然后在VBScript中运行第二部分。现在,此文件在上面的目录中运行带有.bat扩展名的硬链接。它还必须做一些事情,以确保脚本执行的工作目录与文件系统中脚本文件/硬链接的位置相同,因为启动运行程序似乎使用了不同的目录。
但是我还无法弄清楚如何说服CMD.exe将其解析为批处理脚本。我全力以赴用VBScript制作了一个混合脚本文件,因此登录时没有烦人的控制台窗口,但是目前它需要具有.bat扩展名的硬链接才能正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。