批处理脚本打印上级目录名称异常,求问题排查与解决
批处理脚本获取上级目录名称的正确方法
问题分析
你的脚本存在两个核心问题:
%cd%获取的是当前工作目录,而非批处理文件本身所在的目录,如果从其他路径启动脚本,结果会不符合预期- 直接拼接
\..只是字符串组合,系统不会自动将其解析为实际的上级目录路径,因此输出会保留\..后缀
正确解决方案
方案1:获取批处理文件所在目录的上级目录
如果需要的是脚本自身所在位置的上级目录,使用以下代码:
@echo off rem 获取批处理文件的所在路径(含末尾反斜杠) set "script_dir=%~dp0" rem 解析上级目录的实际路径 for %%i in ("%script_dir%..") do set "parent_dir=%%~fi" echo %parent_dir% pause
%~dp0:批处理专属变量,返回脚本所在的驱动器和完整路径(比如脚本在C:\dev\scripts\test.bat,则返回C:\dev\scripts\)for %%i in ("路径.."):通过for循环将带..的相对路径解析为真实的绝对路径,%%~fi会输出完整的物理路径
方案2:获取当前工作目录的上级目录
如果确实需要当前命令行所在目录的上级目录,使用以下代码:
@echo off set "current_dir=%cd%" for %%i in ("%current_dir%..") do set "parent_dir=%%~fi" echo %parent_dir% pause
内容的提问来源于stack exchange,提问作者Vivek Shukla
相关产品推荐
相关产品推荐

