我想用 cmder 替换默认的 cmd,但 cmder 无法运行 Contig 来整理硬盘上我经常使用的文件夹。该命令Contig.exe -v -s E:\WarThunder
在 cmd 上运行良好,但在 cmder 上只会弹出帮助菜单(例如解析错误的参数)。
我该如何解决这个问题?欢迎提出任何想法
答案1
Contig.exe(来自 SysInternal 工具)有一个严重的错误:它无法检测符号链接(或目录连接)和已安装卷的存在。在某些情况下,目标文件(或目录连接的目标目录)可能甚至不存在,在这种情况下,它会因无法获取其范围而在当前用户的 Crashdump 目录中生成转储而崩溃。
Contig.exe 默认不应跟踪任何符号链接的目标、任何目录连接的目标或挂载点的目标。相反,它应该只分析/整理链接、连接或挂载点本身。
- 如果要分析/整理符号链接或连接点的目标,则应添加一个“-f”选项以启用此类重定向。默认情况下,该选项应处于关闭状态。
- 如果想要分析/整理挂载点的目标,应该有一个额外的“-m”选项来启用访问它们。该选项默认应关闭。
- 如果“-f”或“-m”选项与“-s”(递归子目录)一起使用,contig.exe 应该跟踪访问的路径,通过保留每个访问目录的卷 ID 和文件 ID,并且永远不会进一步重新访问相同的节点(以避免在堆栈中已经存在的相同访问父目录中出现无限递归循环)。
ATTRIB.EXE 命令行工具(当与“/S”一起使用以递归子目录时,使用“/L”选项)部分解决了此类类似错误,但是当挂载点中有挂载卷时,该错误仍然存在。对于 ICACLS.exe 工具,显然可以正确处理此问题(它从不访问链接的目标,而只是访问链接本身),但是它仍然存在挂载点问题(挂载到不同的卷,可能是 VHDX,或当前卷的另一个目录)。
此类错误会影响其他工具,特别是备份/恢复工具(包括 Windows 8/8.1/10/11 中仍然存在的旧版“Windows 7”备份,它也可能无法正确且成功地创建基于文件的备份,包括用户配置文件中默认存在但仅标有旧版“隐藏”属性的各种符号链接或连接,或者如果它们未明确从不备份/恢复的子目录列表中排除)
Windows 仍未完全测试其是否完全、有效地支持符号链接(包括 NTFS 中的“目录连接”)。硬链接(NTFS 支持同一卷上的文件/目录之间的硬链接)也可能存在问题,因为可能会出现无限递归。Windows 在许多地方仍假设旧式 FAT 文件系统的行为,其中任何文件或目录只能从唯一路径访问;但请记住,符号链接和挂载点(用于目录)已经存在很长时间了(它们存在于 IBM-DOS、MS-DOS 或 DR-DOS 中,以及各种 DOS 扩展器中,在挂载的 FAT 卷或挂载的网络卷上,早在 Windows 的第一个 16 位版本发布之前!)。
可能是 Contig.exe 的此类错误(以及它的一些管理权限和其内部的“许可证检查”,会弹出一个协议对话框)导致“cmder”拒绝使用 Contig.exe(它不是纯粹的命令行工具,因为它必须能够使用 Windows 桌面,而不仅仅是标准 I/O 流)