Board logo

标题: DOS下有没有截取字段的命令 [打印本页]

作者: paulhybryant     时间: 2007-4-28 01:49    标题: DOS下有没有截取字段的命令
如题,例如一个文件的一行是以空格,:,或者tab这样的字符分隔,可否将他们截取出来?

123:456:789
123 456 789
可以把123, 456,按照自己的要求截取出来?

作者: lxmxn     时间: 2007-4-28 01:59
可以,用for /f可以截取你想要的,搜索一下吧,很多讨论了。

作者: paulhybryant     时间: 2007-4-28 02:13
好的,谢谢斑竹

作者: paulhybryant     时间: 2007-4-28 12:42
还有一个问题没有找到,就是要是在字段数量不一定的情况下,该怎么写啊?

作者: lxmxn     时间: 2007-4-28 12:58
字段数量不一定,就要根据情况来使用变量的字符截取功能了,或者结合for命令来解决。

作者: lianjiang2004     时间: 2007-4-28 20:25
Originally posted by lxmxn at 2007-4-28 01:59:
可以,用for /f可以截取你想要的,搜索一下吧,很多讨论了。

版主,dos下有for/ f吗?是CMD下吧?
有的话,就太方便了。

作者: lxmxn     时间: 2007-4-29 02:56
Re lianjiang2004:

呵呵,我说的就是在CMD下面,也不知道DOS下面有没有,没有安装DOS。o_O

作者: paulhybryant     时间: 2007-4-30 00:24
再问一个问题,我向在循环中计数,但是一下的代码不行
@echo off
set it=0
for /L %%i in (1,1,5) do (
set /a it=it+1
echo %it%
)
回到命令行后用echo查看变量是变了的,但是输出却都是0,请问这是什么问题。我是想在不用/L和%%i的情况下计数,所以不用echo %%i

作者: lxmxn     时间: 2007-4-30 00:59
搜索一下“变量延迟” or “SetLocal”。

@echo off&setlocal EnableDelayedExpansion
set it=0
for /L %%i in (1,1,5) do (
set /a it+=1
echo !it!
)
pause

作者: paulhybryant     时间: 2007-5-1 11:07
谢谢版主,已经弄清楚了,还有一个问题,我最近编一个批处理的时候,要用一个程序过滤dir的输出,可是我发现用管道竟然比先把dir的结果写入一个文件,在用过滤程序过滤这个文件要慢,个人觉得管道应该更加快才是啊,不知道是什么原因呢?谢谢版主这几次的帮助

作者: paulhybryant     时间: 2007-5-1 11:12
还有,我想知道自己的脚本的大概执行时间,不知道应该如何计算?

作者: paulhybryant     时间: 2007-5-1 12:27
用echo如何输出像tab,backspace这样的特殊字符啊?

作者: lxmxn     时间: 2007-5-1 22:56
Re paulhybryant:

1、用dir过滤之后再写入文件要比写入文件之后再过滤慢了,dir每输出一行就过滤一次,而用文件过滤,一次性把内容放在系统缓冲区,再来一起过滤,流程不一样,处理的速度自然不一样了;

2、计算脚本你运行时间,可以在脚本前后分别加上一句 echo %time% ,再来比较它们的差值;

3、输出tab或者backspace,可以这样:echo\[tab] 、echo\[backspace]。

作者: paulhybryant     时间: 2007-5-2 20:45
谢谢斑竹,我用echo\[tab],输出的是[tab],不是制表符啊,请问是我那里搞错了?

作者: paulhybryant     时间: 2007-5-2 22:43
如果我想输出一个字符,包括特殊字符在内,入\r,\n这些,能够用制定ascii的方式输出么?不好意思,问了这么多,谢谢斑竹了

作者: lxmxn     时间: 2007-5-4 21:27
Re paulhybryant:

你完全误解了我的意思,echo\[tab]的意思是 先打下echo\,然后再按一下键盘上的Tab键。而不是像有的编程语言那样,[tab]代表制表符,[backspace]代表空格,要输出这些字符,可以用 Alt+数字 的方法。

作者: paulhybryant     时间: 2007-5-11 10:07
Alt+数字?
不太明白,可以给一个示例么?