Получить последнюю часть каталога в цикле for, используя cd, и в одну строку

Я имею в виду получение последней части полного пути к каталогу, когда он исходит из 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%, и несколькими командами в одной строке, такими как command1 && command 2. Целевой лайнер будет выглядеть примерно так

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

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


person sancho.s ReinstateMonicaCellio    schedule 26.09.2018    source источник


Ответы (2)


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

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

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

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

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

person MC ND    schedule 26.09.2018

Еще один вариант с использованием метода, обнаруженного на dostips.com.

set "last=%cd:\=" & set "last=%"
echo %last%
person Squashman    schedule 26.09.2018
comment
Разделить строку на подстроки на основе разделителя с помощью Sponge Belly/dostips.com - person It Wasn't Me; 19.04.2020