|
|
发表于 2025-8-31 14:28:10
|
显示全部楼层
本帖最后由 aloha20200628 于 2025-8-31 14:34 编辑
回复 16# jiavip
很好奇楼主的 '靠谱' 标准是啥?是要匹配一个可被 set/a 函数认可的字符串吗?
以下代码可匹配成功16楼定义的 %sa% 变量所包含的全部字段(其中 *3 和 44* 除外,因其包含的 * 字符在 for %%i in (...) 句式中会被系统转义扩展为 '路径文件名通配符' 而导致无效)
- @echo off
- set "sa=1 +1 ++1 a +a ++a 2a a2 -2a --2a 2- -a2 -2- -22 +3 -3 *3 /3 +44 -44 *44 /44"
- for %%i in (%sa%) do (
- echo,%%i
- echo,%%i|findstr /rb "[+\-]*[a-z]*[0-9]*[\-+/*]*">nul&&@echo,匹配成功
- echo,)
- pause&exit/b
复制代码 以上代码虽可成功匹配,但若用 set/a 函数检查 %sa% 全部字段(含*字符除外),其中有些会被报错。
用以下代码可成功匹配那些能被 set/a 函数认可的 %sa% 字段...
- @echo off
- set "sa=1 +1 ++1 a +a ++a 2a a2 -2a --2a 2- -a2 -2- -22 +3 -3 *3 /3 +44 -44 *44 /44"
- for %%i in (%sa%) do (
- echo,%%i
- echo,%%i|findstr /rb /c:"[+\-]*[a-z]*[0-9][0-9]*[\-+/*]*[0-9][0-9]*$" /c:"[+\-]*[a-Z]*[0-9]*$">nul&&@echo,匹配成功
- set "v=" &set/a v=%%i&&call echo,运算结果:%%v%%
- echo,)
- pause&exit/b
复制代码 |
|