我用代码制作了一个vbs脚本:
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("""MainForm.exe""")
Set objShell = Nothing
该脚本在MainForm.exe所在的文件夹中运行。一切正常,MainForm.exe开始使用此脚本运行。
但是,我需要该脚本仅运行一个文件夹。问题开始了(包含MainForm.exe的文件夹称为Deploy)。我在上层文件夹中创建了一个脚本:
CreateObject("WScript.Shell").Run("""G:\ROOT\KnowledgeBaseProdukcija\Deploy\MainForm.exe""")
但这一直告诉我:
似乎MainForm.exe可以运行,但是出了点问题?我也尝试过相对路径(这是我的首选方式),但结果相同:
CreateObject("WScript.Shell").Run("""..\KnowledgeBaseProdukcija\Deploy\MainForm.exe""")
我只是不明白两个脚本有什么区别?
看来您的MainForm.exe在工作目录中寻找文件。由于已从MainForm.exe
二进制文件所在目录的外部调用了它,因此它无法找到所需的内容。
这可能是需要在MainForm应用程序代码中修复的问题。它可能正在尝试使用相对路径打开文件,并期望该文件与包含二进制文件的目录是相对的,但实际上它实际上是相对于工作目录而言的。
您可以通过设置CurrentDirectory
Shell对象的属性来解决此问题:
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.currentdirectory = "G:\ROOT\KnowledgeBaseProdukcija\Deploy\"
shell.Run("""G:\ROOT\KnowledgeBaseProdukcija\Deploy\MainForm.exe""")
在MainForm.exe
s内部,string thatpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
用于查找安装路径,并用于Path.Combine(thatpath, "./relative/path/to/resource")
加载您希望位于相对于可执行文件的路径中的任何文件,以从源头解决问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句