1 (изменено: DD, 2017-02-07 03:10:54)

Тема: AHK: Вывод короткого (DOS: 8.3) имени определённого файла

Есть ли команда, позволяющая получить короткое имя файла на лету, а не как ниже?


  obj = Этот:\каталог
  RunWait, %comspec% /c "dir "%obj%\" /x > "%A_TEMP%\shrt_nms.txt"",, UseErrorLevel
  Run, "%A_TEMP%\shrt_nms.txt"

2

Re: AHK: Вывод короткого (DOS: 8.3) имени определённого файла

Короткое - это DOS что-ли? Так shrt_nms.txt = 8.3. Из чего его получать? О чём речь?
Если о переборе списка/коллекции, см. A_LoopFileShortPath/A_LoopFileShortName.
Ежели в реестре стоит заглушка NtfsDisable8dot3NameCreation, то можно так:

For F in ComObjCreate("Scripting.FileSystemObject").GetFolder("C:\Test").Files
   MsgBox, % F.ShortName
+ DD

3

Re: AHK: Вывод короткого (DOS: 8.3) имени определённого файла

Да, короткое надо было получать из длинного, спасибо.

MyFile = C:\Program Files\AutoHotkey\AutoHotkey.exe
Loop, %MyFile%, 1
{
  Long := A_LoopFileLongPath
  Short := A_LoopFileShortPath
}
MsgBox %Long%`n%Short%
return

4

Re: AHK: Вывод короткого (DOS: 8.3) имени определённого файла

Flasher, а возможна настройка, чтобы код возвращал и папки?

For F in ComObjCreate("Scripting.FileSystemObject").GetFolder("C:\Test").Files
   MsgBox, % F.ShortName

5 (изменено: DD, 2017-02-07 04:27:06)

Re: AHK: Вывод короткого (DOS: 8.3) имени определённого файла

Всё-таки, наряду с "короткими" их и "сокращёнными" называют — это я в названии темы для поисковиков писал.

6

Re: AHK: Вывод короткого (DOS: 8.3) имени определённого файла

DD
Если речь о полном пути, то берётся ShortPath вместо ShortName. Для перебора папок - SubFolders вместо Files.
Можно возвращать и по-отдельности:

MyFile = C:\Program Files\Windows Media Player\wmplayer.exe
MsgBox, % ComObjCreate("Scripting.FileSystemObject").GetFile(MyFile).ShortName
MsgBox, % ComObjCreate("Scripting.FileSystemObject").GetFile(MyFile).ShortPath

Folder = C:\Program Files\Windows Media Player\
MsgBox, % ComObjCreate("Scripting.FileSystemObject").GetFolder(Folder).ShortName
MsgBox, % ComObjCreate("Scripting.FileSystemObject").GetFolder(Folder).ShortPath

Заголовок чуток уточнил, т.к. под короткими иногда разное понимают.