Windows 文件系统错误

Windows 文件系统错误

我认为我发现了文件系统中的一个错误,而 Windows 似乎没有报告错误的地方,所以我会在这里发布它,以防有人能启发我。首先你应该注意,Windows 文件资源管理器不允许文件以.(点)结尾。

  1. 创建一个随机文件,比如a.txt
  2. 使用 cmd 实用程序 ren 重命名文件,你可以这样做ren "a.txt" "a.txt../"

现在你有一个无法访问的文件a.txt..

我还使用 MoveFile API 函数以编程方式重现了它https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefile

答案1

这不是一个错误(尽管似乎有很多文章怀疑这是否是一个错误)。

请查看当前的 Microsoft 文档:

https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file

本文内容来自 2020 年(因此相当新)

文章中的相关引述。

不要以空格或句点结尾文件或目录名称。虽然底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。不过,将句点指定为名称的第一个字符是可以接受的。例如,“.temp”

以两个点(..)结尾的文件仅仅是文件名里面的一个点(允许的),然后以一个点(.)结尾,这是不允许的。

我本人当然会遵守这些规范以避免出现问题。

如果您使用不允许的方法/字符创建文件,通常可以使用 Unlocker 1.92 (Metageek) 删除这些文件。当我有不需要的顽固文件时,我会使用 Unlocker。

答案2

如果这不是一个错误,我该如何删除这个文件?DeleteFile API 不起作用,del 不起作用

无法在 Windows GUI 中访问,但可以在创建文件时使用的同一界面中删除文件,请使用提示符/命令行:

  • del name.ext../命令不起作用,尝试使用文件删除*.* /P
>ren "a.txt" "Bug.txt../"
>del  *.* /p

F:\2020-SU\Q1594381\bug.txt.., Delete (Y/N)? Y

对于删除此文件,此选项也有效:

del bug.txt..?
del bug.txt^.^.?
del "\\?\%cd%\bug.txt..?"
del \\?\%cd%\bug.txt^.^.?

您可以撤消此操作:

ren  \\?\%cd%\bug.txt^.^.? a.txt

列出文件内容..

type \\?\%cd%\bug.txt^.^.?


F:\2020-SU\Q1594189>del /?
Deletes one or more files.

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         Specifies a list of one or more files or directories.
                Wildcards may be used to delete multiple files. If a
                directory is specified, all files within the directory
                will be deleted.

  /P            Prompts for confirmation before deleting each file.
  /F            Force deleting of read-only files.
  /S            Delete specified files from all subdirectories.
  /Q            Quiet mode, do not ask if ok to delete on global wildcard
  /A            Selects files to delete based on attributes
  attributes    R  Read-only files            S  System files
                H  Hidden files               A  Files ready for archiving
                I  Not content indexed Files  L  Reparse Points
                O  Offline files              -  Prefix meaning not

If Command Extensions are enabled DEL and ERASE change as follows:

The display semantics of the /S switch are reversed in that it shows
you only the files that are deleted, not the ones it could not find.

相关内容