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

[文本处理] 批处理如何在变量多个参数中查找到需要的字符?

已知变量
%mz% =45 45 89 365 56 94 56584 364
如何查找到包含658的参数并设置到变量%m%
得到变量%m%=56584

这个查找的包含658字符的参数位置不固定。

  1. @echo off
  2. set "mz=45 45 89 365 56 94 56584 364"
  3. for %%a in (%mz%) do (
  4. echo %%a|find "658" 1>nul && set m=%%a
  5. )
  6. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 1# szl1123


    如果有多个参数包含658,希望如何处理?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 1# szl1123


减少外部命令find调用
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "mz=45 45 89 365 56 94 56584 364"
  4. for %%a in (%mz%) do (
  5.     set "x=%%a"
  6.     if "!x:658=!" neq "%%a" (
  7.         set "m=%%a"
  8.     )
  9. )
  10. echo,%m%
  11. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# 77七

非常感谢老师

TOP

回复 3# Batcher


    目前应该不会有重复的结果

TOP

回复 4# Batcher


    感谢各位老师,

TOP

回复 2# 77七


    现在还有一个情况
%mz% =45 45 89 365 56 94 56584 364 5468
查找到包含658的参数后,要得到这个参数以及后面的所有字符,设置到变量%m%
得到结果应该是
%m%=56584 364 5468
包含后面的空格

还请各位老师帮忙解答一下,谢谢。

TOP

回复 8# szl1123


  
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "mz=45 45 89 365 56 94 56584 364 5468"
  4. for %%a in (%mz%) do (
  5. echo %%a|find "658" 1>nul && set "m=%%a" || (
  6. if defined m (
  7. set "m=!m! %%a"
  8. )
  9. )
  10. )
  11. echo %m%
  12. endlocal
  13. pause
复制代码
bat小白,请多指教!谢谢!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "mz=45 45 89 365 56 94 56584 364 5468"
  4. for %%a in (%mz%) do (
  5.     set "x=%%a"
  6.     if not defined m (
  7.        if "!x:658=!" neq "%%a" (
  8.           set "m=%%a"
  9.        )
  10.    ) else set "m=!m! %%a"
  11. )
  12. echo,%m%
  13. pause
复制代码

TOP

返回列表