DOS Batch: получить последнюю папку от относительного пути

StackOverflow https://stackoverflow.com/questions/4314478

Вопрос

У меня есть следующие значения в пакетном файле DOS (например, ...):

..\Apple\Jones  
..\Banana\Smith  
..\Pear\Wilson  

Мне нужно извлечь значения фамилии («Джонс», «Смит», «Уилсон») от каждого значения. Какую технику я могу использовать, что всегда будет давать мне эти значения подстроки?

Это было полезно?

Решение

Согласно этой теме: Какой лучший способ сделать подстроку в пакетном файле?

Я предлагаю вам использовать

%~n0

Другие советы

Я уже написал функцию для этого. Вы даете ему какую-либо путь, и он возвращает вам только это имя файла или Pathname. Работает для любого пути: URL, Windows Path, Linux Путь и т. Д.

Скопируйте эту функцию в конце вашего пакетного скрипта: (Инструкции ниже)

rem ===========================================================================

:Name_From_Path
SetLocal

set _TMP_FOLDERNAME=%1
for %%g in ("%_TMP_FOLDERNAME%") do set _TMP_FOLDERNAME=%%~nxg

EndLocal & set _Name_From_Path=%_TMP_FOLDERNAME%
goto :EOF

rem ===========================================================================

Использование:

CALL :Name_Of_Path ..\Apple\Jones
ECHO %_Name_From_Path%

Результат: Джонс

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top