[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

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

TOP

回复 3# pcl_test


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

能否解释下?这句话中的含义?

TOP

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

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

要善于使用cmd帮助
目的,学习批处理

TOP

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

TOP

返回列表