Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » JPEGView

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Krot66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#NoEnv  
SetWorkingDir %A_ScriptDir%
SetKeyDelay 50, 50
#SingleInstance Force
#NoTrayIcon
 
/*
Скрипт предназначен для работы с пользовательскими командами JPEGView, синтаксис которых описан в JPEGView.ini. Отличие от простых команд (copy, move и пр.) в автоматическом создании целевых папок, автоматическом переименовании при совпадении имен, проверке результата и выдаче сообщений уже по завершении задачи. Поддерживаются абсолютные и относительные пути, возможно использование переменных текущего времени, даты, папки и расширения файла для получения конечного пути. Кроме того, возможно логирование производимых операций.  
Позволяет производить копирование, перемещение, переименование с появлением отдельного окна ввода, добавление суффиксов и префиксов, сохранение на месте (без суффикса "_proc") с сохранением оригинала в заданной папке.
 
Скрипт позволяет использовать следующие переменные:
$date - текущая дата в формате 2015-06-12
$time - текущее время в формате 15.27.06  
$folder - имя папки исходного файла
$file - имя файла без расширения
$ext - его расширение
 
Команды:
1. rename - переименование на месте с появлением отдельного окна ввода имени:  
    
UserCmd0="KeyCode: Shift+R Cmd: '"C:\Program Files\AutoHotkey\AutoHotkey.exe" %exepath%\JPEGView.ahk rename %filename%' Flags: 'WaitForTerminate ReloadFileList MoveToNext'"
 
Здесь первые два члена команды - путь к исполняемому файлу Autohotkey и собственно скрипту, в данном случае находящемуся в папке программы. Можно скомпилировать скрипт и заменить эти два члена одним.
JPEGView переходит к следующему файлу не дожидаясь окончания, но это не страшно, т.к исходное имя файла отображается в окне переименования.
 
2. Добавление суффиксов и префиксов - команды вида <... и ...> соответственно (возможно использование переменных). Добавление префикса "_" :
 
UserCmd1="KeyCode: Shift+1 Cmd: '"C:\Program Files\AutoHotkey\AutoHotkey.exe" %exepath%\JPEGView.ahk <_ %filename%' Flags: 'WaitForTerminate ReloadFileList MoveToNext'"
 
3. move - перемещение. Удаление файла в мусорную папку:
 
UserCmd2="KeyCode: Ctrl+Del Cmd: '"C:\Program Files\AutoHotkey\AutoHotkey.exe" %exepath%\JPEGView.ahk move %filename% D:\JPEGView\Trash\$folder' Flags: 'WaitForTerminate ReloadFileList MoveToNext'"
 
4. copy - копирование. Все то же, но MoveToNext не надо. Копирование в паку с датой и добавлением префикса из имени папки:
 
UserCmd3="KeyCode: Shift+3 Cmd: '"C:\Program Files\AutoHotkey\AutoHotkey.exe" %exepath%\JPEGView.ahk copy %filename% D:\JPEGView\$date\$folder_$file.$ext' Flags: 'WaitForTerminate ReloadFileList'"
 
 
5. saveold - сохранение файла на месте, без суффикса "_proc", с сохранением оригинала в заданную папку:
 
UserCmd4="KeyCode: Shift+S Cmd: '"C:\Program Files\AutoHotkey\AutoHotkey.exe" %exepath%\JPEGView.ahk saveold %filename% D:\JPEGView\Old\$folder'"
 
P.S. Пользовательские команды требуют последовательной нумерации от 0 без пропусков!    
*/
 
mess:=1 ; cообщать об успешных действиях (0 - только об ошибках)
log:=2 ; логирование операций (2 - с разбивкой по дням)
log_dir:="logs" ; папка сохранения логов
 
SetTimer Exit, 60000, 1
Loop %0%
    par%A_Index%:=%A_Index%
