获取 Dos (8.3) 文件名



我有一个目录,其中包含包含"有趣"字符的文件名。我想获取文件的 dos (8.3( 文件名。我该怎么做?我选择的语言是 Go。

C:...foo>dir /x
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: 329F-C2FE
Verzeichnis von C:...foo
29.09.2018  16:22    <DIR>                       .
29.09.2018  16:22    <DIR>                       ..
23.07.2009  01:52             5.526 CW9463~1.PDF cöw.pdf
1 Datei(en),      1.922.706 Bytes
0 Verzeichnis(se), 48.235.646.976 Bytes frei

我想获取CW9463~1.PDF文件名而不是cöw.pdf.

(我将使用此文件名打开文件进行读取。

我已经找到了一个解决方案,但它并没有真正帮助我。(请参阅@eryksun的评论/警告(

import (
"golang.org/x/sys/windows"
)
func GetShortPathName(name string) (path string, err error) {
lp, err := windows.UTF16PtrFromString(name)
if err != nil {
return "", err
}
n := uint32(100)
for {
buf := make([]uint16, n)
n, err = windows.GetShortPathName(lp, &buf[0], uint32(len(buf)))
if err != nil {
return "", err
}
if n <= uint32(len(buf)) {
return windows.UTF16ToString(buf[:n]), nil
}
}
}

相关内容

  • 没有找到相关文章

最新更新