也许这只适用于 Windows 的本地化版本,我不知道。
如果您在 Windows 搜索结果窗口中重命名文件夹,它不会重命名文件,而是创建一个desktop.ini
文件并添加LocalizedResourceName
具有新名称的变量。
因此,真实的文件夹名称和Windows资源管理器中显示的文件夹名称就会出现差异。
我今晚花了几个小时试图找到解决方案,然后尝试递归删除特定文件夹中的desktop.ini 文件,但没有成功。
所以,我来这里寻求帮助。这是不是 bug ?!
- 有没有办法阻止 Windows 资源管理器编辑 desk.ini 文件并重命名实际文件名?
- 如果这是一个错误,为什么我找不到更多人抱怨它?我遇到此问题的机器有问题吗?如果是这样,如何排除故障?
- 如何摆脱desktop.ini文件作为一种解决方法?我尝试了Powershell,尝试了Unlocker和LockHunter。我尝试了很多东西,包括
del /f /s
命令。一切都失败了,因为Windows正在保护这些系统文件。
请注意,过去,在同一台机器上,在 Windows 10 上,我尝试通过 Windows Search 修复此问题。但没有成功。我甚至最终移动了索引文件并尝试了不同的权限集。这有关系吗?(为什么?!)
希望有人能帮忙。这让我很抓狂。
答案1
我是看到 OP 描述的行为。
具有两个子文件夹的测试文件夹:
通过文件夹重命名#1:
步骤#2 的结果:
搜索:
kind:Folder
:重命名 #2
步骤#5 的结果(注意属性变化和未改变的文件系统文件夹):
desktop.ini
#2 中的内容:[.ShellClassInfo] LocalizedResourceName=Ordinary Folder II -Renamed
由于我(以及其他人)不知道这种行为,所以我不知道如何修复”。@John 建议的解决方法是在重命名之前退出搜索,这似乎是最好的短期选择。
您无需删除文件desktop.ini
即可让文件夹显示其文件系统名称,清除ReadOnly
文件夹的属性将阻止处理该desktop.ini
文件。这电源外壳代码片段将递归清除任何包含文件的文件夹的属性desktop.ini
(从当前工作目录开始):
gci desktop.ini -Recurse -Force | ForEach{
$folder = Get-Item $_.DirectoryName
$folder.Attributes = $folder.Attributes -band -not [IO.FileAttributes]::ReadOnly
}
这将设置相同的属性:
gci desktop.ini -Recurse -Force | ForEach{
$folder = Get-Item $_.DirectoryName
$folder.Attributes = $folder.Attributes -bor [IO.FileAttributes]::ReadOnly
}
答案2
清除只读对我来说不起作用。我创建了一个脚本来扫描不匹配的文件夹并选择性地删除有问题的desktop.ini: https://gist.github.com/eyaler/2ad37a7edd04f1a4ce339047ce5feabd