我们有一些网络共享,由于文件路径太长,我每天都会收到用户的支持电话。我建议使用简短的文件夹名称并避免深度嵌套它们,但我的用户总是有新的充分理由来冗长。他们需要非常长的文件夹名称以及内容的详细描述。有时他们只是将其他人创建的文件解压缩到相应的网络子文件夹中,他们甚至不会注意到极长的名称。
文件系统是存档文件的一种非常简单实用的方法,但也许这不是他们真正需要的。抽象层可能会有所帮助,它将长而冗长的令人回味的名称映射到文件夹和文件。它可以通过数据库或简单的 excel 文件来实现,但这似乎有点过头了,尤其是在更新地图的任务留给用户的情况下。
有一个应用程序TLPD,它扫描长文件路径。我从未使用过它,但也许可以将其放入脚本中以通知文件所有者,以便他可以在出现任何问题之前重命名或移动文件夹。
有没有另一种方法来解决这个问题?
请考虑我们有一个异构 Windows 域,因此我们不能超过大约 250 个字符的“旧”限制。
更新
我阅读了建议的帖子,但我已经意识到没有实际的方法可以克服这个限制。我正在寻找可以缓解问题的工具和程序。我们有一些超过 100 个字符的文件夹名称。是否有任何简单的替代方法来存储该信息?
当心 TLPD!
我最近才开始在 Windows 2016 机器上使用 TLPD v4.6。我们合并了 2 个组织,总共 9TB 的数据迁移被切割成大约 1.5TB 的块。
我们使用 Robocopy 复制数据,因为它应该处理长文件名,所以我创建了一些长目录名称,例如“1 快速棕色狐狸跳过懒狗”并将其复制到“2 快速棕色......”46 个字符为每个目录测试 robocopy。问题是长路径上有很多目录,但没有文件 - 所以 TLPD 通知我
所以在我的 Windows 10 盒子版本 10.0.18362 Build 18362 上,再次在我创建的文件夹上使用了 TLPD。
其中 5 个具有阈值的 240 字符表示 242 目录。C:\temp\5 快速棕色将 5 复制到 6th 中,您将获得 242 目录。C:\temp\6 the quick brown < 它已停止计数并切断“**1** the quick brown...”如此横穿 7 层深?
如果我的文件夹,创建此路径“C:\temp\8\7\6\5\4\3\2\1”并选择它生成的阈值 6(或 10)
所以创建了我自己的长名称文件夹 2。只使用 Windows 10 资源管理器,没有花哨的软件或插件,这就是我的结果。
如果我在下面运行 powershell 命令,我会得到下面的输出,显示 TDLP 错过了最大的文件夹。如果我将阈值设为 100,它将错过两个最大的文件夹。
如果我制作了非常长的嵌套文件夹,TLPD 再次将路径识别为 247,但实际长度是 572。在工作中我得到了更好的?结果,但现在认为这些东西可能会丢失,而且太不一致了。
代码取自https://stackoverflow.com/questions/12697259/how-do-i-find-files-with-a-path-length-greater-than-260-characters-in-windows
TLPD确实看起来 90% 适合您的问题。
TLPD 的主要问题是它只会让你成为一个日志文件。
IMO,我认为列出文件并找出哪些路径太长的任务最终将与解析该日志文件一样复杂。
因此,我建议使用 PowerShell 来获取递归列表,过滤过长的名称,查看结果列表,获取文件所有者,然后邮寄它们。
这些步骤中的每一个都简单且流行,因此每个步骤都有很多可通过 Google 搜索的信息。在最坏的情况下,将这些部分连接在一起将是一个stackoverflow帖子的情况:)
过滤长路径名(这看起来很有趣):https ://powershell.org/forums/topic/script-to-find-long-path-names/
另一个可能有用的搜索结果:https ://stackoverflow.com/questions/12697259/how-do-i-find-files-with-a-path-length-greater-than-260-characters-in-windows (滚动查看powershell答案)
如何获取文件的所有者:https ://stackoverflow.com/questions/42193597/get-file-owner-author
一个明确的“不”,您不能向 Windows 询问“最后修改用户”:https ://www.vistax64.com/threads/finding-who-modified-a-file.60668/
发送电子邮件的参考文档(这部分可能会很有趣)https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-6
最后,最简单的部分,自动运行您的脚本:https ://community.spiceworks.com/how_to/17736-run-powershell-scripts-from-task-scheduler
也许运行 Windows 的人可能会提供一个更好的答案,它实际上实现了部分/全部。:)