Как проверить, действительны ли каталоги, перечисленные в системной переменной PATH? - PullRequest
1 голос
/ 07 сентября 2011

Это не имеет прямого отношения к моему проекту разработки, но тем не менее мне любопытно. Недавно, после долгих попыток, я отследил проблему сборки до неверной записи в переменной System PATH . На моей машине он содержит около 20 записей. Я предполагаю, что должен быть более простой способ проверить правильность каждой записи. Кто-нибудь может предложить способ проверить это? Спасибо за ваше время.

1 Ответ

5 голосов
/ 05 декабря 2012

Этот код в командном файле (на основе этот ответ ) работает для меня:

@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
...