Удалите имя родительского каталога из команды echo% cd%

Мы знаем, что echo% cd% command print рабочий каталог. Предположим, что это "C: \ test \ bin \ run". Я хочу знать, как удалить "run" из строки. второй раз "запустить" каталог может быть "стоп-директорией". поэтому мы не можем использовать команду замены строки. я думаю, что нужно удалить строку после последнего "\". Кто-нибудь знает, как это сделать в командной строке Windows (cmd)


person shan    schedule 15.05.2011    source источник
comment
Здесь показано, как это сделать: stackoverflow.com/questions/778135/   -  person onteria_    schedule 15.05.2011


Ответы (2)


Если можно изменить каталог во время процесса, как насчет:

set x=%cd%
cd ..
set parent=%cd%
cd %x%
person karmakaze    schedule 15.05.2011

в командной строке это работает:

C:\dir\folder>FOR /F "tokens=3 delims=\" %A IN ('echo %CD%') DO SET FOLDER=%A

Теперь переменная окружения FOLDER содержит значение «папка».

Я использовал tokens = 3, потому что папка - это третий токен после \ -delimiters

Если вы использовали tokens = 2, переменная среды FOLDER содержала значение "dir".

Если вы использовали tokens = 1, переменная среды FOLDER содержала значение "c:"

он также должен работать в пакетных файлах, если вы замените% A на %% A, как показано ниже:

FOR /F "tokens=3 delims=\" %%A IN ('echo %CD%') DO SET FOLDER=%%A

На основе этого вы можете построить цикл, который повторяется до тех пор, пока FOLDER не станет пустой строкой. В цикле вам нужно будет назначать FOLDER для LASTFOLDER на каждом шаге. После завершения цикла LASTFOLDER содержит папку вашего текущего каталога. Вы также можете поместить код в отдельный сценарий «GetBaseFolder.BAT» и использовать «call GetBaseFolder% CD%» в основном пакете.

person Gerald Trost    schedule 14.04.2013