Board logo

标题: [已结] 自动生成bat的问题 [打印本页]

作者: sinbao     时间: 2007-6-15 13:59    标题: [已结] 自动生成bat的问题

我们知道dir /b/ad > dirs.bat 是输出当前目录下的文件夹名到文件dirs.bat
假设我这里有两个文件夹20070613和20070713
那么dirs.bat的内容就是
20070613
20070713
但是如果我想要dirs.bat的内容是
SomeCmd "20070613" -d
SomeCmd "20070713" -d
怎么办?

[ Last edited by sinbao on 2007-6-18 at 05:31 PM ]
作者: wudixin96     时间: 2007-6-15 14:15

for /f "delims=" %%i in ('dir /b /ad') do echo SomeCmd "%%i" -d>>dirs.bat
试试这个?没测试
作者: sinbao     时间: 2007-6-16 15:48
恩,不错...
作者: sinbao     时间: 2007-6-16 15:54
哦,还有一个问题,
如果我要过滤文件夹的名字怎么办?比如我只要文件夹20070613和20070713,而不要1245,abcd,fee等文件夹呢?
作者: wudixin96     时间: 2007-6-16 19:15
仅仅是要20070613和20070713两个文件夹吗?
作者: sinbao     时间: 2007-6-18 09:05
不,要日期格式的文件夹
作者: Climbing     时间: 2007-6-18 09:08

for /f "delims=" %%i in ('dir /b /ad 200*') do echo SomeCmd "%%i" -d>>dirs.bat

作者: sinbao     时间: 2007-6-18 13:10
楼上的虽然也行,有个问题是如果我想要文件夹的名字是8位数字呢?
作者: wudixin96     时间: 2007-6-18 13:37

for /f "delims=" %%i in ('dir /b /ad ^|findstr /r "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"') do echo SomeCmd "%%i" -d>>dirs.bat
这样呢?似乎P中的正则只能这样写了。没测试,:-)

[ Last edited by wudixin96 on 2007-6-18 at 01:39 PM ]
作者: sinbao     时间: 2007-6-18 14:02
dos支持正则吗?
那\d{8}这种语法支持吗?
作者: wudixin96     时间: 2007-6-18 14:34
findstr中的正则就那么点了。

要是能支持/d[8}。早用了。

要不用VBS或JS吧。正则支持的不错。看样子楼主的正则不错哦。
作者: sinbao     时间: 2007-6-18 15:15
用过perl,正则知道一点...
作者: Climbing     时间: 2007-6-18 15:26
既然一定要用正则,干脆使用sed或者gawk之类的软件好了,反正有的是。
作者: sinbao     时间: 2007-6-18 15:49
那不行,一定要通用...别人机器上没有装你不可能给他装个吧
作者: Climbing     时间: 2007-6-18 16:17
有时候,鱼和熊掌是不能兼得的。

微软的批处理从来就不是一个好的编程工具,你不能干它本来就干不了的事情,它跟Unix的shell脚本实在是无法相提并论的。

你的情况,只能走一步看一步了,9楼的脚本应该暂时能够满足要求,但肯定也不完美,因为如果有一个目录是88888888,也是符合规则的。
作者: sinbao     时间: 2007-6-18 16:27


  Quote:
9楼的脚本应该暂时能够满足要求,但肯定也不完美,因为如果有一个目录是88888888,也是符合规则的。

9楼的答复对这个还是可以满足的
作者: wudixin96     时间: 2007-6-18 22:20
即使使用真正的正则,要表示日期也比较长的。
而且楼主说了。只要是8 位数字的。没其他要求的。