| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2313 人关注过本帖
标题:用什么方法删除不同文件夹下文件名中相同日期的文件
只看楼主 加入收藏
hn9810
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2010-7-13
结帖率:11.11%
收藏
已结贴  问题点数:15 回复次数:5 
用什么方法删除不同文件夹下文件名中相同日期的文件
问题1、同在dsdf下的不同文件夹中,文件最后8位是日期,写一段程序,用什么方法可以只删除dsdf目录下文件名中有20170518日期的文件。
 D:\DJJS\rece\dsdf\hxjj\jy 的目录

2017-05-18  18:54               321 C227IL51195020170519.dbf
2017-05-18  18:54               321 CAM58CIL20170518.dbf
               2 个文件            642 字节

 D:\DJJS\rece\dsdf\jjreceive\27 的目录

2017-05-18  21:03               354 C22792020170519.DBF
2017-05-18  21:03               354 CAML20170518.dbf.DBF
CAML20170518.dbf
               2 个文件            708 字节
问题2:用什么方法(dos命令或vfp命令)可以把不同文件夹下的文件,放在同一个文件夹中且只放文件,不带源文件路径
比如上面4个文件放在文件夹D:\TEMP下,格式为:

D:\TEMP 的目录
2017-05-18  21:03               354 C22792020170519.DBF
2017-05-18  21:03               354 CAML20170518.dbf.DBF
2017-05-18  18:54               321 C227IL51195020170519.dbf
2017-05-18  18:54               321 CAM58CIL20170518.dbf
               4 个文件            642 字节
      

谢谢

[此贴子已经被作者于2017-5-19 12:57编辑过]

搜索更多相关主题的帖子: 文件夹 
2017-05-19 12:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
用ADIR()获取文件信息应该可以解决问题
2017-05-19 13:55
hn9810
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2010-7-13
收藏
得分:0 
二楼这个方法不能返回路径,不行吧
2017-05-19 15:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用hn9810在2017-5-19 15:03:50的发言:

二楼这个方法不能返回路径,不行吧

要返回什么路径?
2017-05-19 15:06
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:992
专家分:4966
注 册:2013-2-16
收藏
得分:5 
1、如果文件夹下还有未知层级的子文件夹呢?所以,这一步,你需要用到递归,
好在有前辈已经做好了一个递归搜索子文件夹的示例,你在坛子里搜索一下,应该还能找得到。

2、解决了子文件夹搜索,那么把其中的文件名装入数组,这个用上面说的Adir()就可以做到了。

3、在数组中遍历,判断文件名是否符合条件,方法有两个,简单的,直接用AT()就能够判断,
复杂的,也可以用到正则表达式,采用哪个,随你喜欢。

所以,关键是你把 1 的方法完全掌握,后面的基本上就不是问题了。
2017-05-19 15:38
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:5 
path_list=GetAllPath('D:\DJJS\')
*CREATE CURSOR (lcTblDir) (fldsn I(3),flddir C(200))
*删除dsdf目录下文件名中有20170518日期的文件
SELECT (path_list)
SCAN
    path_tmp=ADDBS(ALLTRIM(flddir))
    FOR I=1 TO ADIR(FILE_LIST,path_tmp+'*.DBF')
        IF RIGHT(JUSTSTEM(FILE_LIST[I,1]),8)='20170518'
            DELETE FILE (path_tmp+FILE_LIST[I,1])
        ENDIF
    ENDFOR
    RELEASE FILE_LIST
ENDSCAN
USE IN (path_list)


*把不同文件夹下的文件,放在同一个文件夹中且只放文件
path2_tmp='d:\temp\'
path_list=GetAllPath('D:\DJJS\')
SELECT (path_list)
SCAN
    path_tmp=ADDBS(ALLTRIM(flddir))
    FOR I=1 TO ADIR(FILE_LIST,path_tmp+'*.DBF')
        COPY FILE (path_tmp+FILE_LIST[I,1]) TO (path2_tmp+FILE_LIST[I,1])
    ENDFOR
    RELEASE FILE_LIST
ENDSCAN
USE IN (path_list)
RETURN



FUNCTION GetAllPath (tcRoot)
    IF EMPTY(tcRoot) OR  NOT DIRECTORY(tcRoot)
         RETURN '目录不正确'
    ENDIF
    tcRoot=ADDBS(ALLTRIM(tcRoot))

    LOCAL ARRAY laDirs[1]
    LOCAL i, n,lcTblDir, lcDir, lnCount,lcTblDir2

    lcTblDir= SYS(2015)
    CREATE CURSOR (lcTblDir) (fldsn I(3),flddir C(200))
    INSERT INTO (lcTblDir) (fldsn,flddir) VALUES (0,tcRoot)
    i = 0
    DO WHILE .T.
        lcTblDir2= SYS(2015)
         SELECT * FROM (lcTblDir) WHERE fldSn=i INTO CURSOR (lcTblDir2)
        IF RECCOUNT(lcTblDir2)=0
            USE IN (lcTblDir2)
            EXIT
        ENDIF
        SELECT (lcTblDir2)
        SCAN
            lcDir = ALLTRIM(flddir)
            lnCount = ADIR(laDirs,lcDir + "*.", "D")
            FOR n = 1 TO lnCount
                IF !("." $ laDirs(n,1) OR ".." $ laDirs(n,1))
                    INSERT INTO (lcTblDir) (fldsn,flddir) VALUES (i+1,lcDir+ADDBS(laDirs(n,1)))
                ENDIF
            ENDFOR
         ENDSCAN
         USE IN (lcTblDir2)
         i=i+1
     ENDDO
     SELECT (lcTblDir)
     RETURN lcTblDir
ENDFUNC
2017-05-19 18:08
快速回复:用什么方法删除不同文件夹下文件名中相同日期的文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020455 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved