| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3469 人关注过本帖
标题:如何将D盘下所有文件按要求写入表文件中(文件列表)
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:658
专家分:3
注 册:2018-1-4
结帖率:97.44%
收藏
已结贴  问题点数:20 回复次数:11 
如何将D盘下所有文件按要求写入表文件中(文件列表)
如何将D盘下的所有文件写入表文件temp.dbf中,表文件temp.dbf包含下列字段:序号 I,文件名 C(100),文件类型 C(6),完整路径 C(100)。
例如:d:\wj\jsrkb.dbf
文件名:jsrkb
文件类型:.dbf
完整路径:d:\wj\

请各位高手赐教,万分感谢!!!
搜索更多相关主题的帖子: dbf 要求 表中 文件 写入 
2020-06-13 08:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
C类型字段存放完整路径可能不够
2020-06-13 08:50
王咸美
Rank: 1
等 级:新手上路
帖 子:658
专家分:3
注 册:2018-1-4
收藏
得分:0 
改成备注型可好?
2020-06-13 10:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:2 
备注型可以
如果文件都是自己创建的应该可以用C类型,路径长度控制在不超出C类型的限制就好了。
上次用的cmd命令 dir /s 可以简单获取包含子文件夹的所有文件。
用VFP的adir()也可以,代码复杂点。
2020-06-13 11:37
王咸美
Rank: 1
等 级:新手上路
帖 子:658
专家分:3
注 册:2018-1-4
收藏
得分:0 
不全是自己创建的文件,望赐教!
2020-06-13 11:48
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用王咸美在2020-6-13 11:48:05的发言:

不全是自己创建的文件,望赐教!

那就用备注型
2020-06-13 12:00
瓜瓜1990
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:125
专家分:699
注 册:2020-2-25
收藏(1)
得分:18 
递归调用adir()
程序代码:
SET SAFETY OFF 
CREATE TABLE temp (文件名  m,文件类型 c(6),完整路径 m)
DECLARE aReturnDirectory(1) &&建立返回目录数组
nCount=FindDirectory(@aReturnDirectory,"D:\")
BROWSE

FUNCTION  FindDirectory
lPARAMETERS taDireArray,tcPath,lnReCurLevel &&接收数组名、路径名、递归层数(函数内部用)参数
LOCAL laSub[1],i,lnSubDirCount,lnLen
IF PARAMETERS()<3 &&第一次调用该程序时不会传递 lnReCurLevel 参数
    lnReCurLevel=0
ENDIF
IF RIGHT(tcPath,1)# "\"
    tcPath=tcPath+"\"
ENDIF
IF lnReCurLevel=0
    DECLARE taFileArray[1] &&存放文件数组
    DECLARE taDireArray[1] &&存放目录数组
    If DIRECTORY(tcPath) &&只需在第 0 层检查目录是否存在
        taDireArray[1]=tcPath
    ELSE
    RETURN 0
    ENDIF
ELSE
    DECLARE taDireArray[ALEN(taDireArray)+1]
    taDireArray[ALEN(taDireArray)]=tcPath
ENDIF
lnSubDirCount=ADIR(laSub,tcPath+"*.*","DHS")
FOR i=1 TO lnSubDirCount
IF "D" $ laSub[i,5] AND ! laSub[i,1]=="." AND ! laSub[i,1]==".."
    *!* 递归调用 FindDirectory()函数
    FindDirectory(@taDireArray,tcPath+laSub[i,1],lnReCurLevel+1)
ELSE
    IF ! laSub[i,1]=="." AND ! laSub[i,1]==".."
        DECLARE taFileArray[ALEN(taFileArray)+1]
        taFileArray[ALEN(taFileArray)]=tcPath+laSub[i,1]
        INSERT INTO temp (文件名,文件类型,完整路径) VALUES (juststem(tcPath+laSub[i,1]),justext(tcPath+laSub[i,1]),justpath(tcPath+laSub[i,1]))
    ENDIF
ENDIF
ENDFOR
RETURN ALEN(taFileArray)
收到的鲜花

piu~piu~
2020-06-13 17:45
王咸美
Rank: 1
等 级:新手上路
帖 子:658
专家分:3
注 册:2018-1-4
收藏
得分:0 
回复 7楼 瓜瓜1990
非常感谢!!!
2020-06-13 19:19
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1712
专家分:3318
注 册:2012-2-29
收藏
得分:0 
谢谢,学习啦!
2020-06-14 07:15
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
以下是引用瓜瓜1990在2020-6-13 17:45:26的发言:

递归调用adir()
SET SAFETY OFF
CREATE TABLE temp (文件名  m,文件类型 c(6),完整路径 m)
DECLARE aReturnDirectory(1) &&建立返回目录数组
nCount=FindDirectory(@aReturnDirectory,"D:\")
BROWSE

FUNCTION  FindDirectory
lPARAMETERS taDireArray,tcPath,lnReCurLevel &&接收数组名、路径名、递归层数(函数内部用)参数
LOCAL laSub[1],i,lnSubDirCount,lnLen
IF PARAMETERS()<3 &&第一次调用该程序时不会传递 lnReCurLevel 参数
    lnReCurLevel=0
ENDIF
IF RIGHT(tcPath,1)# "\"
    tcPath=tcPath+"\"
ENDIF
IF lnReCurLevel=0
    DECLARE taFileArray[1] &&存放文件数组
    DECLARE taDireArray[1] &&存放目录数组
    If DIRECTORY(tcPath) &&只需在第 0 层检查目录是否存在
        taDireArray[1]=tcPath
    ELSE
    RETURN 0
    ENDIF
ELSE
    DECLARE taDireArray[ALEN(taDireArray)+1]
    taDireArray[ALEN(taDireArray)]=tcPath
ENDIF
lnSubDirCount=ADIR(laSub,tcPath+"*.*","DHS")
FOR i=1 TO lnSubDirCount
IF "D" $ laSub[i,5] AND ! laSub[i,1]=="." AND ! laSub[i,1]==".."
    *!* 递归调用 FindDirectory()函数
    FindDirectory(@taDireArray,tcPath+laSub[i,1],lnReCurLevel+1)
ELSE
    IF ! laSub[i,1]=="." AND ! laSub[i,1]==".."
        DECLARE taFileArray[ALEN(taFileArray)+1]
        taFileArray[ALEN(taFileArray)]=tcPath+laSub[i,1]
        INSERT INTO temp (文件名,文件类型,完整路径) VALUES (juststem(tcPath+laSub[i,1]),justext(tcPath+laSub[i,1]),justpath(tcPath+laSub[i,1]))
    ENDIF
ENDIF
ENDFOR
RETURN ALEN(taFileArray)

我测试,到中途提示这一句,下标引用无效
2020-06-14 13:32
快速回复:如何将D盘下所有文件按要求写入表文件中(文件列表)
数据加载中...
 
   



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

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