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

[文本处理] 【已解决】批处理中内层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 编辑 ]
1

评分人数

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

搜索“变量延迟”

TOP

@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退出

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  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
复制代码

TOP

回复 5楼 的帖子

内层for找到对应的记录之后,马上用goto跳出,可以提高效率。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

返回列表