标题: [文本处理] 【已解决】批处理中内层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楼 的帖子
自己看看执行过程,想想为什么。- ::@echo off
- setlocal EnableDelayedExpansion
- for /f "tokens=1" %%a in (1.txt) do (
- set aa=%%a
- for /f "tokens=1" %%h in (2.txt) do (
- if !aa!==%%h (
- echo success
- )
- )
- pause
- )
- pause
复制代码
作者: flashtear 时间: 2009-5-11 13:31
- @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
复制代码
作者: Batcher 时间: 2009-5-11 13:33 标题: 回复 5楼 的帖子
内层for找到对应的记录之后,马上用goto跳出,可以提高效率。
作者: flashtear 时间: 2009-5-11 13:36
已经解决了。题目中已经标注
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |