Связанный:
Как перечислить элементы пути в командном файле?
Как работает 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?
РЕДАКТИРОВАТЬ : Я полагаю, когда вы дойдете до этого, вопрос, как сделать преобразование регистра в cmd.exe?