SplitPath par2, s_file, s_dir, s_ext, s_name
FormatTime date, , yyyy-MM-dd
FormatTime time, , HH.mm.ss
folder:=RegExReplace(s_dir,".+\\")
folder:=RegExReplace(folder,":")
StringReplace par1, par1, % $date, % date
StringReplace par1, par1, $time, % time
StringReplace par1, par1, $folder, % folder
StringReplace par1, par1, $file, % s_name
StringReplace par1, par1, $ext, % s_ext
StringReplace par3, par3, $date, % date
StringReplace par3, par3, $time, % time
StringReplace par3, par3, $folder, % folder
StringReplace par3, par3, $file, % s_name
StringReplace par3, par3, $ext, % s_ext
WinGet id, ID, ahk_exe JPEGView.exe
If (!par1 || !s_file)
    goto Error
If (par1="rename")  
{
    mes:="Введите новое имя файла без расширения:"
    Input:    
    InputBox name_new, % s_file, % mes, , 800, 130, , , , ,% s_name
    If Errorlevel || (name_new=s_name)
        return
    path_new:=s_dir "\" name_new "." s_ext    
    If FileExist(path_new)
        mes:="Файл существует!", goto Input
    FileMove % par2,% path_new
    e:=Errorlevel, text:="Успешно переименовано!"
}
If RegExMatch(par1,"^<\K.+",pref)
{
    path:=s_dir "\" pref . s_name "." s_ext
    FileMove % par2, % path
    e:=Errorlevel, text:="Добавлен префикс " pref
}    
If RegExMatch(par1,".+(?=>)",suff)
{
    path:=s_dir "\" s_name . suff "." s_ext
    FileMove % par2, % path
    e:=Errorlevel, text:="Добавлен суффикс " suff
}    
If par1 in copy,move,saveold
{
    If !path:=par3
        goto Error
    If !RegExMatch(par3,"i)\.[a-z]{3,4}$")
    {
        t_dir:=RegExReplace(par3,":?\\$")
        path:=RenIfExist(t_dir "\" s_file,2)
    }
    else
    {
        SplitPath par3, , t_dir
        path:=RenIfExist(path,2)
    }    
    FileCreateDir % t_dir
    If (par1="copy")
    {
        FileCopy, % par2,% path
        e:=Errorlevel, text:="Скопировано в `n" path
    }
    If (par1="move")
    {
        FileMove, % par2,% path
        e:=Errorlevel, text:="Перемещено в `n" path
    }
    If (par1="saveold")
    {
        Send ^{vk53}
        WinWaitNotActive % "ahk_id " id, , 3
        If Errorlevel || !WinActive("ahk_exe JPEGView.exe")
            return
        WinGet id2, ID, A
        FileCopy % par2, % path            
        If e:=Errorlevel
            goto End
        ControlSetText Edit1, % par2
        ControlSend Edit1, {Enter}
        Sleep 300
        If !(WinActive("ahk_id " id) || WinActive("ahk_id " id2))
            Send {Left}{Enter}
        If !FileExist(par2)
            e2:=1
        text:="Сохранено. Оригинал перемещен в `n" par3            
    }
}
End:
Sleep 200
If e || e2
    MsgBox, 16, Ошибка, Не выполнено!
else If mess
        MsgBox, 64, Информация, % text, 1.5    
If log
{
    FileCreateDir % log_dir
    If (log=2)
        date:=A_YYYY "." A_MM "." A_DD "_"
    FileAppend % "`n`n###  " A_DD "." A_MM "." A_YYYY "  " A_Hour ":" A_Min "  ###`nsource:      " par2 "`naction:      " par1 "`ntarget:      " path "`nerrors:      " e "  " e2, % RegExReplace(log_dir,"\\$") "\" date "JPEGView.log"
}
Exit:
ExitApp
 
Error:
MsgBox, 16, Ошибка, Неверно заданы параметры!
ExitApp
 
RenIfExist(f_path,tab="1")
{
    If ! FileExist(f_path)
        return f_path
    SplitPath f_path, , dir, ext, file
    Loop % dir "\" file "*." ext
    {
        n:=0
        RegExMatch(A_LoopFileName,"(?<=_)\d+?(?=\.\w{2,4}$)",n)
        If ! n
            n_max:=0
        If (n>n_max)
            n_max:=n
    }
    SetFormat float, % "0" tab
    return dir "\" file "_" n_max+1.0 "." ext
}
 

Всего записей: 1193 | Зарегистр. 10-12-2007 | Отправлено: 13:45 15-06-2015 | Исправлено: Krot66, 10:45 03-07-2015
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » JPEGView


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru