Board logo

标题: [文本处理] 请问在windows批处理中如何将两个路径接接? [打印本页]

作者: hahaxiong    时间: 2024-7-13 10:30     标题: 请问在windows批处理中如何将两个路径接接?

请问在windows批处理中如何将两个路径接接?
比如:
aaa = "1234567890"
bbb = "aa\tt\789"
要要求得到结果是:
aa\tt\123456
作者: aloha20200628    时间: 2024-7-15 12:53

回复 1# hahaxiong

确保变量bbb中的尾部字段不会在变量aaa中出现多次...
  1. @echo off &setlocal enabledelayedexpansion
  2. set aaa="1234567890"
  3. set bbb="aa\tt\789"
  4. for %%a in (!bbb!) do set "b=%%~nxa"&set "bb=!bbb:%%~nxa=!"
  5. for %%a in (!b!) do for /f tokens^=1^delims^=^/^" %%b in ("!aaa:%%~a=/!") do echo,!bb:"=!%%b
  6. endlocal&pause&exit/b
复制代码

作者: qixiaobin0715    时间: 2024-7-15 13:37

本帖最后由 qixiaobin0715 于 2024-7-15 13:39 编辑

不知楼主 要表达的真实意图,顺便说一句,设置变量时,等号后面的字符都是变量的值,包括楼主例子中引号和引号前面的空格;为什么路径要用引号呢?实际上设置变量时,可以像下面代码中使用引号:
  1. @echo off
  2. set "aaa=1234567890"
  3. set "bbb=aa\tt\789"
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%i in ("%bbb%") do (
  6.     for /f "delims=<" %%j in ("!aaa:%%~nxi=<!") do (
  7.         set "b=%%i"
  8.         echo,!b:%%~nxi=!%%j
  9.     )
  10. )
  11. pause
复制代码

作者: ShowCode    时间: 2024-7-15 14:57

回复 1# hahaxiong
  1. @echo off
  2. set "aaa=1234567890"
  3. set "bbb=aa\tt\789"
  4. for %%i in ("%bbb%") do (
  5.     for /f "delims=" %%j in ('powershell -c "'%aaa%'.split('%%~nxi')[0]"') do (
  6.         for /f "delims=" %%k in ('powershell -c "'%bbb%' -replace '[^\\]*$'"') do (
  7.             set "NewStr=%%k%%j"
  8.         )
  9.     )
  10. )
  11. echo,%NewStr%
  12. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2