如何检查系统PATH变量中列出的目录是否有效?

时间:2011-09-07 17:08:38

标签: build path environment-variables

这与我的开发项目没有直接关系,但我很好奇。最近,在经过大量的敲击之后,我将构建问题追溯到System PATH 变量中的无效条目。在我的机器上,它包含大约20个条目。我猜测必须有一种更简单的方法来验证每个条目的有效性。谁能建议一种方法来检查这个?谢谢你的时间。

1 个答案:

答案 0 :(得分:5)

批处理文件中的代码(基于this answer)适用于我:

@echo off
setlocal DisableDelayedExpansion
set "var=%PATH%"

set "var=%var:"=""%"
set "var=%var:^=^^%"
set "var=%var:&=^&%"
set "var=%var:|=^|%"
set "var=%var:<=^<%"
set "var=%var:>=^>%"

set "var=%var:;=^;^;%"
rem ** This is the key line, the missing quote is intention
set var=%var:""="%
set "var=%var:"=""%"

set "var=%var:;;="";""%"
set "var=%var:^;^;=;%"
set "var=%var:""="%"
set "var=%var:"=""%"
set "var=%var:"";""=";"%"
set "var=%var:"""="%"

setlocal EnableDelayedExpansion
for %%a in ("!var!") do (
    endlocal
    call :testdir "%%~a"
    setlocal EnableDelayedExpansion
)
goto :eof

:testdir
if exist %1 echo OK:  %1
if not exist %1 echo NOK: %1

将代码放入文本文件中,例如validatepath.bat

运行时,它应输出如下内容:

 OK: C:\Users\abcde
NOK: C:\this\is\no\dir