如何检查文件是否不存在,并使用For循环显示一个整体响应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查文件是否不存在,并使用For循环显示一个整体响应相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个VBScript,它将根据部分号检查文件夹中是否存在文件。如果文件夹中的任何内容在字符串中有此编号,则可以继续,如果不是,则需要显示错误,表明它不在系统中。我已经得到一个代码,让我知道该文件存在,但我无法使用NOT版本。有任何想法吗?
Dim FSO, str1, fileName
str1 = "001234"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSO.GetFolder("C:\Users\GDoe\Desktop\FolderA\")
For Each objFile In objFolder.Files
fileName = objFile.Name
If InStr(fileName, str1) Then
MsgBox("Proceed")
Exit For
End If
Next
不幸的是,FileSystemObject
的FileExists
方法不支持通配符,因此这里不可能采用直截了当的方法。
您在问题中发布的代码基本上是如何检查是否存在具有VBScript和FileSystemObject
的部分名称的文件。您可以将该代码修改为检查是否存在文件,并进行一些小的更改。在循环之前定义一个变量并将其设置为False
,然后在找到匹配文件时显示一个可以访问True
的消息框集:
fileFound = False
For Each objFile In objFolder.Files
fileName = objFile.Name
If InStr(fileName, str1) Then
fileFound = True
Exit For
End If
Next
If fileFound Then
MsgBox("Proceed")
Else
MsgBox("File doesn't exist.")
End If
或者,你可以弹出并检查dir
命令的退出代码:
Function FileExists(path, namepart)
Set sh = CreateObject("WScript.Shell")
rc = sh.Run("cmd /c dir ""*" & path & "\" & namepart & "*""", 0, True)
FileExists = Not CBool(rc)
End Function
dir
如果找到匹配的文件则返回0,否则返回1。 CBool()
将整数返回码转换为布尔值(0→False
,1→True
)。然后,否定将逻辑从“如果找到则为假”更正为“如果找到则为真”。
当然你也可以命名函数FileMissing
并删除否定,这样如果找不到匹配的文件,函数会返回True
。这只是代码中哪种逻辑最有效的问题。
请注意,您需要使用cmd /c
运行命令,因为dir
是cmd.exe
内置命令,而不是可执行文件。
我实际上只是找到了回答我自己问题的方法,但如果有更好的方法我也很想知道。
Dim FSO, str1, fileName
str1 = "-001239"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSO.GetFolder("C:\Users\GDoe\Desktop\FolderA\")
For Each objFile In objFolder.Files
fileName=objFile.Name
If InStr(fileName, str1) Then
MsgBox("Proceed")
Exit For
End If
Next
If InStr(fileName, str1) = 0 Then
MsgBox("File doesn't Exist")
End If
我采取的规则是,如果在InStr
命令中找不到string2,则返回0.设置结果= 0表示我是否没有该文件。
以上是关于如何检查文件是否不存在,并使用For循环显示一个整体响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在 for 循环中创建具有整数值的 Checkbuttons?