【问题标题】:Delphi: Renaming an Invalid FolderDelphi:重命名无效文件夹
【发布时间】:2012-06-27 08:43:36
【问题描述】:

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

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

  • 重命名文件(file1,file2)
  • 移动文件(文件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 不是在这里使用的最佳方法。 我只是想让臭臭的人工作。稍后我会担心优化和正确的 Delphi 编码。

所以我的问题是:有谁知道允许我重命名无效目录的函数?

【问题讨论】:

    标签: delphi directory file-rename


    【解决方案1】:

    如果您以特殊方式传递文件夹名称,则可以使用标准 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" 主题下找到有关它的更多信息。请注意,它特别建议不要在文件名中添加尾随点。

    【讨论】:

    • 工作完美。谢谢!到处找。我知道 SO 不会让人失望。
    猜你喜欢
    • 2014-09-09
    • 2018-08-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多