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

[其他] [已解决]当达到条件后,如何直接就跳出批处理for循环?谢谢!

[复制链接]
 楼主| 发表于 2014-6-21 15:45:11 | 显示全部楼层
回复 14# PowerShell


    谢谢。现在还不会ps.如果有好的教程,请给推荐下
发表于 2014-6-21 17:18:36 | 显示全部楼层
回复 15# changedirectory
C版 代码里字符难道给吃了 下面这个看得比较清楚了吧
文件少于10行 去文件最后行
  1. @echo off
  2. (for /l %%i in (1 1 10) do set/p line=)<a.txt
  3. echo %line%
  4. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
changedirectory + 1 谢谢!

查看全部评分

发表于 2014-6-21 17:45:07 | 显示全部楼层
回复 15# changedirectory


笔误漏了一个 &,已修改...
--------------------------------------------------------------
  1. set/p line=<a.txt
  2. rem 读 a.txt 第一行

  3. (set/p line=
  4. set/p line=)<a.txt
  5. rem 读 a.txt 第二行
复制代码
--------------------------------------------------------------
  1. (for /l (9 -1) do set "line="&set/p line=)<a.txt
复制代码
这里的 for /l (9 -1) do 是 for /l (9 -1 0) do 的简写,其效果等价于
  1. (for /l (1 1 10) do set "line="&set/p line=)<a.txt
复制代码
也就是循环十次,因为 set/p line= 接收到空行时不会修改 %line%,所以用 set "line=" 先将 line 设为空。
如果a.txt 前 10 行都不为空,则等价于
  1. (set/p line=
  2. set/p line=
  3. set/p line=
  4. set/p line=
  5. set/p line=
  6. set/p line=
  7. set/p line=
  8. set/p line=
  9. set/p line=
  10. set/p line=)<a.txt
复制代码
也就是依次读取 a.txt  的前十行
--------------------------------------------------------------
一般来说处理文件的时候,自己用的话最好的选择还是 gawk/sed/perl,给别人用建议用 vbs 或 js 或 bat+js,是最通用的方案且效率不低
win 下的 shell 本职不是处理文本,linux 军团才是这方面的专家
gawk 4.02  ----  156K
sed 4.2.2 ----  76K
perl 5.16.2  ----  (exe+dll = 393K+1339K)

评分

参与人数 1技术 +1 收起 理由
changedirectory + 1 谢谢!

查看全部评分

 楼主| 发表于 2014-6-23 09:43:49 | 显示全部楼层
非常感谢所有人的回答!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 05:22 , Processed in 0.027673 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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