标题:判别文件是否存在,出现问题,请高手帮忙。tks!
只看楼主
jjoojj
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2014-8-12
结帖率:16.67%
已结贴  问题点数:10 回复次数:8 
判别文件是否存在,出现问题,请高手帮忙。tks!
如果文件存在:FILE(xyz)这个命令的结果是'F',如果文件不存在,则会跳出出错框,为什么。



    ABC='D:\wj\'+A
    xyz='D:\新建文件夹\'+ALLTRIM(b)+'*.xls'
    IF FILE(xyz)
        COPY file &xyz to &ABC   
    ENDIF
搜索更多相关主题的帖子: 新建文件夹 file 
2015-08-06 11:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
注意其中的“*”
2015-08-06 11:44
jjoojj
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2014-8-12
得分:0 
因为文件名有144413-4。xls,或144413。xls。。。,能有其他方法可以解决吗
2015-08-06 11:52
jjoojj
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2014-8-12
得分:0 
换个说法:
如果在'D:\新建文件夹\‘这个文件夹中有‘MChart’开头的文件名,返回’t',否则返回‘f',这样有办法实现吗
2015-08-06 12:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用jjoojj在2015-8-6 11:52:16的发言:

因为文件名有144413-4。xls,或144413。xls。。。,能有其他方法可以解决吗

可以配合ADIR()一起使用,或者用RUN调用Windows命令copy 或 xcopy
2015-08-06 14:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:4 
以下是引用jjoojj在2015-8-6 11:34:46的发言:

如果文件存在:FILE(xyz)这个命令的结果是'F',如果文件不存在,则会跳出出错框,为什么。



    ABC='D:\wj\'+A
    xyz='D:\新建文件夹\'+ALLTRIM(b)+'*.xls'
    IF FILE(xyz)
        COPY file &xyz to &ABC   
    ENDIF

直接执行copy行,其余的不需要,文件不存在只是copy无动作,无需自己判断。另外,把两个宏分别用双引号括起来,这是我在本坛教过多次的。

授人以渔,不授人以鱼。
2015-08-06 14:26
jjoojj
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2014-8-12
得分:0 
回复 5楼 吹水佬
copy没有问题,但判别命令无法实现,是否有其他方法可以实现4楼的结果
2015-08-06 14:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用jjoojj在2015-8-6 14:26:42的发言:

copy没有问题,但判别命令无法实现,是否有其他方法可以实现4楼的结果

个人感觉比较喜欢用ADIR()来处理磁盘文件,甚至用它写类似GETDIR()、GETFILE()功能的模块,用起来比较随心得意。
用ADIR()来处理COPY FILE肯定没问题,甚至可以包含所有子文件夹的文件。

[ 本帖最后由 吹水佬 于 2015-8-6 15:11 编辑 ]
2015-08-06 15:10
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:4 
以下是引用jjoojj在2015-8-6 14:26:42的发言:

copy没有问题,但判别命令无法实现,是否有其他方法可以实现4楼的结果
5楼不是教你用“ADIR()”函数了吗?FILE()函数不支持文件名框架功能,而ADIR()函数是支持的。

具体实现方法:

文件数量=ADIR(MChartFiles,"D:\新建文件夹\MChart*.*")
IF 文件数量>0 THEN &&如果有需要的文件
   ... ...
ELSE &&若无需要的文件
   ... ...
ENDIF

如果有文件,那么MChartFiles数组的第一列就是文件名。比如,有两个文件,那么MChartFiles[1,1]和MChartFiles[2,1]分别是第一个文件、第二个文件的文件名(含扩展名)。
这个回答解决你4楼的问题了吗?
2015-08-06 16:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-456148-1-1.html




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

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