标题: [新问题]纯dos输出文本指定行
[打印本页]
作者: cocobi
时间: 2008-9-12 13:32
标题: [新问题]纯dos输出文本指定行
纯dos下如何输出文本文档的指定行.或读取指定行作为参数.或类似功能.
纯dos的for命令的功能还是太弱了.
[
Last edited by cocobi on 2008-9-22 at 10:04 PM ]
作者: DOSforever
时间: 2008-9-12 14:35
强弱在于你用什么。
你看一下 4DOS 的 @line 变量函数就可以了。
作者: cocobi
时间: 2008-9-12 15:35
纯dos下的for不支持 /f参数啊.
@line? 可以给个范例吗?基础不是一般的差的说
我问这个主要是想实现dos下删除win的用户目录下的临时文件.
思路是这样.列出docume~1下的文件夹(用户名作文件夹名)输出到一个文件.
dir %windrv%\docume~1\ /b /ad >winuser.lst
再通过逐行读取这个winuser.lst并把读取的内容设定为一个自定义变量winuser*
再执行
deltree "%windrv%\docume~1\%winuser1%\Local Settings\temp"
deltree "%windrv%\docume~1\%winuser1%\Local Settings\tempor~1"
作者: DOSforever
时间: 2008-9-12 16:06
以下给出 @line 的具体帮助,你可能不需要用到
Quote: |
4DOS Help Topic: @LINE
@LINE[filename,n]: Returns line n from the specified file. The first line
in the file is numbered 0. "**EOF**" is returned for all line numbers
beyond the end of the file.
@LINE works with files having lines of no more than 511 characters; longer
lines will not be counted accurately.
The @LINE function must read each line of the file to find the line you
request, and will therefore cause significant delays if used in a long loop
or on a large file. For a more effective method of processing each line of
a file in sequence use the FOR command, or @FILEOPEN and a sequence of
@FILEREADs.
You can retrieve input from standard input if you specify CON as the
filename. If you are redirecting input to @LINE using this feature, you
must use command grouping or the redirection will not work properly (you can
pipe to @LINE without a command group; this restriction applies only to
input redirection). For example:
(echo %@line[con,0]) < myfile.dat |
|
windrv 是什么环境变量?你自己定义的?
按照你要达成的目的,可以用 for ,当然是要用 4DOS 下的 for
for /a:d/h %f in (%windrv%\docume~1\*.*) deltree "%f\locals~1\temp"
[
Last edited by DOSforever on 2008-9-12 at 04:09 PM ]
作者: cocobi
时间: 2008-9-12 16:46
Quote: |
for /a:d/h %f in (%windrv%\docume~1\*.*) deltree "%f\locals~1\temp" |
|
这个强悍.
看了下4dos 最新版7.5? 可惜是个exe for win9x
按照下面说法好像只要一个4dos.com就可以了
Quote: |
可以用4DOS来代替DOS自带的COMMAND.COM,在CONFIG.SYS里面用
shell=C:\4DOS\4DOS.COM @C:\4DOS\4DOS.INI /P,
在AutoExec.Bat里面加
SET COMSPEC=C:\4DOS\4DOS.COM @C:\4DOS\4DOS.INI /P |
|
看情况改路径就可以对吗?
ps:帮忙上传一个4dos.com.谢谢
作者: DOSforever
时间: 2008-9-12 17:06
http://cn-dos.net/forum/viewthread.php?tid=20079
config.sys 里的路径可以随便你写,autoexec.bat 里的那句可以不要。
作者: cocobi
时间: 2008-9-12 17:21
确实可以解压得到4dos.com,好大250k+
确定只需要4dos.com这个文件就可以了吗?OPTION.EXE这个文件可以不要,有什么用没有?
另外批处理编写4dos.com的for的参数因该是%%var吧
for /a:d/h %f in (%windrv%\docume~1\*.*) deltree "%f\locals~1\temp"
应该是
for /a:d/h %%f in (%windrv%\docume~1\*) deltree /y "%%f\locals~1\temp"
吧
作者: DOSforever
时间: 2008-9-12 17:34
OPTION.EXE 是让你设置 4DOS 的初始化文件 4DOS.INI 用的,只不过 GUI 看起来方便一点,你也可以手工修改 4DOS.INI 。
如果你不需要帮助的话只要 4DOS.COM 和 4DOS.INI 这两个文件就可以了。如果要用到 keystack 内部命令,还要有 KSTACK.COM 这个文件,并且要事先 TSR 。
4DOS 的 batch 中 for 命令对 %f 的要求不是很严格,%%f 和 %f 都是合法的。
[
Last edited by DOSforever on 2008-9-12 at 05:47 PM ]
作者: cocobi
时间: 2008-9-12 17:56
标题: 8
keystack? echo.| echo y| 够用了吧.
ps:论坛的命令行界面很有意思.正尝试用它浏览和回帖.
作者: DOSforever
时间: 2008-9-12 18:06
是否够用看你自己的用途,既然你看了 keystack ,我想你一定明白是否它的功能都可以用管道来解决。
作者: cocobi
时间: 2008-9-12 18:16
谢谢你耐心解答和帮助.看了下4dos的说明.好强大.学习中.
作者: DOSforever
时间: 2008-9-12 18:28
不用谢,很少有你这样识宝的人。许多人我给他他还不要,宁愿绕来绕去绕个大圈子,“总算”把问题解决了。我看他们真是累哦!
另外我建议你修改下帖子的标题,DOS 就是 DOS ,没有纯不纯的,要么就是,要么就不是。就像没有什么纯不纯的 Windows ,纯不纯的 UNIX 一样。
作者: lianjiang2004
时间: 2008-9-12 18:51
个人理解, 因为很多人把cmd也叫dos,所以写成纯dos,至少不会有人再拿cmd脚本来说事了,可有效避免误解,呵呵。
作者: DOSforever
时间: 2008-9-12 19:26
正因为如此,所以我们更不应该跟着将错就错。既然你说了是 DOS 问题,那我就只考虑 DOS 环境,要么你就明说是 Windows 命令行或 CMD 环境。一定要把他们这些含糊不清观念给纠正过来,而不是我们迁就着跟着他们跑。
况且,论坛已经有了专门讨论其它命令行环境的版块,和两者都混在一起的批处理版块(基本上,现在的批处理版块讨论的都是 Windows 下的批处理)。这里的版块明确说了是“DOS疑难解答 & 问题讨论”。
作者: lianjiang2004
时间: 2008-9-12 20:35
上次就碰到一个,问dos下处理的,结果有人写了cmd的脚本,我当时还说,似乎不是楼主想要的,结果还是我理解错了,原来就是要cmd的,呵呵。
所以强调dos,是很有必要的,因为二者不分的人太多了,没办法。呵呵。
作者: cocobi
时间: 2008-9-22 22:12
在config.sys里面用4dos.com代替command.com后
执行
for /f "takons=1,2 delims= " %a in ('date/t') do echo %b
返回的结果却是echo is off ,即%b为空,原以为是 月-日-年 格式的字符窜.
本想设置变量 date 为当前日期.却不知如何实现.看了下4dos的帮助,这样的for语句是支持的.