amonqsq
V2EX  ›  Windows

在 windows 中删除"..."文件夹时产生的疑问

  •  
  •   amonqsq · Jul 19, 2020 · 2849 views
    This topic created in 2151 days ago, the information mentioned may be changed or developed.

    失手将一个文件夹的名字修改成了...

    使用右键删除和 cmd 中的 del 操作都无法删除这个文件夹,但是用 wsl 删除成功了。

    在 ubuntu 上测试了下,也可以正常删除。

    请问两个文件系统有什么差异导致操作结果不同?

    10 replies    2020-07-23 10:41:21 +08:00
    imn1
        1
    imn1  
       Jul 19, 2020
    第三个点可能视为扩展名分隔符了
    只是猜的,不是经验
    lxilu
        2
    lxilu  
       Jul 20, 2020 via iPhone
    文件系统无关。线索:..表示上级目录
    300
        3
    300  
       Jul 20, 2020 via Android
    del "..."

    这个呢
    WayneCmd
        4
    WayneCmd  
       Jul 20, 2020
    盲猜底层 API 校验的规则不同,windows 上可以被 7zip 解压出(创建出)超长的文件名,但是却删不掉。

    del 命令不行,也没有办法查找文件节点去删除节点。

    最后一个好用的方法就是 去上级目录 rd /s 递归删除目录。
    celeron533
        5
    celeron533  
       Jul 20, 2020
    > windows 上可以被 7zip 解压出(创建出)超长的文件名,但是却删不掉

    可尝试在注册表中去掉 240 字文件夹长度兼容性限制
    amonqsq
        6
    amonqsq  
    OP
       Jul 20, 2020
    @shenlanAZ 我之前不太熟悉 command prompt,之前竟然在用 del 去删除文件夹(捂脸)。在上级删除...,显示"另一个程序正在使用此文件,进程无法访问。",在上上一级删除 dir_name\...,显示"目录不是空的。"。
    amonqsq
        7
    amonqsq  
    OP
       Jul 20, 2020
    @lxilu 我自认为您说的意思是匹配到 两个. 就不继续匹配了,但尝试删除"...exp"这样的文件夹名时能正常删除。
    Wongz
        8
    Wongz  
       Jul 20, 2020
    rd /s /q X:\...\ 可以删除
    amonqsq
        9
    amonqsq  
    OP
       Jul 20, 2020
    @Wongz 在我这测试没效果
    amonqsq
        10
    amonqsq  
    OP
       Jul 23, 2020
    像 @shenlanAZ 说的那样,是因为底层 API 校验的规则不同,cmd 将...解析成了..\. 。 加入\\?\前缀可以完成删除。
    [Naming Files, Paths, and Namespaces]( https://docs.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2538 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 16:09 · PVG 00:09 · LAX 09:09 · JFK 12:09
    ♥ Do have faith in what you're doing.