Связано:
Как составить список элементов пути в пакетном файле?
Как работает FOR?
Как бы вы написали пакетный файл или файл CMD, чтобы удалить элемент из пути? Он должен работать изящно:
- различия в случае
- короткие имена и длинные имена
Я сделал это с помощью tr.exe, но это медленно и сложно и использует временные файлы, что делает его еще более сложным.
Я думаю, что ответ примерно такой:
setlocal
set tpath=""
set _path="%PATH:;=" "%"
for %%p in (%_path%) do (
call :KeepIfNotEqual %%p %elementToRemove%
)
endlocal & set path=%tpath%
... где %elementToRemove% — это удаляемый элемент пути. KeepIfUnique должна быть подпрограммой, которая принимает два аргумента — имена каталогов, нормализует их и добавляет первый аргумент к tpath, если он не равен второму аргументу (elementToRemove).
Как я уже сказал, я могу сделать это с помощью tr.exe, но могу ли я сделать это только с помощью встроенных команд в оболочке Windows cmd.exe?
EDIT: я думаю, когда вы приступите к делу, вопрос в том, как сделать преобразование регистра в cmd.exe?