![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 11:16 |
共 48,037 主题排行 / 350,122 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 纯DOS下如何用for提取文本内容 |
| 可打印版本 2,158 / 14 |
| 第1楼 anyppop | 发表于 2006-11-04 12:29 |
| 新手上路 发帖 6 积分 12 | |
|
纯DOS下如何用for提取文本内容 在纯DOS下我有一个文件time.txt里面的内容只有一行 22:00
请问一下我如何用for命令把这一行22:00作为一个变量 ──────────────── 版务记录 ──────────────── 执行:namejm 原标题:问一个关于for命令 修改后标题:纯DOS下如何用for提取文本内容 说明:因标题过于模糊,不便于论坛的搜索和管理;在本提示发表三日之后, 楼主仍未修改标题。 处罚:本人强制修改标题,并扣除楼主4点积分,以示惩罚。 请点击这里阅读论坛发帖规定,以避免在今后的讨论中违规发帖。 ──────────────── 版务记录 ──────────────── [ Last edited by namejm on 2006-11-8 at 09:58 PM ] |
|
| 第2楼 yuanzijia08 | 发表于 2006-11-04 14:47 |
| 初级用户 发帖 30 积分 78 来自 湖南湘潭 | |
|
for /f "tokens=*" %%i in (time.txt) do (
set line=%%i goto:**** ) 应该在****这个段里面 引用%line%这个环境变量就没问题了 不知道行不行 不行的话请原谅 (本人也是初学者) |
|
| 第3楼 amao | 发表于 2006-11-04 19:33 |
| 中级用户 发帖 152 积分 316 | |
|
2楼没有看清楼主的要求-“在纯DOS下”,呵呵
在纯DOS下,用for不行,如果不借助第三方工具,实现起来很繁琐复杂。 用第三方工具就简单多了 建议楼主搜索论坛相关帖子,有很多 |
|
| 第4楼 不得不爱 | 发表于 2006-11-04 19:45 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
用WBAT可以实现
|
|
| 第5楼 redtek | 发表于 2006-11-05 00:11 |
| 金牌会员 发帖 1,147 积分 2,902 | |
Originally posted by anyppop at 2006-11-4 12:29: 测试版本: MS-DOS 6.22 在纯DOS下获得一个文本文件内容的第一行(仅一行)到变量的方法。 这个方法并不难,使用了批处理运行时可以带入%参数的原理和重定向的原理来实现。 例:要读取名为 TIME.TXT 纯文本文件内的第一行内容(假设仅一行), 而且假设根本不知道这个TIME.TXT纯文本文件的内容是什么, 而且假设这个文本文件的第一行没有非法字符、没有空格(有空格用就多加%参数就行了) 但就想读它到变量。 如果要读取的 TIME.TXT 内容如下: 那么用于读取Time.txt内容的批处理文件如下, 请给下面的批处理文件取名为: Enter.bat (请一定要取这个名字,如果改名的话则运行出错) DOS内部获得/设定当前日期的命令是 DATE, 如果你将一个设定好的日期存到一个文本文件内,那么就可以 DATE<TIME.TXT来重定向的方式设置日期了。 那么,如果TIME.TXT中你输入的是非标准的日期格式内容,甚至是一个人的名字,哈哈…… 但是,当你使用重定向的到日期设置的时候,DOS内部日期查看设置的命令DATE就会提示出错信息, 不用管它提示出错,因为你的重定向原理已经将那个非法的文本文件中的字符串提交给了DATE, 所以,显示错的时候照样显示了你的那个字符串。 所以,再把它重定向到一个其它的文本文件中, 那么这个含有错误的(你在文本文件中写的字符串)和在这个字符串前的Enter等提示输入日期的内容都将在一行, 被重定向到一个新的文本文件中。 这时候,就可以当那个提示“Enter”你就当它是一个名为Enter.bat的批处理文件, 假如 Enter.bat a b c d 带参数运行了, 那么 %1 就是a,%2就是b…… 所以,利用批处理带参数的原理就把文本文件中的那一行内容取出来了, 再用 set mydata=%4,当然就将带进来的参数%4赋值给了 mydata这个变量。 变量都赋值了,想怎么用就怎么用吧~:) 注:上面批处理中: 上面这一行只不过是使用了外部Find.exe来滤过一个含有Current字符串的内容, 只为是把含有这些内容字符串的文件当做一个批处理来运行(为了提参数), 但这个Current同样会被当做一个名为了Current的可执行文件或批处理来运行, 当然没有这个文件了,所以DOS必然提示Bad command……坏的没有这个命令的提示, 不喜欢这个错误提示,所以就使用find.exe 滤过去了。 不过,如果不喜欢外部的命令,就喜欢用内部命令照样可以实现的想法, 那么去掉这行,就真的纯粹使用了内存命令,照样可以取得你要得到的字符串, 就是会提示一行错误信息,哈哈…… ================================ 可能上面并没有说得很清楚:) 因为在虚拟机内装的 MS-DOS 6.22,实在不方便把在纯DOS执行的每一个步骤都再从虚拟机里复制在这里。 详细的原理可以参考下面这个贴子: ------------------------------------------------------------------------------ 如何在DOS批处理中创建一个TXT文件,并写入当前的日期 http://www.cn-dos.net/forum/viewthread.php?tid=24259&sid=MqOPm1 ------------------------------------------------------------------------------ 上面的贴子里有详细的介绍和与这个读文本文件内容相似的(原理相似)内容以及多个步骤是怎么实现的。 [ Last edited by redtek on 2006-11-5 at 12:16 AM ] |
|
| 第6楼 anyppop | 发表于 2006-11-05 00:54 |
| 新手上路 发帖 6 积分 12 | |
|
楼上的太复杂了点。
不知道版主说的的WBAT如何实现呀。 |
|
| 第7楼 redtek | 发表于 2006-11-05 01:07 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
WBAT从来没用过,不好意思~:)
请anyppop兄在论坛 ”搜索“ 功能里输入关键词: WBAT 会找到相关的它的使用说明~:) [ Last edited by redtek on 2006-11-5 at 01:11 AM ] |
|
| 第8楼 vkill | 发表于 2006-11-05 05:48 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
| 第9楼 anyppop | 发表于 2006-11-05 10:01 |
| 新手上路 发帖 6 积分 12 | |
|
找了好久都没有找到
版主你说的的WBAT如何实现呀 |
|
| 第10楼 anyppop | 发表于 2006-11-08 08:39 |
| 新手上路 发帖 6 积分 12 | |
|
顶一下,兄弟们帮帮忙啊。这个问题把我烦死了
|
|
| 第11楼 redtek | 发表于 2006-11-09 00:14 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
从anyppop兄1楼发贴到最后一贴都4天过去了,
wbat就是一个一个参数的试也该全玩过N遍了吧? 怎么能烦死那?哈哈 ~:) |
|
| 第12楼 anyppop | 发表于 2006-11-09 09:47 |
| 新手上路 发帖 6 积分 12 | |
|
我试了一下,WBAT是可以提取,但会跳出一个窗口来。
不知道正确的方法是怎么样的 |
|
| 第13楼 NaturalJ0 | 发表于 2006-11-09 22:05 |
| 银牌会员 发帖 533 积分 1,181 | |
|
以前这论坛里有人教过我一个办法。
不过是从侧面解决这个问题。 你看下。 比如,你要把 22:00 读到变量 time 中去。 那你就直接搞个 time.bat 。 内容是: set time=22:00 要读时间的时候 call time.bat 一下。 |
|
| 第14楼 不得不爱 | 发表于 2006-11-09 23:48 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
不知道4DOS如何
|
|
| 第15楼 honhaizh | 发表于 2006-11-16 20:35 |
| 初级用户 发帖 18 积分 35 | |
|
呵呵
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |