精易论坛

标题: 文件复制_重命名、文件移动_重命名(不覆盖目标文件并保留两个文件) [打印本页]

作者: 墨影0620    时间: 2019-12-26 11:07
标题: 文件复制_重命名、文件移动_重命名(不覆盖目标文件并保留两个文件)
本帖最后由 墨影0620 于 2019-12-26 15:04 编辑

  
子程序名返回值类型公开备 注
文件_移动_重命名文本型 移动指定文件到指定的文件位置,若名称重复则重命名。执行成功返回移动后的文件名,否则返回空文本。
参数名类 型参考可空数组备 注
欲移动的文件名文本型欲移动的文件名
移动到的文件名文本型移动到的文件名
变量名类 型静态数组备 注
移动目标文本型 
左边文本型 
右边文本型 
序号整数型 
如果真 (文件是否存在 (欲移动的文件名))
返回 (“”)
移动目标 = 移动到的文件名
左边 = 文本_取左边 (移动到的文件名, “.”, -1)
右边 = 文本_取右边 (移动到的文件名, “.”)
判断循环首 (文件是否存在 (移动目标))
移动目标 = 取文本 (“%d (%d).%d”, 左边, 自加 (序号), 右边)
判断循环尾 ()
如果 (MoveFileA (欲移动的文件名, 移动目标))
返回 (移动目标)
返回 (“”)

子程序名返回值类型公开备 注
文件_复制_重命名文本型 复制指定文件到指定的文件位置,若名称重复则重命名。执行成功返回复制后的文件名,否则返回空文本。
参数名类 型参考可空数组备 注
被复制文件名文本型被复制文件名
复制到文件名文本型复制到文件名
是否覆盖整数型可空。默认为直接覆盖。0=覆盖,非0不覆盖
变量名类 型静态数组备 注
移动目标文本型 
左边文本型 
右边文本型 
序号整数型 
如果真 (文件是否存在 (被复制文件名))
返回 (“”)
移动目标 = 复制到文件名
左边 = 文本_取左边 (复制到文件名, “.”, -1)
右边 = 文本_取右边 (复制到文件名, “.”)
判断循环首 (文件是否存在 (移动目标))
移动目标 = 取文本 (“%d (%d).%d”, 左边, 自加 (序号), 右边)
判断循环尾 ()
如果 (CopyFileA (被复制文件名, 移动目标, 1))
返回 (移动目标)
返回 (“”)


i支持库列表   支持库注释   
spec特殊功能支持库

下面是旧的代码,实测当套循环调用时候会导致卡死。上面是优化以后的,原理是先监测文件是否存在。不存在在进行复制、移动操作!而不是脑X一样的不停地尝试复制、移动
  
子程序名返回值类型公开备 注
文件_移动_重命名文本型 移动指定文件到指定的文件位置,若名称重复则重命名。返回移动后的文件名
参数名类 型参考可空数组备 注
欲移动的文件名文本型欲移动的文件名
移动到的文件名文本型移动到的文件名
变量名类 型静态数组备 注
移动目标文本型 
左边文本型 
右边文本型 
序号整数型 
移动目标 = 移动到的文件名
左边 = 文本_取左边 (移动到的文件名, “.”, -1)
右边 = 文本_取右边 (移动到的文件名, “.”)
判断循环首 (MoveFileA (欲移动的文件名, 移动目标))
移动目标 = 取文本 (“%d (%d).%d”, 左边, 自加 (序号), 右边)
判断循环尾 ()
返回 (移动目标)
子程序名返回值类型公开备 注
文件_复制_重命名文本型 复制指定文件到指定的文件位置,若名称重复则重命名。返回复制后的文件名
参数名类 型参考可空数组备 注
被复制文件名文本型被复制文件名
复制到文件名文本型复制到文件名
变量名类 型静态数组备 注
移动目标文本型 
左边文本型 
右边文本型 
序号整数型 
移动目标 = 复制到文件名
左边 = 文本_取左边 (复制到文件名, “.”, -1)
右边 = 文本_取右边 (复制到文件名, “.”)
判断循环首 (CopyFileA (被复制文件名, 移动目标, 1))
移动目标 = 取文本 (“%d (%d).%d”, 左边, 自加 (序号), 右边)
判断循环尾 ()
返回 (移动目标)


i支持库列表   支持库注释   
spec特殊功能支持库


调用了精易模块,上面源码中的“自加”改为“原子递增变量”即可(这就是精易模块里那个dll,我复制了一下改了个名而已)


