标题: [文本处理] 【已解决】求助BAT如何将字符串变量(含通配符的路径)分割? [打印本页]
作者: yu2n 时间: 2014-9-10 14:01 标题: 【已解决】求助BAT如何将字符串变量(含通配符的路径)分割?
本帖最后由 yu2n 于 2014-9-10 16:33 编辑
求助,BAT如何将字符串变量(含通配符的路径)分割?
原字符串:复制代码
注意:含通配符的路径中有空格和英文小括号以及其他特殊字符,此处为变量。
要求分割成以下两部分,并且赋值给变量,希望有适应性很强的解法:
一、路径部分:复制代码
二、通配符部分:复制代码
请各位大大不吝赐教……
作者: yu2n 时间: 2014-9-10 16:05
我自己写了一个,又臭又长:- @echo off & SetLocal EnableDelayedExpansion
- set "str00=V:\*.txt"
- set "str00=V:\新 建\新建 文件夹 (0)\*.txt"
-
- :: 替换空格\符号为标签
- set "str01=%str00: =#CHR32#%"
- set "str01=%str01:\=#CHR92#%"
-
- :: 计数
- set/a n=0
- Call :_count_args %str01:#CHR92#= %
- set/a nCount=%n%
-
- :: 合并字符串
- set str=
- set/a n=1
- Call :_join_args %str01:#CHR92#= %
-
- :: 移除标签后得到1部分
- set "str02=%str:#CHR92#=\%"
- set "str02=%str02:#CHR32#= %"
- :: 替换字符后得到2部分
- set "str03=!str00:%str02%\=!"
-
- echo nCount --%nCount%--
- echo str00 --%str00%--
- echo str01 --%str01%--
- echo str02 --%str02%--
- echo str03 --%str03%--
- pause
-
- :: 计数
- :_count_args
- set/a n+=1
- SHIFT
- echo,%~1
- if "%~1" neq "" goto :_count_args
- goto :eof
-
- :: 合并字符串
- :_join_args
- if %n% GEQ %nCount% goto :eof
- set/a n+=1
- if defined str (set "str=%str%#CHR92#%~1") else (set "str=%~1")
- SHIFT
- goto :_join_args
- goto :eof
复制代码
作者: apang 时间: 2014-9-10 16:25
或许可以这样:- @echo off
- set "str=D:\TEST\新建文件夹 (0)\*.txt"
- for /f "delims=" %%a in ("%str%") do (
- for /f "delims=" %%b in ("%%a\..") do echo,%%~fb
- echo,%%~nxa
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |