【问题标题】:How to check whether a input string is a File name or Folder name using Vbscript如何使用 Vbscript 检查输入字符串是文件名还是文件夹名
【发布时间】:2015-01-18 12:43:08
【问题描述】:

我的目标是使用 Vb 脚本查找给定的输入是 s 文件名还是文件夹名。

例如,如果用户给出“D:\Temp\testfile.docx”,那么它应该导航到文件相关功能, 同样,如果用户给出“D:\Temp\”,那么它应该导航到文件夹相关功能。

如果没有直接的解决方案,是否有任何解决方法可以做到这一点?

【问题讨论】:

    标签: string file input vbscript directory


    【解决方案1】:

    检查用户输入是否引用了现有文件 (.FileExists) 或文件夹 (.FolderExists):

    If FolderExists(userinp) Then 
       folderaction
    Else
       If FileExists(userinp) Then
          fileaction
       Else
          handle bad user input
       End If
    End If
    

    如果这不符合您的需要,请始终附加“\”让用户识别文件夹并检查Right(userinp, 1)。

    【讨论】:

    • 这需要修改。没有全局FolderExists 函数。你总是需要一个Scripting.FileSystemObject 实例。
    • 代码是伪代码,可以从“处理错误的用户输入”中看出。我确实链接到了所用函数的文档。
    【解决方案2】:

    我创建了这个简单的函数来满足你的需要:

    'Return 1 if the provided path is a folder, 2 if it's a file, and -1 if it's neither.
    Function GetTypeOfPath(strToTest)
        Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
    
        If(objFSO.FolderExists(strToTest)) Then
            GetTypeOfPath = 1
        ElseIf(objFSO.FileExists(strToTest)) Then
            GetTypeOfPath = 2
        Else 'neither
            GetTypeOfPath = -1
        End If
    End Function
    

    您可以通过创建一个文件“c:\test”并运行`MsgBox(GetTypeOfPath("c:\test"))"来测试它;它会返回2。然后删除该文件,创建一个文件夹“c: \test" 并运行相同的东西;它会返回 1。然后删除它并第三次运行它;它会返回 -1。

    【讨论】:

    • 请编辑代码或描述 wrt GetTypeOfPath = -1
    • @Ekkehard.Horner -- 详细说明。我认为描述很好。
    • 请编辑代码或描述wrt“第三次;它将返回0。”你在拉我的腿吗?
    • @Ekkehard.Horner -- 抱歉,我不知道您指的是什么。我现在修好了。
    猜你喜欢
    • 2018-02-01
    • 2016-02-24
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2018-05-23
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多