Board logo

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

作者: yy521b    时间: 2016-12-29 19:27     标题: 批处理如何让一个FOR语句结束后再执行下一条语句?

本帖最后由 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中的内容完全显示完后再暂停,而不是每显示一行暂停一下??
作者: yy521b    时间: 2016-12-29 20:37

  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 就行了,谢谢,可以关了!
作者: pcl_test    时间: 2016-12-30 22:03

本帖最后由 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

回复 3# pcl_test


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

能否解释下?这句话中的含义?
作者: hlzj88    时间: 2017-1-1 10:59

回复 4# 我来了
findstr /?
v   排除
g  从文件得到关键词

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

要善于使用cmd帮助
作者: 我来了    时间: 2017-1-2 11:08

回复 5# hlzj88
我以为 只能/i /v 这样分着写呢,原来能合一起啊




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