2014-01-04 2 views
0

Я читаю реестр. Затем я получаю путь внутри переменной. Я делаю это следующим образом:Получение родительского элемента из переменной с использованием пакетного скрипта

FOR /F "skip=2 tokens=2*" %%A IN ('%SystemRoot%\system32\REG.exe QUERY "HKLM\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Log" /v Path') DO set WorkPath=%%B 

значение WorkPath что-то вроде "C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ журналы"

Но проблема я хочу родительский каталог от переменной "WorkPath" без использования "CD" или изменить каталог

путь внутри "WorkPath" должно быть "C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0"

ответ

1
set "regCmd=%SystemRoot%\system32\REG.exe QUERY "HKLM\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Log" /v Path" 
FOR /F "tokens=2*" %%A IN ('%regCmd% ^| find "REG_SZ"') DO set "WorkPath=%%~dpB" 

Изменения сделали:

  • Команда расщепляется лучше подходит на экране, нет необходимости.
  • Заменено skip в течение п с find, чтобы обрабатывать только предполагаемую линию (в моей системе, она нуждается в skip=4 только обрабатывать в требуемой линии)
  • И, вместо того, чтобы непосредственно присвоить %%B (значение прочтенных из реестра), так как это путь к папке журнала, найдите путь к этой папке, то есть путь к родительской папке. Назначенное значение: %%~dpB, привод и путь, где расположена папка, указанная в %%B.
+0

спасибо .. выход "C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \" , но это все, что я хотел. – user3032675

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