VB6 Dir(“*。dot”)在一台服务器上查找.dotx而不是另一台服务器

时间:2016-04-13 12:11:23

标签: windows vb6 glob

我有一个非常奇怪的问题,我希望其他人可能知道。

我有一个包含以下代码的VB6

Dim filename As String: filename = Dir("c:\somepath\*.dot")

Do Until filename = ""
    ...add filename to listbox

    filename = Dir()
loop

当我在一台Windows Server 2012 R2上运行完全相同的程序(称为服务器A)时,Dir()将仅返回以.dot结尾的文件。

在其他Windows Server 2012 R2(服务器B)上, Dir()将另外返回以.dotx结尾的文件

两台服务器都有Microsoft Office 2013 Standard Edition。两个服务器在文件资源管理器中具有相同的AFAICS设置。

服务器区域设置是英语 服务器B语言环境是丹麦语

是否有任何注册表设置,可以使文件通配行为像这样?我正在考虑将DOTX作为新的Office模板格式?

2 个答案:

答案 0 :(得分:3)

如果在未列出.docx文件的计算机的文件系统上禁用了8.3文件名的创建,则会看到您所看到的内容。

您可以通过反转说明here使用fsutil重新启用此功能。

答案 1 :(得分:1)

我遇到了类似的问题。由于无法控制我运行应用程序的每台计算机上的设置,因此在我的代码中处理它更容易。我使用FileSystemObject迭代文件夹中的文件,并将文件的扩展名与我想要过滤的扩展名进行比较。使用Dir()过滤更可靠。

Public Sub ShowFileList(folderToSearch As String, extensionToFind As String)
    Dim oFileSystemObject As New FileSystemObject
    Dim oFiles As Files
    Dim oFile As File
    Dim fileName As String
    Dim fileExtension As String

    Set oFiles = oFileSystemObject.GetFolder(folderToSearch).Files

    For Each oFile In oFiles
        fileName = oFile.Name
        fileExtension = oFileSystemObject.GetExtensionName(fileName)

        If StrComp(fileExtension, extensionToFind, vbTextCompare) = 0 Then
            Debug.Print fileName
        End If
    Next oFile

    Set oFile = Nothing
    Set oFiles = Nothing
    Set oFileSystemObject = Nothing
End Sub

Private Sub Command1_Click()
    ShowFileList "C:\MyFolder", "dot"
End Sub