![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 22:48 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何过虑指定条件之前内容.... |
| 可打印版本 1,849 / 17 |
| 第1楼 peterdocter | 发表于 2007-03-27 05:26 |
| 中级用户 发帖 95 积分 379 | |
|
如何过虑指定条件之前内容.... 原内容:
11111111 222222222 3333333333 555555555555 6666666666666 7777777777 888888 999999 000000 要结果: 555555555555 6666666666666 7777777777 888888 999999 000000 指定了条件或搜索字符是:555555555555 之前内容全部不要,只要它后的内容?不想用sed之类系统不带的工具。 for + find or findstr 都可以! 多谢了! |
|
| 第2楼 lxmxn | 发表于 2007-03-27 06:14 |
| 版主 发帖 4,938 积分 11,386 | |
|
|
|
| 第3楼 flyinspace | 发表于 2007-03-27 06:29 |
| 银牌会员 发帖 517 积分 1,206 | |
|
还可以用for 指令里的skip完成:)
只是没有楼上的简洁。 |
|
| 第4楼 flyinspace | 发表于 2007-03-27 06:35 |
| 银牌会员 发帖 517 积分 1,206 | |
|
if not defined lxmxn echo %%a|findstr "%str%" >nul&&set lxmxn=online
另外。这个defined ? 有用法么? 我从来没有见过这么使用批处理的。 |
|
| 第5楼 lxmxn | 发表于 2007-03-27 06:40 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by flyinspace at 2007-3-26 17:35: help if |
|
| 第6楼 flyinspace | 发表于 2007-03-27 06:42 |
| 银牌会员 发帖 517 积分 1,206 | |
|
没有你说的啊??? 执行批处理程序中的条件处理。
IF ERRORLEVEL number command IF string1==string2 command IF EXIST filename command NOT 指定只有条件为 false 的情况下, Windows XP 才 应该执行该命令。 ERRORLEVEL number 如果最后运行的程序返回一个等于或大于 指定数字的退出编码,指定条件为 true。 string1==string2 如果指定的文字字符串匹配,指定条件为 true。 EXIST filename 如果指定的文件名存在,指定条件为 true。 command 如果符合条件,指定要执行的命令。如果指定的 条件为 FALSE,命令后可跟一个执行 ELSE 关键字后的命令的 ELSE 命令。 ELSE 子句必须在 IF 之后出现在同一行上。例如: IF EXIST filename. ( del filename. ) ELSE ( echo filename. missing. ) 因为 del 命令需要用一个新行终止,以下子句不会有效: IF EXIST filename. del filename. ELSE echo filename. missing 由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也 不会有效: IF EXIST filename. del filename. ELSE echo filename. missing 如果都放在同一行上,以下子句有效: IF EXIST filename. (del filename.) ELSE echo filename. missing 如果命令扩展名被启用,IF 会如下改变: IF string1 compare-op string2 command IF CMDEXTVERSION number command IF DEFINED variable command 其中,比较运算符可以是: EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于 及 /I 开关;如果该开关被指定,则说明要进行的字符串比较不分 大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些 比较都是通用的;原因是,如果 string1 和 string2 都是由数字 组成的,字符串会被转换成数字,进行数字比较。 CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它 是在跟与命令扩展名有关联的内部版本号比较。第一个版本 是 1。每次对命令扩展名有相当大的增强时,版本号会增加一个。 命令扩展名被停用时,CMDEXTVERSION 条件不是真的。 如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样, 除了它取得一个环境变量,返回的结果是 true。 如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL% 会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到 其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法: goto answer%ERRORLEVEL% :answer0 echo Program had return code 0 :answer1 echo Program had return code 1 您也可以使用以上的数字比较: IF %ERRORLEVEL% LEQ 1 goto okay 如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE% 将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始 命令行;否则,您会得到其数值。 如果没有名为 CMDEXTVERSION 的环境变量, %CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的 字串符表达式;否则,您会得到其数值。 |
|
| 第7楼 lxmxn | 发表于 2007-03-27 06:54 |
| 版主 发帖 4,938 积分 11,386 | |
|
回楼上的,再仔细看看。 |
|
| 第8楼 flyinspace | 发表于 2007-03-27 07:19 |
| 银牌会员 发帖 517 积分 1,206 | |
|
噢。。大写的。。
不好意思。。 我马虎了。 |
|
| 第9楼 peterdocter | 发表于 2007-03-28 00:50 |
| 中级用户 发帖 95 积分 379 | |
|
首先要多谢!lxmxn,不过发玩要用系统自带的处理7mb十之二十分钟还是没有处理完而且cpu占用都是100%。看来都要用sed或awk,请问如果要用到这两个工具是如何写了?
|
|
| 第10楼 lxmxn | 发表于 2007-03-28 00:53 |
| 版主 发帖 4,938 积分 11,386 | |
|
汗,7M哇!! 我还以为是处理一些小文本文件呢,看来只能用sed和wak了 |
|
| 第11楼 NaturalJ0 | 发表于 2007-03-28 01:02 |
| 银牌会员 发帖 533 积分 1,181 | |
|
昨天开始学的 sed = =b 试试 |
|
| 第12楼 lxmxn | 发表于 2007-03-28 01:07 |
| 版主 发帖 4,938 积分 11,386 | |
|
NaturalJ0好强哇,昨天学的今天就这样了,佩服一个先。 在NaturalJ0的命令下改进一下: |
|
| 第13楼 NaturalJ0 | 发表于 2007-03-28 02:39 |
| 银牌会员 发帖 533 积分 1,181 | |
|
试了下,知道 more 用不用的区别所在了,又学了一招。 ^_^
|
|
| 第14楼 ccwan | 发表于 2007-03-28 03:01 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
新版版的水平越来越高啦,呵呵。
|
|
| 第15楼 peterdocter | 发表于 2007-03-28 03:36 |
| 中级用户 发帖 95 积分 379 | |
|
lxmxn真强,再来一个awk好吗?不知道你用的是gnu开发的sed吗?
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |