Получить последнюю часть каталога для цикла for, используя cd, и в одну строку - PullRequest
0 голосов
/ 26 сентября 2018

Я имею в виду, чтобы получить последнюю часть полного пути к каталогу, когда он идет от cd, он используется с for, и установить все в одну строку.

При переходе с cd путь что-то вроде C:\a\b\c\d\.Конечная косая черта усложняет ситуацию.

Это нормально для одной строки в случае каталога без обратной косой черты (т. Е. Он не может быть получен из cd).

Это подходит для случая обратной косой черты, но не для одной строки.

Выход

> FOR %%a IN (`cd`) DO echo %%~pa

равен \a\b\c\d\, а выход

> FOR %%a IN (`cd`) DO echo %%~na

- это `cd` (я ожидал, что здесь будет пустая строка).

Полагаю, мне следует объединить это с синтаксисом, например set MYDIR1=%MYDIR:~0,-1%, и несколькими командами в одной строке, например, * 1029.*.Целевой вкладыш будет выглядеть примерно так:

FOR %%a IN (`cd`) DO set MYDIR1=%MYDIR:~0,-1% && echo %%~nMYDIR1

и, возможно, с использованием tokens и / или delims, но я не смог заставить его работать.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Просто еще один вариант использования техники, обнаруженной на dostips.com

set "last=%cd:\=" & set "last=%"
echo %last%
0 голосов
/ 26 сентября 2018

Чтобы получить информацию для текущей папки

for %%a in (".") do echo %%~nxa

Чтобы получить информацию с использованием переменной с или без завершающей обратной косой черты

for %%a in ("%cd%\.") do echo %%~nxa

Но обратите внимание, что в обоих случаяху вас нет имени + расширения для корневой папки диска.

...