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

[文本处理] 批处理如何让一个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中的内容完全显示完后再暂停,而不是每显示一行暂停一下??

  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 就行了,谢谢,可以关了!

TOP

返回列表