标题: [文本处理] 请问在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中出现多次...
- @echo off &setlocal enabledelayedexpansion
- set aaa="1234567890"
- set bbb="aa\tt\789"
- for %%a in (!bbb!) do set "b=%%~nxa"&set "bb=!bbb:%%~nxa=!"
- for %%a in (!b!) do for /f tokens^=1^delims^=^/^" %%b in ("!aaa:%%~a=/!") do echo,!bb:"=!%%b
- endlocal&pause&exit/b
复制代码
作者: qixiaobin0715 时间: 2024-7-15 13:37
本帖最后由 qixiaobin0715 于 2024-7-15 13:39 编辑
不知楼主 要表达的真实意图,顺便说一句,设置变量时,等号后面的字符都是变量的值,包括楼主例子中引号和引号前面的空格;为什么路径要用引号呢?实际上设置变量时,可以像下面代码中使用引号:- @echo off
- set "aaa=1234567890"
- set "bbb=aa\tt\789"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ("%bbb%") do (
- for /f "delims=<" %%j in ("!aaa:%%~nxi=<!") do (
- set "b=%%i"
- echo,!b:%%~nxi=!%%j
- )
- )
- pause
复制代码
作者: ShowCode 时间: 2024-7-15 14:57
回复 1# hahaxiong - @echo off
- set "aaa=1234567890"
- set "bbb=aa\tt\789"
- for %%i in ("%bbb%") do (
- for /f "delims=" %%j in ('powershell -c "'%aaa%'.split('%%~nxi')[0]"') do (
- for /f "delims=" %%k in ('powershell -c "'%bbb%' -replace '[^\\]*$'"') do (
- set "NewStr=%%k%%j"
- )
- )
- )
- echo,%NewStr%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |