Hei*_*ich 5 windows windows-server-2008 environment-variables path
我在 windows 下的 PATH 变量有一个奇怪的问题:
我的应用程序位于文件夹 c:\app\bin 中,此应用程序的 DLL 位于 c:\app\runtime 文件夹中。要运行我的程序,我通常使用以下脚本修改带有 *.bat 文件的 PATH 变量:
set PATH="c:\app\bin";"c:\app\runtime";%PATH%
Run Code Online (Sandbox Code Playgroud)
这会将可执行文件和 DLL 带到路径上。但是,在我的其中一个 Windows Server 2008 R2 系统上,这不起作用。这意味着,如果我在命令窗口中执行上述命令,我可以从 c:\app\bin 启动 exe 文件,但应用程序立即抱怨它找不到所需的某些 dll 文件(“程序无法启动,因为....dll 从您的计算机中丢失 ...")。这些 dll 文件应该在 c:\app\runtime 中。
我进行了一些实验,它指出有三种解决方法:
PATH="c:\app\bin";c:\app\runtime;%PATH%
关于解决方案 2 的奇怪部分是,如果我向第一个路径添加引号,或者如果我更改路径的顺序,它不会改变任何内容。
有人知道为什么我的原始脚本不起作用吗?我需要让它运行,因为它是由程序自动创建的,我无法更改生成 bat 文件的应用程序。
该PATH
变量通常并不包含引号; 它使用分号作为分隔符。例如,这是我系统的PATH
定义,其中包括带有空格的文件夹:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\
Run Code Online (Sandbox Code Playgroud)
似乎 Windows 可以执行带有“引用”路径的程序,但 DLL 搜索例程无法处理它们。
理想情况下,您应该使用:
set PATH=c:\app\bin;c:\app\runtime;%PATH%
Run Code Online (Sandbox Code Playgroud)
另一种解决方法可能是从 启动程序c:\app\runtime
,例如:
cd /d C:\app\runtime
..\bin\app.exe
Run Code Online (Sandbox Code Playgroud)
这甚至可能不需要修改PATH
变量。
归档时间: |
|
查看次数: |
8716 次 |
最近记录: |