标题: [文本处理] 批处理如何让一个FOR语句结束后再执行下一条语句? [打印本页]
作者: yy521b 时间: 2016-12-29 19:27 标题: 批处理如何让一个FOR语句结束后再执行下一条语句?
本帖最后由 pcl_test 于 2016-12-30 22:02 编辑
- @Echo off
- Cls
- for /f "tokens=1,1" %%a in (Temp.txt) do call :FOO %%a
- goto :Done
- :FOO
- set str1=%1
- set str2=%str1:~1,12%
- echo %str2%>> CN.txt
- echo %str2%
- :Done
- findstr /ivg:enable.txt cn.txt>disable.txt
复制代码
我的TEMP.TXT里有3000多行数据,每一行都要取一段数据到CN.TXT中,最后 用enable.txt 与cn.txt做对比,但是执行以上语句效果是没取一行数据就要和enable.txt 对比一下,执行完要对比3000多次。很浪费时间!
请问以上语句如何改动,能让FOR语句执行完,生成完整的cn.txt后,再执行findstr 进行两个文件对比。
请帮忙谢谢!- @Echo off
- Cls
- for /f "tokens=1,1" %%a in (Temp.txt) do call :FOO %%a
- goto :Done
- :FOO
- set str1=%1
- echo %str1%
- :Done
- pause
复制代码
说的在直观一些,我如何用for语句让Temp.txt中的内容完全显示完后再暂停,而不是每显示一行暂停一下??
作者: yy521b 时间: 2016-12-29 20:37
- @Echo off
- Cls
- for /f "tokens=1,1" %%a in (Temp.txt) do (if "%%a"=="" (echo.) else (call :FOO %%a))
- pause
- :FOO
- set str1=%1
- echo %str1%
复制代码
自己解决了用IF 就行了,谢谢,可以关了!
作者: pcl_test 时间: 2016-12-30 22:03
本帖最后由 pcl_test 于 2016-12-31 07:14 编辑
- @echo off&setlocal enabledelayedexpansion
- (for /f %%a in ('type "temp.txt"') do (
- set "str=%%a"
- echo;!str:~1,12!
- ))>"cn.txt"
- findstr /ivg:"enable.txt" "cn.txt">"disable.txt"
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |