Назад | Перейти на главную страницу

получение последних двух токенов в пакетном скрипте для команды

У меня есть имя файла с полным путем, и я хочу получить имя файла и его родительский каталог. Как я могу разобрать это в пакетном сценарии?

например, для / f "токенов = 4,5 delims = \" %% a in ("F: \ mydata \ WebLogs \ MyServerName001 \ u_ex100206.log")

в приведенной выше строке токен 4 - это имя сервера, а 5 - имя файла. Но это не всегда будет 4 и 5. Итак, как я могу получить последние два токена в пакетном сценарии? потому что в моем сценарии имя файла будет последним токеном и имя сервера будет перед этим токеном.

Сообщение, на которое указал Хелвик, находится сверху. Вот простой способ получить родительский каталог (или родительский родительский каталог и т. Д.):

for /D %%I in ("F:\mydata\WebLogs\MyServerName001\u_ex100206.log") do (
   echo filename=[%%~nxI]
)
for /D %%I in ("F:\mydata\WebLogs\MyServerName001\u_ex100206.log\..") do (
   echo parent dir=[%%~nxI]
)
for /D %%I in ("F:\mydata\WebLogs\MyServerName001\u_ex100206.log\..\..") do (
   echo parent's parent dir=[%%~nxI]
)

... и т.д. Файлу не обязательно существовать.

Используйте% ~ nxI в качестве имени файла и используйте код из выбранного ответа в этом сообщение stackoverflow для родительской папки.