如何在批处理文件中获取目录路径的一部分

Sha*_* Md 5 batch-file

我在目录中有一个BAT文件

D:\dir1\dir2\getpath.bat
Run Code Online (Sandbox Code Playgroud)

当我用下面的代码运行蝙蝠时,它会打印出来

D:\dir1\dir2\
Run Code Online (Sandbox Code Playgroud)

我只想要路径 D:\dir1\

目录结构不固定,需要除BAT文件所在的当前目录以外的完整目录路径.

@echo off
SET SUBDIR=%~dp0
ECHO %SUBDIR% 
Run Code Online (Sandbox Code Playgroud)

尝试在for循环中使用delims,但它没有帮助.

Sve*_*enS 1

如果它是您想要的脚本所在目录的父目录,请尝试以下操作:

@echo off
SET batchdir=%~dp0
cd /D "%batchdir%.."
echo %CD%
cd "%batchdir%"
Run Code Online (Sandbox Code Playgroud)

(未经测试,如有问题请评论)

请注意,如果您的批处理驻留在驱动器根目录中(如),这当然不会改变任何内容F:\;)如果您想要特殊的输出(如果是这种情况),您应该在回显之前进行%CD%测试。%batchdir%

编辑:应用补丁,请参阅@RichardA的评论