我有一个非常奇怪的问题,我希望其他人可能知道。
我有一个包含以下代码的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模板格式?
答案 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