无法删除包含名为 "..." 的子文件夹的 Windows 文件夹,该子文件夹包含名为 "..." 等的子文件夹



我被难住了。我有一个叫c:/data/ToDelete的文件夹。它曾经包含文件和一个名为...的子文件夹,其中包含相同的文件和一个子文件夹...,这让人恶心。

我把ToDelete文件夹的内容移到了其他地方,但子文件夹/子文件夹结构仍然存在,我无法摆脱它。

这就是它在资源管理器中的样子This PC > Data > ToDelete > ... > ... > ... > ... > etc点击上面显示的路径:C:DataToDelete

我能够重命名第一个文件夹(从c:\/data/temp/到c:\/data/ToDelete/(,但每当我试图重命名子文件夹时;此文件夹已打开";(可能是因为它只是指回它的父文件夹(。

我试过的东西(都没用(

  • 基础:Delete键,Shift Delete,拖动到回收站,发送到回收站
  • 命令提示符下删除,包括尝试.的ASCII代码以防万一
  • 我试着用7号拉链拉
  • 我做了一个chkdsk,没有错误
  • 我尝试使用Revo Uninstaller Pro(删除文件夹选项(进行删除
  • 我试着用这个在网上找到的powershell脚本重命名子文件夹,以为可以删除它们,但出现了一个错误:
Get-ChildItem -Recurse | where {$_.attributes -eq "Directory"} | Where-Object {$_.Name -match '...'} | Rename-Item -NewName { $_.Name -replace '...' , 'ToDelete' }

有趣的是,我在备份目录中也找到了这个文件夹,所以不知怎么的,整个文件夹都可以被复制(这意味着我现在必须在多个地方删除它(。

您需要做两件事才能使PowerShell处理名为...:的文件或文件夹

  • 尽可能使用-LiteralPath而不是-Path参数,以阻止PowerShell解析路径
  • \?前置到完整路径,以告知底层Windows API禁用所有字符串解析,并将其后面的字符串直接发送到文件系统

示例:

# For demonstration, create two nested sub folders literally named '...'
New-Item -ItemType Directory -Path '\?c:dataToDelete......'
# Rename all '...' sub folders to 'ToDelete'
Get-ChildItem -LiteralPath '\?c:dataToDelete' -Directory -Recurse -Filter '...' | 
Sort-Object { $_.Fullname.Length } -Desc | 
Rename-Item -NewName ToDelete
  • 在重命名文件夹之前,我们必须按路径长度(降序(排序,以确保首先重命名嵌套最深的文件夹。否则,Get-ChildItem枚举的路径在重命名第一个文件夹后将不正确

对于您尝试过的内容:

  • 注意,-match '...'找不到像"&";。-match运算符的RHS操作数是正则表达式模式,因此将匹配字符串中任意三个字符的第一个序列。CCD_ 14也是如此。要字面上匹配"&";,在RegEx模式中使用时,使用-eq '...'或像这样转义点:...

相关内容

最新更新