пакетный сценарий: как получить имя родительского каталога без полного пути? - PullRequest
2 голосов
/ 15 января 2012

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

Ответы [ 3 ]

5 голосов
/ 15 января 2012

Не очень понятно, как скрипт должен познакомиться с рассматриваемым путем, но следующий пример должен как минимум дать вам представление о том, как действовать:

FOR %%D IN ("%CD%") DO SET "DirName=%%~nxD"
ECHO %DirName%

Этот скрипт получаетпуть от переменной CD и извлекает только имя из нее до DirName.

0 голосов
/ 15 января 2012

Вы можете использовать встроенные bash трюки:

FULLPATH=/the/full/path/is/known
JUSTTHENAME=${FULLPATH##*/}

Пояснения:

  • first # означает «удалить шаблон из начала»
  • секунда # означает «удалить более длинный возможный шаблон»
  • */ - это шаблон

Используя встроенный bash, избегайте вызова внешней команды (т.е. basename), поэтому это оптимизирует ваш скрипт.Однако скрипт менее переносим.

0 голосов
/ 15 января 2012

Вы можете использовать команду basename:

FULLPATH=/the/full/path/is/known
JUSTTHENAME=$(basename "$FULLPATH")
...