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

[文件操作] 批处理怎样搜索一个TXT文本的第一行?

悬赏金额: 20

就是目录下有一个txt文本
大概里面可能是这个样子
  1. MZI91+AS
  2. AS-DS
  3. AD.ASD
复制代码

怎么创建一个批处理,搜索这个文本的第一行,看第一行里面有没有包含'MZI'
如果包含 在start 1.bat
如果不包含start 2.bat

最佳答案 hanyeguxing
如果确定文本前两个字符就是MZ,则:
  1. @echo off
  2. set/p n=<a.txt
  3. if /i "%n:~0,2%"=="mz" (start 1.bat) else start 2.bat
复制代码
如果不确定是否在行首,则:
  1. @echo off
  2. set/p n=<a.txt
  3. echo %n% |find /i "mz">nul
  4. if /i %ERRORLEVEL%==0 (start 1.bat) else start 2.bat
复制代码
或:
  1. @echo off
  2. set/p n=<a.txt
  3. echo %n% |find /i "mz">nul&&start 1.bat||start 2.bat
复制代码
1

评分人数

如果确定文本前两个字符就是MZ,则:
  1. @echo off
  2. set/p n=<a.txt
  3. if /i "%n:~0,2%"=="mz" (start 1.bat) else start 2.bat
复制代码
如果不确定是否在行首,则:
  1. @echo off
  2. set/p n=<a.txt
  3. echo %n% |find /i "mz">nul
  4. if /i %ERRORLEVEL%==0 (start 1.bat) else start 2.bat
复制代码
或:
  1. @echo off
  2. set/p n=<a.txt
  3. echo %n% |find /i "mz">nul&&start 1.bat||start 2.bat
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢谢 长见识了
如果要确认最后2位是AS呢?(字数不定啊,只要最后的2位)
这个可以吗

[ 本帖最后由 jsjcjsjc 于 2010-4-8 20:56 编辑 ]

TOP

@echo off
set/p n=<a.txt
if /i "%n:~-2%"=="as" (start 1.bat) else start 2.bat
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

非常感谢~~字数

TOP

“字符串截取”:%a:~[m[,n]]%
%a:~0,n% 取左边n位
%a:~-m%  取右边m位
%a:~m,n% 从m+1位开始取n位
%a:~m,-n% 从m+1位开始,至倒数n+1位
%a:~m %  从m+1位开始取右边全部。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2010-4-8 21:08 发表
“字符串截取”:%a:~[m[,n]]%
%a:~0,n% 取左边n位
%a:~-m%  取右边m位
%a:~m,n% 从m+1位开始取n位
%a:~m,-n% 从m+1位开始,至倒数n+1位
%a:~m %  从m+1位开始取右边全部。

WOW 学习了
那怎么匹配是第几行呢?

[ 本帖最后由 jsjcjsjc 于 2010-4-8 21:56 编辑 ]

TOP

set命令的字符串截取功能只是对于单行而言的,不能匹配第几行。

TOP

返回列表