1

Тема: AHK: Loop (файлы и папки)

Добрый день!
В одной папке имеем файлы Excel с разным расширением xlsx и xls. Если папка находиться на рабочем столе, поиск файлов по расширению проходит корректно. Если эту же папку положить в корень диска то показывает xls и xlsx.

#SingleInstance, Force

FileSelectFolder, Folder

Loop, %Folder%\*.xls
{
    MsgBox, 4, , Имя файла = %A_LoopFileFullPath%`n`nПродолжить?
    IfMsgBox, No
        break
}

2 (изменено: ypppu, 2017-05-03 19:29:47)

Re: AHK: Loop (файлы и папки)

Интересный баг. Если тип файла зарегистрирован в системе, в конце шаблона как будто подставляется звёздочка.

Loop, %Folder%\*.xls*

Но если расширение не зарегистрировано, шаблон отрабатывает нормально.

На оф. сайте предлагают проверять A_LoopFileExt.
https://autohotkey.com//boards/viewtopi … mp;t=13759
Всё не стал читать, если что полезного найдёте - отпишитесь.

3 (изменено: stealzy, 2017-05-03 19:30:17)

Re: AHK: Loop (файлы и папки)

Т.е. кроме нужных, показываются еще и файлы, начинающиеся с ".xls"?

4

Re: AHK: Loop (файлы и папки)

Ну да, файл типа myfile.xlsblabla попадает в результаты поиска.

5

Re: AHK: Loop (файлы и папки)

ypppu пишет:

Интересный баг. Если тип файла зарегистрирован в системе, в конце шаблона как будто подставляется звёздочка.

Это не баг, это фича. И от регистрации не зависит.
Loop, %Folder% - это FindFirstFile.
А там написано:

The search includes the long and short file names.

https://msdn.microsoft.com/en-us/librar … s.85).aspx

MyFile = C:\g.xlsx
Loop, %MyFile%, 1
{
  Long := A_LoopFileLongPath
  Short := A_LoopFileShortPath
}
MsgBox %Long%`n%Short%

6

Re: AHK: Loop (файлы и папки)

Пусть моя догадка неверна. Положим в папку три файла: 123.a, 123.ab и 123.abc. Вот уже с ними шаблон *.a находит только первый файл, а шаблон *.ab находит только второй. Я что-то не понимаю.

7 (изменено: Malcev, 2017-05-03 20:18:23)

Re: AHK: Loop (файлы и папки)

Это происходит потому, что файл в формате 8.3 не может иметь более 8 знаков в имени и 3 в расширении.
Поэтому у "123.xlsx" короткое имя будет "123.xls".
А в случае с "123.a" его короткое имя будет равно длинному.

8

Re: AHK: Loop (файлы и папки)

То есть в результаты поиска попадают в том числе и короткие пути. При этом в расширении обрезаются символы, начиная с четвёртого. Как ни крути, придётся в цикле делать дополнительную проверку.

9

Re: AHK: Loop (файлы и папки)

Если не пользуетесь старыми приложениями, то можно стереть все короткие имена в директории, а также запретить их дальнейшее создание.
https://technet.microsoft.com/en-us/lib … s.11).aspx
https://blogs.technet.microsoft.com/jos … names-too/

10

Re: AHK: Loop (файлы и папки)

red2881 пишет:

Если папка находиться на рабочем столе, поиск файлов по расширению проходит корректно.

Рабочий стол на сервере поэтому и работает).