将T:/newprg 程序自动copy到 J: & S: (2008/08/05)
用 vc# 完成第一个项目: “将T:/newprg 程序自动copy到 J: & S:” ,具体说明如下:
可以通过程序 SDB_DAILY_CHECK(日常信息稽核)之 “MIS FILE”来查看文件的更新纪录(对应表: AD_FRM_UPD_LIST)
通过按钮” Order by FileName”/” Order by Modi Date”,可以按文件名或文件修改时间来查找”导入时间”在5天之内的程序清单
注:”导入时间”是指 Vc# 处理 t:/newprg 目录下文件的时间,非 Mis 文件修改时间
通过按钮” Error File”, 可以查找 do flag 为null 的程序清单,do flag 为null说明 Mis 文件不符合 copy 到 J: 的要求
标志位说明:
Imp flag标志位: T:/newprg下源程序与可执行程序的最后修改时间点差异
0:有差异,时间点差异大于一分钟;或文件扩展名不为 fmb/fmx/mmb/mmx/pll/rdf ;或有源程序却没有可执行程序
1:无差异的可执行程序, 如:fmx / mmx
2:无差异的源程序,如:fmb / mmb
3:源程序与可执行程序是同一支的, 如:rdf / pll
Do flag标志位: 新文件与旧文件的比较标志
null:未处理
1:原来没有该文件,这次是第一次需 Copy 到 J: 下
2:原来有该文件,这次是第一次更新
3:原来有该文件,这次是第N次更新
4: S: 下原来有该文件,且时间点与 t:/newprg下一致,属于重复更新
Vc# 处理的算法:
将 T:/newprg下所有文件的清单列表写到表:AD_FRM_UPD_LIST。内容包括:文件名、扩展名、路径、文件最后修改时间、导入时间、导入用户;其中 导入时间为操作时间、导入用户为xiaohong fang、Imp flag 为0、do flag 为 null
调用 Oracle 后台过程 AD_P_CHK_UPD 来更新 imp flag,imp flag 的更新规则同 Imp flag标志位说明
对 imp flag 为 2 或 3 的执行如下处理:
1. 根据文件名,定位要查找的 s:/ 的子目录
a) 文件名以 xin、in 打头,子目录为 ghin
b) 文件名以 em 打头,子目录为 ems
c) 文件名以 L4 打头,子目录为 wo
d) 其余对应子目录为文件名前两位
2. 在该子目录下是否已有该文件
a) 若无,则为新文件,更新 do flag 为1
b) 若有,则为旧文件,比较该旧文件最后修改时间与 t:/newprg 的修改时间是否一致
i. 若是,则更新 do flag为4,属于重复更新
ii. 若不是,判断该目录下是否已有以该文件命名的文件夹
A. 若无,则为第一次更新,更新 do flag 为2,并创建该文件命名的文件夹
B. 若有,则为第N次更新,更新 do flag 为3,取旧文件的最后修改时间来建立文件夹
3. 从 t:/newprg 下 copy 该文件的源程序及可执行程序到 s:/ 对应子目录中
4. 从 t:/newprg 下 copy 该文件的源程序及可执行程序到 s:/Pack2008子目录
5. 从 t:/newprg 下 copy 该文件的可执行程序到 J:/
6. 删除 t:/newprg 下 copy 该文件的源程序及可执行程序
7. 更新表AD_P_CHK_UPD的 do flag 标志
后续事项:
VC# 程序还没编译成脱离 vc# 环境的 exe 文件
还在考虑如何将VC# 程序做成 Server Service 的方式在 Server 上自动运行,目前还要手工执行
本文介绍了一个使用VC#编写的程序,该程序能够自动将指定目录下的文件复制到目标位置,并记录文件更新情况。文章详细描述了程序的工作流程、标志位定义以及后续改进计划。
&spm=1001.2101.3001.5002&articleId=2801425&d=1&t=3&u=2d2a4190a1cf40d3bebbb341d2965bc8)
4063

被折叠的 条评论
为什么被折叠?



