【问题标题】:How to check if directories listed in System PATH variable are valid?如何检查系统 PATH 变量中列出的目录是否有效?
【发布时间】:2011-09-07 17:08:37
【问题描述】:

这与我的开发项目没有直接关系,但我仍然很好奇。最近,经过多次头疼后,我将构建问题追溯到系统 PATH 变量中的无效条目。在我的机器上,它包含大约 20 个条目。我猜必须有一种更简单的方法来验证每个条目的有效性。任何人都可以建议一种方法来检查这个吗?感谢您的宝贵时间。

【问题讨论】:

  • 说我疯了,但是在编写脚本的时候,你可以插入 20 个路径来检查它们。事实上,在登录和输入问题所花费的时间里,您可以检查所有问题。
  • 有效 = ?。是否存在?我想知道存在是否会导致构建失败?

标签: build path environment-variables


【解决方案1】:

批处理文件中的这段代码(基于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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2011-04-19
    • 2011-03-30
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多