[英]Get Dos (8.3) filename
我有一個目錄,文件名包含“有趣”字符。 我想獲取文件的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
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.