Board logo

标题: 新手求助一for命令具体问题 [打印本页]

作者: calefe     时间: 2006-12-12 03:40    标题: 新手求助一for命令具体问题

有段命令如下
for /f "skip=5 tokens=1,* delims= " %a in (dir.txt) do @echo %a%b%c

dir.txt是重定向当前目录下的dir信息
我想取出当中的文件名和修改日期的信息(如2006-12-11 aaa.txt)去掉时间和大小

问题
1。2006-12-11 08:52                8 aaa.txt 时间和大小中间好像不认为是空格 ,"delims= "没区分
2。如果成功了我又想把取出来的重定向到另一个文档中可以吗?如到文档temp.txt下。内容为
2006-12-11 aaa.txt
2006-12-11 bbb.txt



小弟刚看了一会会,有点不太理解。帮助文档看不懂,问下各位。谢谢

[ Last edited by calefe on 2006-12-11 at 02:44 PM ]
作者: calefe     时间: 2006-12-12 03:41
在线等
作者: xusen     时间: 2006-12-12 04:30
for /f "tokens=1,4" %a in ('dir') do @echo %a %b
作者: calefe     时间: 2006-12-12 04:58
麻烦能再说详细点吗。这样会有标题
(驱动器 本地磁盘
卷的序列号是
D:\)
还有就是能重定向到一个文件上吗?
谢谢
作者: lxmxn     时间: 2006-12-12 14:30

  此方法按照楼主的意思来写的,其中不足之处是最后两行会有多余的信息。
@echo off
if exist temp.txt del /f/a temp.txt
for /f "skip=7 tokens=1-3*" %%a in (dir.txt) do (
    if not "%%d"=="" echo %%a %%d
    echo %%a %%d>>temp.txt
)
pause
  下面这个方法同样可以达到楼住的目的,把bat文件放在要测试的目录下运行即可。
@echo off&setlocal EnableDelayedExpansion
if exist temp.txt del /a/f temp.txt
    for /f "delims=" %%a in ('dir /b/a-d') do (
        set date_=%%~ta
        set date_=!date_:~0,10!
        echo !date_! %%~nxa
        echo !date_! %%~nxa>>temp.txt
    )
pause

作者: calefe     时间: 2006-12-12 23:43
谢谢。我最终的目地是想删某特定时间的特定文件名的文件
for不是太理解 对楼上有个问题:
for /f "skip=7 tokens=1-3*" %%a in (dir.txt) do (
    if not "%%d"=="" echo %%a %%d
    echo %%a %%d>>temp.txt
)
在这个循环里两个a b 的变量在每一次循环里是相对应的吗,在这个例子里就是说a b是不是代表同一个文件的文件名和修改时间?