【问题标题】:Change the executing path of external process改变外部进程的执行路径
【发布时间】:2023-07-10 22:31:01
【问题描述】:

我有一个通过 jscript(使用 cscript)运行的外部应用程序。 问题是这个外部应用程序从它的执行路径中读取它的 cfg。例如,如果我单击 exe,它可能是 c:\program\myapp。

但是每当我通过我的 jscript 运行程序时,它的可执行路径都会设置为 c:\,因此它找不到它的配置文件。这个程序是所谓的“便携式”,所以它没有注册表项可以找到它自己的位置。

是否有通过脚本启动应用程序并仍然保持其真实路径而不是脚本引擎路径?

问候

乔纳斯

【问题讨论】:

    标签: jscript wsh


    【解决方案1】:

    看看这篇文章:

    http://blogs.technet.com/b/heyscriptingguy/archive/2005/02/01/how-can-i-change-the-working-folder-of-a-script.aspx

    示例代码在 VBScript 中,但很容易转换为 JScript。

    第一个关键是使用WshShell对象的CurrentDirectory属性:

    var objShell = new ActiveXObject("Wscript.Shell");
    objShell.CurrentDirectory = "C:\\Windows";
    

    第二个关键是提取可执行文件的目录名。文章通过拆分路径来做到这一点,但我更喜欢使用FileSystemObject

    var programPath = "C:\\MyApp\\myapp.exe";
    
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var programDir = fso.GetParentFolderName(programPath);
    
    WScript.Echo(programDir); // C:\MyApp
    

    【讨论】:

    • 我真正需要知道的是设置“CurrentDirectory”所以谢谢=)