![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 22:55 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教:关于文本文件中特定字符的判断问题。 |
| 可打印版本 2,006 / 10 |
| 第1楼 lianjiang2004 | 发表于 2007-06-06 17:51 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
请教:关于文本文件中特定字符的判断问题。 有一文本文件,hdmini.txt,其格式如下,我想判断此文件中是否有1:7。
N:N DOS WIN PRI/LOG ACT HIDE ID FILE SYSTEM LABEL TOTALmb FREEmb 1:1 = C: C: PRIMARY YES NO 0B FAT32 NO NAME 7538 3663 1:2 = E: PRIMARY NO YES 17 NTFS/HPFS 7467 0 1:3 = F: D: LOGICAL NO NO 07 NTFS/HPFS 10001 7161 1:4 = G: E: LOGICAL NO NO 07 NTFS/HPFS 15005 7122 1:5 = D: F: LOGICAL NO NO 0B FAT32 APPZ 30004 15073 1:6 = H: G: LOGICAL NO NO 07 NTFS/HPFS 44453 16354 我用了两种处理方法,请教为何第二种不行?错在哪里?谢谢。 rem 方法1: set act=1:7 For /f "tokens=1" %%i In ('type hdmini.txt ^| find "%act%"') do ( if errorlevel=0 goto sub_018 ) cls Echo ------------------------------------------------ echo. echo 警告:自定义分区号"%act%"不存在,需重新输入。 echo. Echo ------------------------------------------------ echo. pause ****************************************************** rem 方法2: set act=1:7 type hdmini.txt ^| find "%act%" >nul if errorlevel=0 goto sub_018 cls Echo ------------------------------------------------ echo. echo 警告:自定义分区号"%act%"不存在,需重新输入。 echo. Echo ------------------------------------------------ echo. pause ××××××××××××××××××××××××× 我试了一下,改成下面这样就行了。原因不明。 ----------------------------------- @echo off set act=1:7 find "%act%" hdmini.txt >nul if not errorlevel 1 goto sub_018 cls Echo ------------------------------------------------ echo. echo 警告:自定义分区号"%act%"不存在,需重新输入。 echo. Echo ------------------------------------------------ echo. pause goto exit :sub_018 echo ok pause :exit [ Last edited by lianjiang2004 on 2007-6-6 at 06:45 PM ] |
|
| 第2楼 wudixin96 | 发表于 2007-06-06 18:13 |
| 银牌会员 发帖 931 积分 1,928 | |
|
type hdmini.txt ^| find "%act%" >nul
if errorlevel=0 goto sub_018 两个错误: 一、hdmini.txt后没必要加^。完全可以find "%act%" hdmini.txt 二、if errorlevel=0没有这种用法。应该是if errorlevel 0 |
|
| 第3楼 lianjiang2004 | 发表于 2007-06-06 18:17 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
谢谢,我试试看。我的^是依葫芦画瓢画的,呵呵。
|
|
| 第4楼 lianjiang2004 | 发表于 2007-06-06 18:25 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
没if errorlevel=0的用法吗?那我的方法1里用了,是能通过的。
基础差,我再查查,呵呵。 |
|
| 第5楼 lianjiang2004 | 发表于 2007-06-06 18:28 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
按你的改法,测试通不过。
|
|
| 第6楼 wudixin96 | 发表于 2007-06-06 18:38 |
| 银牌会员 发帖 931 积分 1,928 | |
|
怎么通不过??
出现什么错误? |
|
| 第7楼 lianjiang2004 | 发表于 2007-06-06 18:44 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
就是说结果应是没有。可是运行后却是有。
|
|
| 第8楼 lianjiang2004 | 发表于 2007-06-06 18:45 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
我试了一下,改成下面这样就行了。原因不明。
----------------------------------- @echo off set act=1:7 find "%act%" hdmini.txt >nul if not errorlevel 1 goto sub_018 cls Echo ------------------------------------------------ echo. echo 警告:自定义分区号"%act%"不存在,需重新输入。 echo. Echo ------------------------------------------------ echo. pause goto exit :sub_018 echo ok pause :exit |
|
| 第9楼 wudixin96 | 发表于 2007-06-06 18:49 |
| 银牌会员 发帖 931 积分 1,928 | |
| 第10楼 wudixin96 | 发表于 2007-06-06 18:50 |
| 银牌会员 发帖 931 积分 1,928 | |
|
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。 |
|
| 第11楼 lianjiang2004 | 发表于 2007-06-06 18:56 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
9楼代码通过,谢谢。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |