批处理脚本中如何无歧义拼接文件路径?解决双斜杠路径错误
批处理路径拼接:解决LIBDIR带/不带尾部反斜杠的问题
遇到这种变量可能带或不带尾部反斜杠导致路径拼接出错的情况,咱们可以先统一处理变量的格式,再进行拼接,就能完美解决双反斜杠的问题了。
核心思路
先确保LIBDIR变量没有尾部反斜杠,之后手动添加一个反斜杠来拼接后续路径——不管原变量原本带不带尾斜杠,处理后都能得到格式正确的路径。
具体实现代码
:: 检查LIBDIR最后一个字符是否为反斜杠,如果是就移除它 if "%LIBDIR:~-1%"=="\" set "LIBDIR=%LIBDIR:~0,-1%" :: 现在放心拼接路径,手动添加单个反斜杠 set "strDestPath=%LIBDIR%\Libraries\python\win\" set "strPythonZipSourcePath=%CTEDIR%\Libraries\python\win\Python27.zip" Call :UnZipFile %strDestPath% %strPythonZipSourcePath%
代码解释
- 第一行的
%LIBDIR:~-1%是取LIBDIR变量的最后一个字符,判断是否为反斜杠;如果是,就用%LIBDIR:~0,-1%去掉最后一个字符,得到不带尾斜杠的路径。 - 之后拼接路径时,我们手动添加一个
\,这样不管原LIBDIR是D:\WinLibraryes\还是D:\WinLibraryes,最终的strDestPath都会是D:\WinLibraryes\Libraries\python\win\,完全符合要求。
如果CTEDIR也存在同样的带/不带尾斜杠的情况,你可以用同样的逻辑处理它,避免出现同样的路径问题。
内容的提问来源于stack exchange,提问作者Guna
相关产品推荐
相关产品推荐

