[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 请问在windows批处理中如何将两个路径接接?

请问在windows批处理中如何将两个路径接接?
比如:
aaa = "1234567890"
bbb = "aa\tt\789"
要要求得到结果是:
aa\tt\123456

回复 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

回复 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
复制代码
测试代码之前请做好备份

TOP

返回列表