Мы знаем, что echo% cd% command print рабочий каталог. Предположим, что это "C: \ test \ bin \ run". Я хочу знать, как удалить "run" из строки. второй раз "запустить" каталог может быть "стоп-директорией". поэтому мы не можем использовать команду замены строки. я думаю, что нужно удалить строку после последнего "\". Кто-нибудь знает, как это сделать в командной строке Windows (cmd)
Удалите имя родительского каталога из команды echo% cd%
Ответы (2)
Если можно изменить каталог во время процесса, как насчет:
set x=%cd%
cd ..
set parent=%cd%
cd %x%
в командной строке это работает:
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%» в основном пакете.