我在c:\ Temp \ A \ B \ C \ MyBatch.bat中有一个bat文件
c:\Temp
|
|---- A
|
|----B
| |
| |----C
|
|----D
|
|----E
当我运行bat文件时,我想从中获取路径" C:\ Temp \ A \ D \ E"变成一个变量。
我该怎么做?
答案 0 :(得分:2)
那会这样做:
set MYVAR=%~pd0..\..\D\E
%~pd0
是当前运行脚本的目录。附加\..\..\D\E
,你很高兴。
但是,它不是你所期待的美丽路径,因为它有父目录路径
具有完整路径分辨率的替代解决方案:
@echo off
set MYVAR=%~pd0..\..\D\E
pushd %MYVAR%
if %ERRORLEVEL%==1 goto end
set MYVAR=%CD%
popd
:end
echo %MYVAR%
(实际上将目录更改为新构建的路径,让系统解析它,并将变量设置为当前目录,然后弹回上一个目录)。
如果无法输入目录(没有权限/不存在),则会回退到包含\..\
部分的丑陋路径。
答案 1 :(得分:2)
使用FOR命令真的很容易。
@echo off
for %%G in ("%~dp0\..\..") do set grandparent=%%~dpnxG\D\E
echo %grandparent%
答案 2 :(得分:0)
pushd ..\..\d\e && set thepath=%CD% && popd
这应该可以解决问题。