找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27125|回复: 5

[文本处理] 批处理如何让一个FOR语句结束后再执行下一条语句?

[复制链接]
发表于 2016-12-29 19:27:42 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-12-30 22:02 编辑
  1. @Echo off
  2. Cls
  3. for /f "tokens=1,1" %%a in (Temp.txt) do call :FOO %%a
  4. goto :Done
  5. :FOO
  6. set str1=%1
  7. set str2=%str1:~1,12%
  8. echo %str2%>> CN.txt
  9. echo %str2%
  10. :Done
  11. findstr /ivg:enable.txt cn.txt>disable.txt
复制代码
我的TEMP.TXT里有3000多行数据,每一行都要取一段数据到CN.TXT中,最后 用enable.txt 与cn.txt做对比,但是执行以上语句效果是没取一行数据就要和enable.txt 对比一下,执行完要对比3000多次。很浪费时间!
请问以上语句如何改动,能让FOR语句执行完,生成完整的cn.txt后,再执行findstr 进行两个文件对比。
请帮忙谢谢!

  1. @Echo off
  2. Cls
  3. for /f "tokens=1,1" %%a in (Temp.txt) do call :FOO %%a
  4. goto :Done
  5. :FOO
  6. set str1=%1
  7. echo %str1%
  8. :Done
  9. pause
复制代码
说的在直观一些,我如何用for语句让Temp.txt中的内容完全显示完后再暂停,而不是每显示一行暂停一下??
 楼主| 发表于 2016-12-29 20:37:25 | 显示全部楼层

  1. @Echo off
  2. Cls
  3. for /f "tokens=1,1" %%a in (Temp.txt) do (if "%%a"=="" (echo.) else (call :FOO %%a))
  4. pause
  5. :FOO
  6. set str1=%1
  7. echo %str1%
复制代码
自己解决了用IF 就行了,谢谢,可以关了!
发表于 2016-12-30 22:03:04 | 显示全部楼层
本帖最后由 pcl_test 于 2016-12-31 07:14 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f %%a in ('type "temp.txt"') do (
  3.     set "str=%%a"
  4.     echo;!str:~1,12!
  5. ))>"cn.txt"
  6. findstr /ivg:"enable.txt" "cn.txt">"disable.txt"
  7. pause
复制代码
http://www.bathome.net/thread-5814-1-1.html
http://www.bathome.net/thread-75-1-1.html
http://www.bathome.net/viewthread.php?tid=14852
http://www.bathome.net/viewthread.php?tid=1267
http://www.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-31727-1-1.html
http://www.bathome.net/viewthread.php?tid=3768
http://www.bathome.net/viewthread.php?tid=2899
发表于 2017-1-1 10:05:19 | 显示全部楼层
回复 3# pcl_test


findstr /ivg:"enable.txt" "cn.txt">"disable.txt"

能否解释下?这句话中的含义?
发表于 2017-1-1 10:59:04 | 显示全部楼层
回复 4# 我来了
findstr /?
v   排除
g  从文件得到关键词

用findstr 排除cn.txt里存在的以enable.txt里的每行为关键词不区分大小写的数据写入disable.txt

要善于使用cmd帮助
发表于 2017-1-2 11:08:03 | 显示全部楼层
回复 5# hlzj88
我以为 只能/i /v 这样分着写呢,原来能合一起啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:29 , Processed in 0.018991 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表