批量脚本问题:删除字符串中最后一个反斜杠后的内容
Batch脚本获取路径最后一个反斜杠前的上级目录
方法1:利用for命令(推荐,简洁可靠)
Batch的for命令自带路径解析参数,能轻松处理这类路径提取需求:
@echo off set "pathname=C:\User\Software\v1.1\Test\abcdefg" :: 解析路径,%%~dpF提取驱动器+上级目录路径(末尾带反斜杠) for %%F in ("%pathname%") do set "temp_result=%%~dpF" :: 移除末尾的反斜杠,得到最终结果 set "result=%temp_result:~0,-1%" echo %result%
运行后会输出:C:\User\Software\v1.1\Test,该方法兼容文件路径和文件夹路径,稳定性更高。
方法2:纯变量循环替换
如果不想依赖for的路径解析功能,可以通过循环变量替换实现:
@echo off set "pathname=C:\User\Software\v1.1\Test\abcdefg" set "temp=%pathname%" set "result=" :find_last_backslash :: 判断当前temp中是否存在反斜杠 if not "%temp:\=%"=="%temp%" ( set "result=%temp%" :: 删除temp中第一个反斜杠及之前的内容 set "temp=%temp:*\=%" goto find_last_backslash ) echo %result%
原理是循环截断路径的前部,每次保留当前剩余路径到result,直到路径中无反斜杠,最终result就是目标上级目录。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

