无忧启动论坛

标题: CMD 可以搜索一个TXT文本的第一行?做个if语句吗? [打印本页]

作者: jsjcjsjc    时间: 2010-4-8 19:31
标题: CMD 可以搜索一个TXT文本的第一行?做个if语句吗?
就是目录下有一个txt文本
大概里面可能是这个样子
  1. MZI91+AS
  2. AS-DS
  3. AD.ASD
复制代码

怎么创建一个批处理,搜索这个文本的第一行,看第一行里面有没有包含'MZI'
如果包含 在start 1.bat
如果不包含start 2.bat
作者: x9tian    时间: 2010-4-8 22:49
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 编辑 ]
作者: dos时代菜鸟    时间: 2010-4-9 10:53
for /f "delims=" %%c in (TXT) do (
echo %%c|find /i "MZI">NUL && CALL START1.CMD || CALL START2.CMD
goto :eof
)
作者: x9tian    时间: 2010-4-9 11:43
原帖由 dos时代菜鸟 于 2010-4-9 10:53 发表
goto :eof



              差点忘了,  还可以用goto  :eof   呵呵, b( ̄▽ ̄)d
作者: 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
作者: x9tian    时间: 2010-4-9 11:55
原帖由 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



    只考虑, 简短,   不考虑, 何种语句,  能一句写完,就不做两句写,  (#-.-)/ 
作者: NicTense    时间: 2010-4-9 12:06
原帖由 x9tian 于 2010-4-9 11:55 发表



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


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

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

另外就是效率问题,有时候程序虽然短了,但是效率却明显低了
作者: jsjcjsjc    时间: 2010-4-9 23:03
搜索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位开始取右边全部。

别人回答的~·
作者: x9tian    时间: 2010-4-10 07:37
楼上,  你不是第一行 存在 izm 吗   怎么又变成, 第一行开头五个字符是否izm91

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


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

[ 本帖最后由 x9tian 于 2010-4-10 07:41 编辑 ]
作者: jsjcjsjc    时间: 2010-4-11 01:13
标题: 回复 #9 x9tian 的帖子
我只是觉个例子 随便的
谢谢你额帮忙




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3