如何检查文件是否不存在,并使用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
答案

不幸的是,FileSystemObjectFileExists方法不支持通配符,因此这里不可能采用直截了当的方法。

您在问题中发布的代码基本上是如何检查是否存在具有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运行命令,因为dircmd.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?

我如何在HTML中使用一个for循环是否正常?

在c#中使用for循环检查列表中是不是存在字符串

使用 argparse 将逗号分隔的多个整数值作为输入,并检查列表中是不是存在这些值

从带有for循环的函数返回时检查对象是不是存在

我可以将 for 循环集成到检查数组中是不是存在数字的 if 语句中吗?