PATHvariables和引号(窗口)

我在Windows下的PATHvariables有一个奇怪的问题:

我的应用程序位于文件夹c:\ app \ bin中,此应用程序的DLL位于c:\ app \ runtime文件夹中。 要运行我的程序,我通常使用以下脚本通过* .bat文件修改PATHvariables:

set PATH="c:\app\bin";"c:\app\runtime";%PATH% 

这将使path上的可执行文件和DLL。 但是,在我的一个Windows Server 2008 R2系统上,这是行不通的。 这意味着,如果我在一个命令窗口中执行上述命令,我可以从c:\ app \ bin启动exe文件,但是应用程序立即抱怨它无法find一些需要的dll文件(“程序无法启动,因为…. dll从您的计算机中丢失…“)。 这些dll文件应该在c:\ app \ runtime下。

我进行了一些尝试,指出有三种解决方法:

  1. 使用“系统属性”对话框永久修改PATHvariables
  2. 在上面的DLL文件的path命令中省略引号,例如设置PATH="c:\app\bin";c:\app\runtime;%PATH%
  3. 将DLL文件复制到exe所在的目录

关于解决scheme2的奇怪的部分是,如果我为第一个path添加引号,或者如果我改变path的顺序,它不会改变任何forms。

有人有线索为什么我原来的脚本不起作用? 我需要运行它,因为它是由程序自动创build的,我不能更改生成bat文件的应用程序。

PATHvariables通常不包含引号; 它使用分号作为分隔符。 例如,这里是我的系统的PATH定义,其中包括具有空格的文件夹:

 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\ 

看来,Windows可以执行“引用”path的程序,但DLLsearch例程无法处理它们。

理想情况下,您应该使用:

 set PATH=c:\app\bin;c:\app\runtime;%PATH% 

另一个解决方法可能是从c:\app\runtime启动程序,例如:

 cd /d C:\app\runtime ..\bin\app.exe 

这可能甚至不需要修改PATHvariables。