gpt4 book ai didi

vba - Excel vba 仅杀死指定的扩展名

转载 作者:行者123 更新时间:2023-12-02 09:17:53 25 4
gpt4 key购买 nike

我试图杀死所有扩展名为xls的文件

Sub testt()
downloadF = Environ("USERPROFILE") & "\Downloads\*.xls"

Kill downloadF

End Sub

但它也会杀死文件.xlsx.xlsm以及带有.xls*的所有内容

为什么?

如何仅杀死*.xls

最佳答案

我有一个关于为什么会发生这种情况的理论,但我还没有完全证明它......同时我发现另一种仅删除预期文件的方法是引用文件的“短” “(8.3)名称:

例如,当我第一次检查我的 (NTFS) 驱动器时,使用 /X切换为Dir在命令提示符处:

      t.xlsx has a short name of TF99B~1.XLS

dir

...以及 Dir /x :

dir /x

...并以编程方式:

Option Explicit

Private Declare Function GetShortPathNameA Lib "kernel32" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Public Function ShortPath(ByVal fName As String) As String
Dim fNum As Integer, strBuffer As String * 255
fNum = FreeFile
If Dir(fName) = "" Then
On Error Resume Next 'Create file if it doesn't exist
Open fName For Output As #fNum
Close #fNum
End If
ShortPath = Left$(strBuffer, GetShortPathNameA(fName, strBuffer, 255))
End Function

@Pᴇʜ指出,如果您从文件中删除这些内容,例如。与:

fsutil 8dot3name strip c:\temp\test   

...Kill命令按预期工作(并且杀死 xlsx )。

fsutil 8dot3name strip :删除 8dot3位于指定 DirectoryPath 中的所有文件的文件名8dot3对于 DirectoryPath 的任何文件,文件名都不会被删除。 与文件名组合包含超过 260 个字符

此命令列出但不修改指向具有 8dot3 的文件的注册表项。文件名永久删除

有关从文件中永久删除 8dot3 文件名的影响的详细信息,请参阅 Remarks .

<小时/>

...并通过命令行,一次针对整个文件夹或卷:

To query for the disable 8dot3 name behavior for a disk volume that is for a specific volume, use:

fsutil 8dot3name query Volume{xyz-VolumeGUID-xyz}

You can also query the 8dot3 name behavior by using the behavior subcommand.

To remove 8dot3 file names in the D:\MyData directory and all subdirectories, while writing the information to the log file that is specified as mylogfile.log, type:

fsutil 8dot3name scan /l mylogfile.log /s d:\MyData

更多信息:

<小时/>

命名空间

'来源:Naming Files, Paths, and Namespaces (微软)

All file systems follow the same general naming conventions for an individual file: a base file name and an optional extension, separated by a period. However, each file system, such as NTFS, CDFS, exFAT, UDFS, FAT, and FAT32, can have specific and differing rules about the formation of the individual components in the path to a directory or file.

. . .

Character count limitations can also be different and can vary depending on the file system and path name prefix format used. This is further complicated by support for backward compatibility mechanisms. For example, the older MS-DOS FAT file system supports a maximum of 8 characters for the base file name and 3 characters for the extension, for a total of 12 characters including the dot separator. This is commonly known as an 8.3 file name. The Windows FAT and NTFS file systems are not limited to 8.3 file names, because they have long file name support, but they still support the 8.3 version of long file names.

<小时/>

\\?\

Win32 文件命名空间

对于文件 I/O,\\?\路径字符串的前缀告诉 Windows API 禁用所有字符串解析并将其后面的字符串直接发送到文件系统。例如,如果文件系统支持大路径和文件名,则可以超过 MAX_PATH由 Windows API 强制执行的限制。有关正常最大路径限制的更多信息,请参阅“最大路径长度限制”部分。

因为它关闭路径字符串的自动扩展\\?\前缀还允许使用 ...在路径名中,如果您尝试使用这些保留的相对路径说明符作为完全限定路径的一部分对文件执行操作,这会很有用。

许多但并非所有文件 I/O API 支持 \\?\ ;您应该查看每个 API 的引用主题以确定。

<小时/>

\\.\

Win32 设备命名空间

\\.\前缀将访问 Win32 设备命名空间,而不是 Win32 文件命名空间。如果 API 支持这种类型的访问,这就是直接完成对物理磁盘和卷的访问的方式,无需通过文件系统。您可以通过这种方式访问​​磁盘以外的许多设备(例如,使用 CreateFileDefineDosDevice 函数)。

<小时/>

NT 命名空间

还有一些 API 允许使用 NT 命名空间约定,但 Windows 对象管理器 在大多数情况下不需要这样做。为了说明这一点,使用 Windows Sysinternals 在系统对象浏览器中浏览 Windows 命名空间非常有用。 WinObj工具。当您运行此工具时,您看到的是从根开始的 NT 命名空间,即\。 。子文件夹名为Global??是 Win32 命名空间所在的位置。

<小时/>

FAT Naming Convention

Source: Overview of FAT, HPFS, and NTFS File Systems (Microsoft)

FAT uses the traditional 8.3 file naming convention and all filenames must be created with the ASCII character set. The name of a file or directory can be up to eight characters long, then a period . separator, and up to a three character extension. The name must start with either a letter or number and can contain any characters except for the following:

. " / \ [ ] : ; | = ,

If any of these characters are used, unexpected results may occur. The name cannot contain any spaces.


NTFS Naming Conventions

File and directory names can be up to 255 characters long, including any extensions. Names preserve case, but are not case sensitive. NTFS makes no distinction of filenames based on case. Names can contain any characters except for the following:

? " / \ < > * | :

Currently, from the command line, you can only create file names of up to 253 characters.

NOTE: Underlying hardware limitations may impose additional partition size limitations in any file system. Particularly, a boot partition can be only 7.8 GB in size, and there is a 2-terabyte limitation in the partition table.

<小时/>

更多信息

关于vba - Excel vba 仅杀死指定的扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com