Board logo

标题: [文本处理] 【已解决】批处理中内层FOR调用外层FOR中的变量对比两文件中数据 [打印本页]

作者: flashtear    时间: 2009-5-10 16:11     标题: 【已解决】批处理中内层FOR调用外层FOR中的变量对比两文件中数据

@echo off
for /f "tokens=1" %%a in (1.txt) do (
  set aa=%%a & for /f "tokens=1" %%a in (2.txt) do (if %aa%==%%a echo success!)
   )
pause


作用是对比两文件中数据,但总是执行不成功。
第二个FOR调用第一个FOR的环境变量显示的是ECHO的状态并不显示其数据。
请高手赐教

[ 本帖最后由 flashtear 于 2009-5-11 13:33 编辑 ]
作者: yslyxqysl    时间: 2009-5-10 16:39

搜索“变量延迟”
作者: flashtear    时间: 2009-5-10 17:39

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1" %%a in (1.txt) do (set aa=%%a & for /f "tokens=1" %%a in (2.txt) do (if !aa!==%%a echo success))
pause

刚我搜索了一下变量延迟,现代码修改如下。代码成功运行,但不能显示SUCCESS,直接跳到了PAUSE退出
作者: Batcher    时间: 2009-5-10 20:56     标题: 回复 3楼 的帖子

自己看看执行过程,想想为什么。
  1. ::@echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "tokens=1" %%a in (1.txt) do (
  4.   set aa=%%a
  5.   for /f "tokens=1" %%h in (2.txt) do (
  6.     if !aa!==%%h (
  7.       echo success
  8.     )
  9.   )
  10.   pause
  11. )
  12. pause
复制代码

作者: flashtear    时间: 2009-5-11 13:31

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1" %%a in (1.txt) do (
  4. set aa=%%a
  5. for /f "tokens=1" %%a in (2.txt) do (
  6. if !aa!==%%a echo success
  7. )
  8. )
  9. pause
复制代码

作者: Batcher    时间: 2009-5-11 13:33     标题: 回复 5楼 的帖子

内层for找到对应的记录之后,马上用goto跳出,可以提高效率。
作者: flashtear    时间: 2009-5-11 13:36

已经解决了。题目中已经标注




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2