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

[文件操作] [已解决]如何判断文件b中是否包含文件a中的字符串并执行相应的命令

本帖最后由 xiaoqiang3243 于 2012-3-23 13:28 编辑

文件a的内容:
ctccode.tg.gz
文件b的内容:
e:\ftphome\ams\ctccode.tar.gz
e:\ftphome\ams\rhel4.8.rar
e:\ftphome\ams\lzma-4.32.7-1.el4.rf.i386.rpm
e:\ftphome\ams\lzma-libs-4.32.7-1.el4.rf.i386.rpm
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (a.txt) do (if %%~zi==0 exit )
  4. for /f  %%i in (a.txt) do (
  5. findstr "%%i" b.txt
  6. if %errorlevel% equ 1 echo "文件b中不包含字符串"%%i"!"
  7. if %errorlevel% equ 0 echo "文件b中包含字符串"%%i"!"
  8. )
复制代码
问题:findstr返回值一直是0???即便文件a中的字符串未出现在文件b中,还是执行
  1. echo "文件b中包含字符串"%%i"!"
复制代码
直接在命令行中运行
  1. findstr "code.tg.gz" b.txt
复制代码
findstr返回值正常(errorlevel值为1)
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

!errorlevel!
1

评分人数

TOP

本帖最后由 xiaoqiang3243 于 2012-3-23 13:27 编辑

非常感谢find的指正,我的批处理太菜,以后还得多向大家学学!谢谢find!
修改后的内容如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (a.txt) do (if %%~zi==0 exit )
  4. for /f  %%i in (a.txt) do (
  5. findstr "%%i" b.txt
  6. if !errorlevel! equ 1 echo "文件b中不包含字符串"%%i"!"
  7. if !errorlevel! equ 0 echo "文件b中包含字符串"%%i"!"
  8. )
复制代码

TOP

返回列表