gpt4 book ai didi

c - 如果文件名在 DOS 8.3 风格中相同,则 MoveFile 和 MoveFileEx 工作异常

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:05 25 4
gpt4 key购买 nike

好的,我有一个名为

的文件
ANIME~1.MKV~FNH47B97
ANIME~1.MKV

它是完整的文件名。它是由用户命名的。我想把第一个重命名为ANIME~1.JPG。从操作系统的角度来看,它们似乎是相同的文件。 MoveFile 和 MoveFileEx 什么都不做。他们返回 OK,仅此而已。
另一个奇怪的情况是,例如,

ANIME~2.MKV~FNH47B97
ANIME~3.MKV

而且我想把第一个重命名为ANIME~2.MKVOS发现和ANIME~3.MKV一样,还是什么都不做。
这取决于文件夹中具有“相同 dos 8.3 名称”的文件的数量

有什么办法解决这个问题吗?可能需要一些额外的 Action /标志?

最佳答案

将评论中的讨论总结为一个大概的答案:MoveFile(Ex) 处理完整的文件名,虽然它可以通过短名称找到源文件,但目标文件被带到是长名字。

这意味着目标文件名不应与现有文件的任何长文件名或短文件名冲突。这可能是您的第二个测试用例失败的原因。第一个测试用例可能由于类似的原因而失败;我已经用这两个文件试过了,MoveFile 可以用它。

可以禁用 DOS 样式 8.3 短名称的生成,请参阅 KB121007 ,但我真的不推荐它。它可能会导致很多问题,例如参见 this article .此外,这是应该留给系统管理员而不是任何应用程序的决定。

关于c - 如果文件名在 DOS 8.3 风格中相同,则 MoveFile 和 MoveFileEx 工作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32499242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com