无法访问/修改文件夹,即使它显示在目录列表中

无法访问/修改文件夹,即使它显示在目录列表中

我有一个名为 SWAT 的文件夹无法访问或重命名,可能是因为句号。它出现在资源管理器中,但在尝试打开它时会产生错误。

位置不可用

D:\StockPics\SWAT 不可用。如果该位置位于此电脑上,请确保设备或驱动器已连接或光盘已插入,然后重试。如果该位置位于网络上,请确保您已连接到网络或 Internet,然后重试。如果仍然找不到该位置,则它可能已被移动或删除。

图片:

尝试重命名文件夹会产生与更改文件扩展名时相同的警告。继续重命名时,Windows 找不到该文件。

找不到此商品

此文件不再位于 D:\StockPics。请验证项目的位置,然后重试。

图片:

图片:

Powershell 遇到类似错误。文件夹出现在dir列表中,但尝试重命名时找不到它。

PS D:\StockPics> dir
 
    Directory: D:\StockPics
 
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       27/04/2020     15:45                S.W.A.T.
 
PS D:\StockPics> Rename-Item 'S.W.A.T.' 'SWAT'
 
Rename-Item : Cannot rename because item at 'S.W.A.T.' does not exist.
At line:1 char:1
+ Rename-Item 'S.W.A.T.' 'SWAT'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

图片:

答案1

事实证明,Windows API 无法(通常)处理项目名称中的尾随点或空格。当使用该 API 的实用程序(如 Powershell 或 Explorer)负责创建名称时,会自动删除非法尾随字符。

但此限制并不适用于第三方软件,因为第三方软件可以自由创建 Windows 认为无效的名称。一旦创建,任何 Windows 实用程序都将无法对这些项目执行操作。

有两种解决方法:

  1. 使用外部工具。例如,7zip 有一个文件浏览器,能够对具有无效名称的项目执行操作。

  2. 使用 Windows 的扩展长度路径模式。通过在绝对路径前添加\\?\,Windows API 支持带有尾随点或空格的项目等。如果将原始问题中的 Powershell 命令重写为:

PS D:\StockPics> Rename-Item '\\?\D:\StockPics\S.W.A.T.' 'SWAT'

相关内容