gpt4 book ai didi

Delphi:重命名无效文件夹

转载 作者:行者123 更新时间:2023-12-03 14:38:43 29 4
gpt4 key购买 nike

我有一个创建无效目录的应用程序...例如c:\Program Files\somedirectory. - 句点是目录名称的一部分。

现在,我已经尝试了有关在 delphi 中重命名文件的所有方法。

  • 重命名文件(文件1,文件2)
  • 移动文件(文件1,文件2)
  • 等等...

我尝试获取 Windows 短路径 ExtractShortPathName 但这仅返回一个空字符串。(在命令提示符中调用:“RENAME ShortOldName NewName”)

现在我知道我可以在 cmd 中手动执行此操作,但我不打算花时间检查所有文件并执行此操作;)

这是我的一些代码:

xshortname := ExtractFileName(ExtractShortPathName(ns + oldName));
xNewName := newName;

cmdTxt := PWideChar('/C cd ' + ns);
cmdTxt2 := PWideChar(cmdTxt + '&&' + ' RENAME ' + xshortname + ' ' + #34 + xNewName + #34);
ShellExecute(0, nil, 'cmd.exe', cmdTxt2, nil, SW_SHOWNORMAL);

我知道 shellExecute 不是这里使用的最佳方法。我只是想让 bug 发挥作用。稍后我会担心优化和正确的 Delphi 编码。

所以我的问题是:有谁知道有一个函数可以让我重命名无效目录吗?

最佳答案

您可以使用标准的Windows API函数MoveFile()如果您以特殊方式传递文件夹的名称:

MoveFile('\\?\D:\invalid_dir.', '\\?\D:\invalid_dir.fixed');

而不是

MoveFile('D:\invalid_dir.', 'D:\invalid_dir.fixed');

有关它的更多信息可以在 MSDN 上的 "Naming Files, Paths, and Namespaces" 下找到。话题。请注意,它特别建议不要在文件名中添加尾随点。

关于Delphi:重命名无效文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11200433/

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