2016-01-22 2 views
2

Привет, у меня есть полный путь к файлу в переменной пакетного файла. Как получить начальный путь родительского каталога первого и второго уровня?Получить родительский каталог определенного пути в пакетном скрипте

set path=C:\SecondParent\FirstParent\testfile.ini 
+0

Будет ли% ~ dppath% работать? Я знаю, что это работает для нумерованных аргументов (% ~ dp1). –

ответ

3

не использовать переменную PATH для этого. % PATH% - это встроенная переменная, используемая командной строкой.

@echo off 
set "_path=C:\SecondParent\FirstParent\testfile.ini" 
for %%a in ("%_path%") do set "p_dir=%%~dpa" 
echo %p_dir% 
for %%a in (%p_dir:~0,-1%) do set "p2_dir=%%~dpa" 
echo %p2_dir% 
+0

, предоставляя свой первый родительский каталог. Но мне тоже нужно предоставить родительский каталог. Как это получить? – selvakumar

+0

@SelvakumarGurusamy - проверьте мое редактирование. – npocmaka

+1

hi обе печать такой же значение. – selvakumar

2

Как правильно npocmaka предполагает, выбрать другую переменную из %PATH% (или any of these other environment variables). Во-вторых, убедитесь, что ваш скрипт использует setlocal, чтобы избежать нежелательной загрузки среды вашего консольного сеанса с переменными в этом скрипте. В-третьих, просто добавьте \.. для каждого предка, которого вы хотите перемещать. Не нужно беспокоиться о манипуляциях с подстрокой.

@echo off 
setlocal 

set "dir=C:\SecondParent\FirstParent\testfile.ini" 
for %%I in ("%dir%\..\..") do set "grandparent=%%~fI" 
echo %grandparent% 
+0

да, я понял. спасибо за вашу ценную информацию. – selvakumar

Смежные вопросы