注册 登录
编程论坛 VFP论坛

关联文件如何能归集在一起,并删除无关的文件,大家有无好的方法

zhken 发布于 2022-04-30 17:54, 2568 次点击
我的一个VFP开发目录,刚开始由于没有养成好的习惯,经过近20年时间,积攒了大量无关文件,比如编辑一个重要表单时,会将这个表单另存为副本或其它文件名,或者这个表单过一段时间没用了,一改名,这个表单就留在那里不动了,还有大量的TEMP文件(当然,temp bak 文件都可以一键删除),还有临时为了达到某种功能临时做的FORM文档,txt,JPG,prg,dbf等等,我们连编时,系统会自动查找有关文件,那么问题是,我这个目录下有近3千多个文档,显然非常臃肿杂乱。主文件是 main.prg ,如何才能将所有与main.prg(像连编一样)有关联的文件提取放在另一个目录。大家有什么好的经验分享?把无关的文件删了,如果是逐一打开查找,显然是不可能,将SCX文件导入自由表分析好像也不容易,耗时。
12 回复
#2
sdta2022-04-30 18:33
根据文件的类型分类保存
#3
ljlhpop2022-04-30 18:47
骨灰级高手..20年了........居然还是一个目录.
#4
sych2022-04-30 19:00
编译成exe,然后再反编译
#5
fyyylyl2022-04-30 20:20
同意4楼意见。另外还可以先将除项目文件及maⅰn.prg外的其他文件移到另外一个文件夹然后连编,根椐提示找不到的文件逐个移回;或全部忽略后查看项目.err文件。
#6
laowan0012022-04-30 20:20
按修改日期排序,时间久远的肯定没用(仅限表单、程序等自己写的),这样可以找到不少没用的
建议删除前先做备份,以免误伤
#7
zhken2022-04-30 22:23
久没更新的文件曰期是不会变的,几年前的peg,frx报表至今在用,曰期这块行不通,一删就出错
#8
xuminxz2022-05-01 07:50
比较简单的是编译反编译。也可以用以下方法。
进入VFP用
SELECT DISTINCT  name wjm FROM  项目文件名.pjx WHERE !EMPTY(id) INTO CURSOR mpmp
以你的能力应该能生成相应的备注文件列表。copy file 复制它们与项目文件到新文件夹下。打开复制后的项目文件并连编,在错误中会提示缺少的文件(可能有些文件未加入项目文件,在原文件夹下可正常运行)。
如果不想编程,可以将MPMP中的内容复制到EXCEL文件中,用类似="copy "&A2&" bak"生成一列DOS命令,粘贴到一个BAT文件中,运行复制文件,连编项目文件,再复制错误中提示的文件。
#9
cssnet2022-05-01 08:35
楼主啊,听说,VFP的项目文件是一个带备注文件的dbf。
正如楼上所说,你写一段代码,scan...endscan一下这个dbf,项目包含的所有文件就拷贝出来啦:

* 先手动新建一个空白新目录
MD D:\NewDir
lcNewDir = "D:\NewDir\"
use 你的项目.pjx
pack
scan
    * 印象中有个filename之类的字段,请自己确认一下
    * lcFilename = filename (?)
    * lcNewFile = lcNewDir + juststem(lcFilename)  &&具体函数名记不太清啦,请搜帮助文件确认一下。
    * copy file (lcFilename) to (lcNewFile)
    * 若带备注文件的sct、vct之类,也一并复制过去
endscan

莫说3千个文件,3万个也是小case,亲。


[此贴子已经被作者于2022-5-1 09:06编辑过]

#10
zhken2022-05-01 09:37
五一劳动节快乐。感谢大家。
其实对项目 SCAN 达不到目的,是因为有时侯编辑的FORM 文件并没有添加到项目上,有时侯添加到项目上的文件过一段时间就不用了,就会一直留在项目上,成了重复或没用的文件,对没用的文件SCAN结果也没用。估计一直盯着项目,没用的就删,有用的就添加,也许没这样的习惯。
反编译是一个方法。
还有一个想法就是如何对一个 Main.prg 的主文件,如何顺藤摸瓜. 先找出相关的 DBF,FORM,PRG 等需要的文件,再接着分析每个文件包含需要的文件,依次类推... ....这样比较精准,但是文件量大时,是如何艰难。有没有类似 搜目录文件的方法,得出一个包含文件列表的TXT.
#11
cssnet2022-05-01 10:23
以下是引用zhken在2022-5-1 09:37:08的发言:

反编译是一个方法。


其实,反编译本质上就是scan项目最近一次的pjx文件,然后拷贝出最近一次包含编译至exe内的全部文件。
#12
zhken2022-05-01 11:38
说起来都不好意思,我的编译这些年一直没通过,编译到一定程度时或是这个或是那个文件一直在转圈,一直停在那里也没提示,都卡壳了。打开卡壳的文件,发现也没问题,原因可能是,文件关联大多,也可能一开始是用VFP6.0 经历了win95 XP win7 win10 期间又转为VFP9.0。重新上项目,时间代价太大。所以才有根据 主文件 逐级找文件的想法。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#13
csyx2022-05-01 23:54
For each oFile in _vfp.ActiveProject.Files
    ? oFile.Exclude, oFile.Name, oFile.LastModified
EndFor
1