找不到模块的吧本页面拉到最顶上找到“精易产品”,什么!你看不见?去看看眼科吧!
然后鼠标移动上去,什么你不知道鼠标是啥?不知道移动鼠标?删了易语言吧!
会展开一个列表,然后把移动到第一项“精易模块”,什么!你找不到?去看看眼科吧!
然后点击鼠标左键,什么!你不知道左键在哪?删了易语言吧!


如果还是看不懂,建议您长按主机上的电源键吧!你不适合用电脑!
什么?不知道电源键在哪?找个锤子吧你现在看的东西砸了吧!
您真的不需要它!



补充内容 (2019-12-30 14:29):
有人说文件是否存就不用添加编号了,可是文件存在并不意味着两个文件相同。我记得文件是否存在貌似只检测文件名,并不比较md5或者内容。

补充内容 (2019-12-30 14:30):
也就是说即便是文件是否存在返回真,只能说明两个文件重名。但是再我必须将文件移动到目标目录里且必须同时保留两个文件,这样肯定不行。
作者: 李泽勇2    时间: 2019-12-26 11:24
感谢分享,我已经添加进我自己的模块里了。
作者: 外星星人    时间: 2019-12-26 11:50
感谢分享,我已经添加进我自己的模块里了。
作者: 10008508    时间: 2019-12-26 13:43
感谢分享 谢谢了
作者: 墨影0620    时间: 2019-12-26 15:07
外星星人 发表于 2019-12-26 11:50
感谢分享,我已经添加进我自己的模块里了。

之前发现有一个错误,需要稍微修改下。
原来的直接尝试移动/复制来判断文件是否重复在频繁调用的情况下会卡死
应该改成先测试文件是否存在,不存在再尝试移动/复制
作者: 墨影0620    时间: 2019-12-26 15:07
李泽勇2 发表于 2019-12-26 11:24
感谢分享,我已经添加进我自己的模块里了。

之前发现有一个错误,需要稍微修改下。
原来的直接尝试移动/复制来判断文件是否重复在频繁调用的情况下会卡死
应该改成先测试文件是否存在,不存在再尝试移动/复制
作者: 李泽勇2    时间: 2019-12-26 15:13
墨影0620 发表于 2019-12-26 15:07
之前发现有一个错误,需要稍微修改下。
原来的直接尝试移动/复制来判断文件是否重复在频繁调用的情况下 ...

如果用问价是否存在,那就没有自动添加序号的必要了。
作者: 78012342    时间: 2019-12-26 15:54
感谢大佬分享,收藏学习了
作者: Black·Sky    时间: 2019-12-26 22:20
感谢大佬分享,收藏学习了
作者: 外星星人    时间: 2019-12-27 11:49
墨影0620 发表于 2019-12-26 15:07
之前发现有一个错误,需要稍微修改下。
原来的直接尝试移动/复制来判断文件是否重复在频繁调用的情况下 ...

真负责,谢谢提醒
作者: 谁的坏叔叔    时间: 2019-12-27 22:13
下载看看
作者: 墨影0620    时间: 2019-12-30 14:26
李泽勇2 发表于 2019-12-26 15:13
如果用问价是否存在,那就没有自动添加序号的必要了。

那么请教一下不自动添加序号的话,文件存在该怎么办?
要知道到你文件存在不见得是同一个文件,譬如我两个不同的txt名字完全一样,用文件是否存在。就会检测为存在,我记得文件是否存在是不会检测md5的,只是检测文件名。
作者: 墨影0620    时间: 2019-12-30 14:27
外星星人 发表于 2019-12-27 11:49
真负责,谢谢提醒

没关系,刚好看到而已
作者: 李泽勇2    时间: 2019-12-30 16:14
墨影0620 发表于 2019-12-30 14:26
那么请教一下不自动添加序号的话,文件存在该怎么办?
要知道到你文件存在不见得是同一个文件,譬如我两 ...

没事,你重新开一个帖子看看你的写法吧。
作者: 水流觞    时间: 2020-4-22 22:29

感谢大佬分享,学习运用了.但有一点移动可增加个移动文件路径参数就更完美了.
作者: 金B镶钻一炮十万    时间: 2023-2-17 17:09
水流觞 发表于 2020-4-22 22:29
感谢大佬分享,学习运用了.但有一点移动可增加个移动文件路径参数就更完美了. ...

我看了半天,也没找到被移动文件路径和目标路径在哪配置
作者: 43156060    时间: 2023-8-19 12:57
看看大神
作者: tywen    时间: 2023-10-8 12:45
没找到被移动文件路径和目标路径在哪配置
作者: 1961056000    时间: 2024-9-5 09:30
支持~~~~~~~~~~~~~~~
作者: dphpzmd    时间: 2024-9-18 16:02
支持~~~~~~~~~~~~~~~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4