更改外部进程的执行路径

时间:2012-09-19 09:33:37

标签: jscript wsh

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

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

无论如何通过脚本启动一个应用程序并仍然保持其真实路径而不是scriptengines路径?

此致

纳斯

1 个答案:

答案 0 :(得分:2)

看一下这篇文章:

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