Board logo

标题: [求助]FileExists方法的运行结果和预期相反(附代码) [打印本页]

作者: dopodelf     时间: 2009-1-16 14:04    标题: [求助]FileExists方法的运行结果和预期相反(附代码)
On Error Resume Next filespec="d:\sources.list" Set myFso=CreateObject("Scripting.FileSystemObject") If (getfso=myFso.FileExists(filespec)) Then wscript.echo getfso Else wscript.echo "文件或文件夹不存在" End If Set fso=Nothing 源程序如上,文件sources.list实实在在地在D盘根目录下存在,但是运行结果却是"文件或文件夹不存在",而如果我把两句echo语句换一下位置,输出结果是空白。 不知道问题究竟出在哪里,请大家帮忙分析一下问题所在,谢谢!

作者: radem     时间: 2009-1-16 14:15
Set myfso=Nothing吧

作者: slore     时间: 2009-1-16 14:16
getfso 初始化为0即为假 myFso.FileExists(filespec)) 文件存在所以为真 假=真?不成立……进入else

作者: radem     时间: 2009-1-16 14:32
On Error Resume Next filespec="d:\sources.list" Set myFso=CreateObject("Scripting.FileSystemObject") If myFso.FileExists(filespec)=True Then wscript.echo filespec & " 存在" Else wscript.echo "文件或文件夹不存在" End If Set myFso=Nothing

作者: dopodelf     时间: 2009-1-16 14:32
非常感谢slore,我一直以为getfso=myFso.FileExists(filespec)这样写是赋值,原来在if后面就变成判断了。那我如果要在这里赋值该怎么写呢?

作者: dopodelf     时间: 2009-1-16 14:36
谢谢radem的修改指正!!

作者: radem     时间: 2009-1-16 15:24
4楼不行么?已经赋值给filespec了还给getfso就没必要了吧 确实要的话,改为:
On Error Resume Next
filespec="G:\2\IpConv\ip.txt"
Set myFso=CreateObject("Scripting.FileSystemObject")
getfso=filespec
If myFso.FileExists(getfso)=True Then
wscript.echo getfso & " 存在"
Else
wscript.echo "文件或文件夹不存在"
End If
Set myfso=Nothing

作者: zydmz     时间: 2009-1-16 19:52
On Error Resume Next filespec="d:\sources.list" Set myFso=CreateObject("Scripting.FileSystemObject") If myFso.FileExists(filespec) Then wscript.echo "文件存在" Else wscript.echo "文件不存在" End If Set fso=Nothing

作者: mountvol     时间: 2009-1-17 10:24
还是习惯用Err:
On Error Resume Next
filespec = "d:\sources.list"
Set myFSO = CreateObject("Scripting.FileSystemObject")
    Err.Clear
Set myFile = myFSO.OpenTextFile(filespec,1)
    If Err Then
        WScript.Echo Err.Description 
        Err.Clear 
    Else
    	WScript.Echo "OK!"
    End If