我有一個目錄,其文件名包含“有趣”字符。我想獲取文件的 DOS (8.3) 文件名。我怎樣才能做到這一點?我選擇的語言是 Go。C:\...\foo>dir /x Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: 329F-C2FE Verzeichnis von C:\...\foo29.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.(我將使用此文件名打開文件進行閱讀。)
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
我找到了解決方案,但它并沒有真正幫助我。
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
? ? ? ? }
? ? }
}
- 1 回答
- 0 關注
- 113 瀏覽
添加回答
舉報
0/150
提交
取消