无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4325|回复: 9
打印 上一主题 下一主题

CMD 可以搜索一个TXT文本的第一行?做个if语句吗?

[复制链接]
跳转到指定楼层
1#
发表于 2010-4-8 19:31:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
就是目录下有一个txt文本
大概里面可能是这个样子
  1. MZI91+AS
  2. AS-DS
  3. AD.ASD
复制代码

怎么创建一个批处理,搜索这个文本的第一行,看第一行里面有没有包含'MZI'
如果包含 在start 1.bat
如果不包含start 2.bat
2#
发表于 2010-4-8 22:49:36 | 只看该作者
for  /f  "delims=" %%i   in  (txt)  do  echo.%%i|find /i "MZI" >nul&&start  1.bat|| start 2.bat&&exit /b&exit /b

[ 本帖最后由 x9tian 于 2010-4-8 22:52 编辑 ]
回复

使用道具 举报

3#
发表于 2010-4-9 10:53:45 | 只看该作者
for /f "delims=" %%c in (TXT) do (
echo %%c|find /i "MZI">NUL && CALL START1.CMD || CALL START2.CMD
goto :eof
)
回复

使用道具 举报

4#
发表于 2010-4-9 11:43:51 | 只看该作者
原帖由 dos时代菜鸟 于 2010-4-9 10:53 发表
goto :eof



              差点忘了,  还可以用goto  :eof   呵呵, b( ̄▽ ̄)d
回复

使用道具 举报

5#
发表于 2010-4-9 11:49:53 | 只看该作者
可以不用find的

for /f "tokens=*" %%a in (txt) do set s=%%a & goto next
:next
if "%s:MZI=%"=="%s%" ( start 2.bat ) else start 1.bat
回复

使用道具 举报

6#
发表于 2010-4-9 11:55:40 | 只看该作者
原帖由 NicTense 于 2010-4-9 11:49 发表
可以不用find的

for /f "tokens=*" %%a in (txt) do set s=%%a & goto next
:next
if "%s:MZI=%"=="%s%" ( start 2.bat ) else start 1.bat



    只考虑, 简短,   不考虑, 何种语句,  能一句写完,就不做两句写,  (#-.-)/ 
回复

使用道具 举报

7#
发表于 2010-4-9 12:06:40 | 只看该作者
原帖由 x9tian 于 2010-4-9 11:55 发表



    只考虑, 简短,   不考虑, 何种语句,  能一句写完,就不做两句写,  (#-.-)/ 


批处理的简短不能单纯用多少行来衡量的

一个& && 或者 || 就可以将2行变成1行,以此类推

另外就是效率问题,有时候程序虽然短了,但是效率却明显低了
回复

使用道具 举报

8#
 楼主| 发表于 2010-4-9 23:03:30 | 只看该作者
搜索a.txt第一行开头5个字符是不是IZM91,如果是运行1.bat 不是2.bat
@echo off
set/p n=<a.txt
if /i "%n:~0,5%"=="IZM91" (start 1.bat) else start 2.bat
==================================================================
搜索a.txt第一行最后一位是不是W
@echo off
set/p n=<a.txt
if /i "%n:~-1%"=="W" (start 1.TXT) else start 2.TXT
==================================================================
不去认定是否在行首
@echo off
set/p n=<a.txt
if /i "%n:~0,2%"=="mz" (start 1.bat) else start 2.bat

@echo off
set/p n=<a.txt
echo %n% |find /i "mz">nul
if /i %ERRORLEVEL%==0 (start 1.bat) else start 2.bat
==================================================================

“字符串截取”:%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位开始取右边全部。

别人回答的~·
回复

使用道具 举报

9#
发表于 2010-4-10 07:37:22 | 只看该作者
楼上,  你不是第一行 存在 izm 吗   怎么又变成, 第一行开头五个字符是否izm91

     晕是我看错了,你上楼的内容.╮( ̄﹏ ̄)╭


另  set/p n=<a.txt  的使用是有字节限制的,     要是, a.txt 是个文本  .╮( ̄﹏ ̄)╭...................

[ 本帖最后由 x9tian 于 2010-4-10 07:41 编辑 ]
回复

使用道具 举报

10#
 楼主| 发表于 2010-4-11 01:13:41 | 只看该作者

回复 #9 x9tian 的帖子

我只是觉个例子 随便的
谢谢你额帮忙
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 23:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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