使用批处理脚本从变量中获取父项

时间:2014-01-04 10:25:39

标签: tomcat batch-file

我正在阅读注册表。 然后我在变量中得到一个路径。 我这样做如下:

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 \ logs”

但问题是我想从变量“WorkPath”获取父目录 不使用“cd”或更改目录

“WorkPath”中的路径应为“C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0”

1 个答案:

答案 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"

完成的更改:

  • 命令分裂为更适合屏幕,不是必需的。
  • 将for skip替换为for find,仅处理skip=4 预定的行(在我的系统中,它需要%%B才能处理 必填项)
  • AND,而不是直接分配%%~dpB(从注册表中获取的值),因为它是日志文件夹的路径,获取到达该文件夹的路径,即父文件夹的路径。分配的值为%%B,即{{1}}中指向的文件夹所在的驱动器和路径。