в командной строке это работает:
C:\dir\folder>FOR /F "tokens=3 delims=\" %A IN ('echo %CD%') DO SET FOLDER=%A
Теперь переменная среды FOLDER содержит значение «папка»
Я использовал токены = 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» и использовать «вызов GetBaseFolder% CD%» в основном пакете.