标题: [文本处理] 批处理如何在变量多个参数中查找到需要的字符? [打印本页]
作者: szl1123 时间: 2023-4-30 22:35 标题: 批处理如何在变量多个参数中查找到需要的字符?
已知变量
%mz% =45 45 89 365 56 94 56584 364
如何查找到包含658的参数并设置到变量%m%
得到变量%m%=56584
这个查找的包含658字符的参数位置不固定。
作者: 77七 时间: 2023-5-1 00:05
- @echo off
- set "mz=45 45 89 365 56 94 56584 364"
- for %%a in (%mz%) do (
- echo %%a|find "658" 1>nul && set m=%%a
- )
- pause
复制代码
作者: Batcher 时间: 2023-5-1 09:04
回复 1# szl1123
如果有多个参数包含658,希望如何处理?
作者: Batcher 时间: 2023-5-1 09:09
回复 1# szl1123
减少外部命令find调用- @echo off
- setlocal enabledelayedexpansion
- set "mz=45 45 89 365 56 94 56584 364"
- for %%a in (%mz%) do (
- set "x=%%a"
- if "!x:658=!" neq "%%a" (
- set "m=%%a"
- )
- )
- echo,%m%
- pause
复制代码
作者: szl1123 时间: 2023-5-1 10:08
回复 2# 77七
非常感谢老师
作者: szl1123 时间: 2023-5-1 10:09
回复 3# Batcher
目前应该不会有重复的结果
作者: szl1123 时间: 2023-5-1 10:09
回复 4# Batcher
感谢各位老师,
作者: szl1123 时间: 2023-5-1 13:30
回复 2# 77七
现在还有一个情况
%mz% =45 45 89 365 56 94 56584 364 5468
查找到包含658的参数后,要得到这个参数以及后面的所有字符,设置到变量%m%
得到结果应该是
%m%=56584 364 5468
包含后面的空格
还请各位老师帮忙解答一下,谢谢。
作者: 77七 时间: 2023-5-1 14:11
回复 8# szl1123
- @echo off
- setlocal enabledelayedexpansion
- set "mz=45 45 89 365 56 94 56584 364 5468"
- for %%a in (%mz%) do (
- echo %%a|find "658" 1>nul && set "m=%%a" || (
- if defined m (
- set "m=!m! %%a"
- )
- )
- )
- echo %m%
- endlocal
- pause
复制代码
作者: terse 时间: 2023-5-1 17:03
- @echo off
- setlocal enabledelayedexpansion
- set "mz=45 45 89 365 56 94 56584 364 5468"
- for %%a in (%mz%) do (
- set "x=%%a"
- if not defined m (
- if "!x:658=!" neq "%%a" (
- set "m=%%a"
- )
- ) else set "m=!m! %%a"
- )
- echo,%m%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |