1

Тема: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Доброго времени суток. Помогите создать скрипт на автоматическую сортировку файлов по папкам. Ну например если файл попадает в папку "Загрузки" в зависимости от расширения файла(avi , mp3, png, rar, dwg ) сортировались по папкам с соответствующими названиями "avi " в папку "видео" , "mp3" в папку "музыка", "png" в папку "изображения" и.т.д.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Вроде всё просто. Скрипт по сигналу или периодически заглядывает в назначенную папку. Командой Loop (файлы и папки) перебирает имена файлов, командой FileMove раскидывает по папкам.

3

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Я не знаю как сделать проверку на файлы(появились ли файлы в папке или нет?). Ключевое слово "автоматическую сортировку"(а не по горячей клавише) .Подскажите как сделать проверку, а с "FileMove" я как нибудь разберусь.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

4

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

YMP пишет:
IfExist / IfNotExist

Проверяет существование файла или папки.

IfExist, FilePattern
IfNotExist, FilePattern
AttributeString := FileExist(FilePattern)

5 (изменено: Alectric, 2017-04-01 13:45:05)

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

#SingleInstance,Force

loop
{
  sleep,1000
  Loop,%a_scriptdir%\*
  {
    if (A_LoopFileName=a_scriptname or A_LoopFileExt="" or A_LoopFileName="desktop.ini")
      continue
    filecreatedir,% a_scriptdir "\" A_LoopFileExt
    FileMove, % A_LoopFileFullPath, % a_scriptdir "\" A_LoopFileExt
  }
}
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

6

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Loop с перебором файлов - это плохо. Надо бы в эту сторону смотреть. Или хотя бы в эту.
И, кстати, FileMove работает с масками. Loop в папке тут и не нужен.

Сортировка - это упорядочивание списка. Исправил заголовок.

7 (изменено: Malcev, 2017-04-01 16:31:57)

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Flasher, у нас есть и свои наработки вотчфолдера:
http://forum.script-coding.com/viewtopic.php?id=6273

8 (изменено: Ядрён, 2017-04-02 03:28:19)

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Malcev
Что то я в конец запутался. А где же хоть строчка кода с расширениями типа (avi , mp3, png).

+ открыть спойлер

Думал будет легко ,несколько строк "FileMove" + цикл. Но как оказалось всё непросто.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

9

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Ядрён пишет:

Думал будет легко ,несколько строк "FileMove" + цикл.

Да пож-та. Кто ж против-то?

SetWorkingDir, %USERPROFILE%\Downloads

N := ["Видео", "Музыка", "Изображения", "Текст", "Архивы"]
For Each, i in N
  FileCreateDir, % i

Loop
{ Sleep, 1000
  FileMove, *.avi, % N[1]
  FileMove, *.mp3, % N[2]
  FileMove, *.png, % N[3]
  FileMove, *.txt, % N[4]
  FileMove, *.rar, % N[5]
}

Вопрос целесообразности. По большому счёту особой нагрузки на процессор при посекундном дёргании не будет. Но в определённых ситуациях лучше использовать #Include WatchFolder.ahk, только там с UserFunc нужно немного поковыряться.

И не забывайте про точки в конце предложений и запятую/перевод строки после ника.

10

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Здоровья всем.
В примере от JustMe, если с чекбоксом 'Size' изменить текстовый файл и сохранить в N++, то результатом будет два изменения одновременно, а если в обычном блокноте, то одно, но не со всеми файлами. Не понял зависимость. С чекбоксом 'Last Write' - всегда два. "Наша" поделка так же регистрирует два одинаковых изменения подряд. Можно конечно пропускать второе событие, зная, что оно всегда происходит, но мне кажется, что что-то у меня "не так" работает. Или так и должно быть?

11

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

У меня тоже самое.
Подозреваю, что это из-за журналирования NTFS.
В FAT32 всегда только одно оповещание.

12

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Доброго времени суток. Подскажите как добавить расширений ,к "*.png" ещё и  "*.jpg" и так далее  . Что бы не создавать новых строк, потому что  расширений добавиться много. Через переменную, ну или в строчку записать. Не пойму как перечислить расширения.

FileMove, *.png, % N[3]
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

13 (изменено: Indomito, 2017-05-08 17:57:51)

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Ядрён, Я не понимаю в чём проблема, в справке всё есть.

FileMove
Перемещает или переименовывает один или несколько файлов.
FileMove, SourcePattern, DestPattern [, Flag]
Далее подробное описание, на русском...

Примеры из справки.

FileMove, C:\My Documents\List1.txt, D:\Main Backup\ ; Переместить файл без переименования.
FileMove, C:\File Before.txt, C:\File After.txt ; Переименовать одиночный файл.
FileMove, C:\Folder1\*.txt, D:\New Folder\*.bkp ; Переместить и изменить расширение.

Версия для твоего случая, частный случай.

FileMove, C:\Folder\*.png, D:\New Folder\*.png.jpg
Malcev пишет:

Подозреваю, что это из-за журналирования NTFS.

Ты прав, первая точка это сигнал начала операции, второй завершения операции. В основе FS NTFS лежат транзакции — действие, совершаемое целиком и корректно или не совершаемое вообще. Файловая система NTFS

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

14

Re: AHK: Автоматическая рассортировка файлов по папкам согласно расширению

Ядрён

  For Each, Ext in ["bmp","gif","jp?g","png","svg","tiff"]
  FileMove, *.%Ext%, % N[3]

Через объект Shell.App.. можно фильтрацией, но это вреднее для диска.