找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 39435|回复: 9

[文本处理] [已解决]批处理如何判断字符串是否存在?

[复制链接]
发表于 2014-10-6 18:21:04 | 显示全部楼层 |阅读模式
本帖最后由 syqh2010 于 2015-3-4 00:25 编辑

新手求助,请各位高手看看,给个纯批,感激不尽!
文本部分内容如下:
  1. XYZ11111111
  2. THA111111111
  3. ABC1111111112
  4. ANK47514
复制代码
要求:
1)判断以"ABC"开头的行是否存在
2)若存在,将原内容替换成"ABC888"
3)若不存在,在以"XYZ"开头的下一行写入"ABC888"

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-10-6 19:23:53 | 显示全部楼层
  1. @echo off
  2. findstr /ibc:abc a.txt>nul&&set str=abc&&set a=0||set str=xyz&&set "a="
  3. for /f "delims=" %%i in (a.txt) do (
  4.     set str=%%i
  5.     setlocal enabledelayedexpansion
  6.     if /i "!str:~,3!" == "%str%" (
  7.        if not defined a echo,!str!
  8.        set "str=ABC888"
  9.     )
  10.     echo !str!
  11.     endlocal
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
syqh2010 + 1 非常谢谢!

查看全部评分

 楼主| 发表于 2014-10-6 19:42:33 | 显示全部楼层
回复 2# terse
非常感谢!正是我想要的!

请问ibc:abc    有什么作用。
另,如果另存,且新文件名为:原文件名&当前日期(如a20141006.txt),该如何改,谢谢!!!
发表于 2014-10-6 20:23:43 | 显示全部楼层
回复 3# syqh2010


    等同于 /i /b /c:abc
 楼主| 发表于 2014-10-6 21:38:33 | 显示全部楼层
谢谢两位老大,请问如何输出到文本,且新文件名=原文件名+当前日期(如a20141006.txt)?
我是小白,勿怪!
发表于 2014-10-7 05:43:53 | 显示全部楼层
本帖最后由 CrLf 于 2014-10-7 16:52 编辑

回复 5# syqh2010


    修改自 2 楼代码:
  1. @echo off
  2. set "原文件名=a.txt"

  3. for /f "tokens=1-3 delims=-/\:. " %%a in ("%date%") do set "当前日期=%%a%%b%%c"
  4. for %%a in ("%原文件名%") do set "新文件名=%%~na%当前日期%%%~xa"

  5. findstr /ibc:abc a.txt>nul&&set str=abc&&set a=0||set str=xyz&&set "a="
  6. for /f "delims=" %%i in ("%原文件名%") do (
  7.     set str=%%i
  8.     setlocal enabledelayedexpansion
  9.     if /i "!str:~,3!" == "%str%" (
  10.        if not defined a echo,!str!
  11.        set "str=ABC888"
  12.     )
  13.     echo !str!
  14.     endlocal
  15. )>"%新文件名%"
  16. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
syqh2010 + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-10-7 12:26:11 | 显示全部楼层
回复 6# CrLf
谢谢!
按你给你代码运行结果是:
文件名:a%当前日期.txt
内  容:a.txt

按你的代码改了一下,得到的内容是正确的,但文件名还是  a%当前日期.txt

系统找不到文件 2014/10/07。
请按任意键继续. . .
  1. @echo off
  2. set "原文件名=a.txt"
  3. for /f "tokens=1-3 delims=-/\:. " %%a in [color=Red](%date%[/color]) do set "当前日期=%%a%%b%%c"
  4. for %%a in ("%原文件名%") do set "新文件名=%%~na%%当前日期%%~xa"
  5. findstr /ibc:abc a.txt>nul&&set str=abc&&set a=0||set str=xyz&&set "a="
  6. for /f "delims=" %%i in ([color=Red]a.txt[/color]) do (
  7.     set str=%%i
  8.     setlocal enabledelayedexpansion
  9.     if /i "!str:~,3!" == "%str%" (
  10.        if not defined a echo,!str!
  11.        set "str=ABC888"
  12.     )
  13.     echo !str!
  14.     endlocal
  15. )[color=Red]>>[/color]"%新文件名%"
  16. pause
复制代码
发表于 2014-10-7 16:52:48 | 显示全部楼层
回复 7# syqh2010


    已修改
 楼主| 发表于 2014-10-7 17:38:12 | 显示全部楼层
回复 6# CrLf
谢谢,已生效!
只是
for /f "delims=" %%i in ("%原文件名%") do (
改成
for /f "delims=" %%i in (a.txt) do (
就能生效
否则输出内容是 a.txt

非常感谢各位的帮助!
发表于 2014-10-7 20:15:42 | 显示全部楼层
回复 9# syqh2010


    哦,是的,笔误了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 01:58 , Processed in 0.020421 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表