AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 977393
Accepted
Filippo
Filippo
Asked: 2019-08-01 01:52:28 +0800 CST2019-08-01 01:52:28 +0800 CST 2019-08-01 01:52:28 +0800 CST

如何正确存档文件以避免非常长的文件路径

  • 772

我们有一些网络共享,由于文件路径太长,我每天都会收到用户的支持电话。我建议使用简短的文件夹名称并避免深度嵌套它们,但我的用户总是有新的充分理由来冗长。他们需要非常长的文件夹名称以及内容的详细描述。有时他们只是将其他人创建的文件解压缩到相应的网络子文件夹中,他们甚至不会注意到极长的名称。

文件系统是存档文件的一种非常简单实用的方法,但也许这不是他们真正需要的。抽象层可能会有所帮助,它将长而冗长的令人回味的名称映射到文件夹和文件。它可以通过数据库或简单的 excel 文件来实现,但这似乎有点过头了,尤其是在更新地图的任务留给用户的情况下。

有一个应用程序TLPD,它扫描长文件路径。我从未使用过它,但也许可以将其放入脚本中以通知文件所有者,以便他可以在出现任何问题之前重命名或移动文件夹。

有没有另一种方法来解决这个问题?

请考虑我们有一个异构 Windows 域,因此我们不能超过大约 250 个字符的“旧”限制。

更新

我阅读了建议的帖子,但我已经意识到没有实际的方法可以克服这个限制。我正在寻找可以缓解问题的工具和程序。我们有一些超过 100 个字符的文件夹名称。是否有任何简单的替代方法来存储该信息?

filesystems
  • 2 2 个回答
  • 446 Views

2 个回答

  • Voted
  1. xmhty
    2019-10-20T06:24:14+08:002019-10-20T06:24:14+08:00

    当心 TLPD!

    我最近才开始在 Windows 2016 机器上使用 TLPD v4.6。我们合并了 2 个组织,总共 9TB 的数据迁移被切割成大约 1.5TB 的块。

    我们使用 Robocopy 复制数据,因为它应该处理长文件名,所以我创建了一些长目录名称,例如“1 快速棕色狐狸跳过懒狗”并将其复制到“2 快速棕色......”46 个字符为每个目录测试 robocopy。问题是长路径上有很多目录,但没有文件 - 所以 TLPD 通知我

    所以在我的 Windows 10 盒子版本 10.0.18362 Build 18362 上,再次在我创建的文件夹上使用了 TLPD。

     c:\temp\1 the quick brown dog jumps over the lazy dog\2 the quick brown dog jumps over the lazy dog\3 ...
    

    其中 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)

    11  dir.    C:\temp\8\7 < Where are the missing folder?
    

    所以创建了我自己的长名称文件夹 2。只使用 Windows 10 资源管理器,没有花哨的软件或插件,这就是我的结果。

    Length  Type    Full Path Name
    245    dir.    D:\temp\this is a very log folder will all good men come to 
    the aid of the party the quick brown fox jumped over the dog\Hong Kong 
    leader Carrie Lam open to the possibility of overhauling cabinet when 
    protest crisis dies down Bernie Sanders Adds
    === TLPD finished ===.
    

    如果我在下面运行 powershell 命令,我会得到下面的输出,显示 TDLP 错过了最大的文件夹。如果我将阈值设为 100,它将错过两个最大的文件夹。

    247 : D:\temp\this is a very log folder will all good men come to the aid 
    of the party the quick brown fox jumped over the dog\Hong Kong leader 
    Carrie Lam open to the possibility of overhauling cabinet when protest 
    crisis dies down Bernie Sanders Adds\A
    245 : D:\temp\this is a very log folder will all good men come to the aid 
    of the party the quick brown fox jumped over the dog\Hong Kong leader 
    Carrie Lam open to the possibility of overhauling cabinet when protest 
    crisis dies down Bernie Sanders Adds
    149 : D:\temp\Angry over Brexit, thousands gather in London demanding new 
    referendum Why This Nebraska Democrat Thinks She Can Get Elected In Trump 
    Country
    120 : D:\temp\this is a very log folder will all good men come to the aid 
    of the party the quick brown fox jumped over the dog
    

    如果我制作了非常长的嵌套文件夹,TLPD 再次将路径识别为 247,但实际长度是 572。在工作中我得到了更好的?结果,但现在认为这些东西可能会丢失,而且太不一致了。

    代码取自https://stackoverflow.com/questions/12697259/how-do-i-find-files-with-a-path-length-greater-than-260-characters-in-windows

    Get-ChildItem -Path $pathToScan -Recurse -Force | Select-Object -Property 
    FullName, @{Name="FullNameLength";Expression={($_.FullName.Length)}} | 
    Sort-Object -Property FullNameLength -Descending | ForEach-Object {
    $filePath = $_.FullName
    $length = $_.FullNameLength
    $string = "$length : $filePath"
    
    # Write to the Console.
    if ($writeToConsoleAsWell) { Write-Host $string }
    
    #Write to the file.
    $stream.WriteLine($string)
    }
    
    • 1
  2. Best Answer
    i336_
    2019-08-01T04:21:16+08:002019-08-01T04:21:16+08:00

    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 的人可能会提供一个更好的答案,它实际上实现了部分/全部。:)

    • 0

相关问题

  • 我如何知道 AIX 中磁盘上的文件系统是什么?

  • 控制 UNIX 目录内容用户组所有权

  • 在 Ubuntu 上将 Windows 磁盘分区与 Linux 分区合并

  • 在 VMPlayer 上 Windows 和 Linux 之间共享目录的最佳方式

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve