/* * @Author: Vitaly Batushev * @E-Mail: vitaly@batushev.info * @Date: 2015-12-07 02:43:24 * @Last Modified by: Vitaly Batushev * @Last Modified time: 2016-03-19 22:08:54 * @ScriptName InBackup * @Version 1.1 * @Description Создание резервных копий документа в папке указываемой пользователем */ /* ====================== Н А С Т Р О Й К И ================================ */ var InBackupConfig = { folder: "~/Documents/Backup", // Папка для сохранения резервной копии many: true, num: 5, // null = бесконечное количество, число – количество резервных копий format: "d", // d - дата/время, n - номер usePrefix: false, // если значение true, используется префикс, например, 00001-myPub.indd // если значение false, используется суффикс, например, myPub-00001.indd prefix: "-", // Символ, отделяющий префикс от имени файла suffix: "-", // Символ, отделяющий суффикс от имени файла dateformat: "D.M.Y-h:m-s" // D - день, M - месяц, Y - год (4-значное значение), // h - часы, m - минуты, s - секунды // НЕ ИСПОЛЬЗУЙТЕ СИМВОЛЫ ':', '/', '\' } /* ================= К О Н Е Ц Н А С Т Р О Е К =========================== */ var InBackup = (function(){ var main = function() { if (app.documents.length == 0) { exit(); } var bkFolder = new Folder(InBackupConfig.folder); if (!bkFolder.exists) { reverseFolderCreate(bkFolder); } app.activeDocument.save(); var activeFile = new File(app.activeDocument.fullName); var newFile = generateName(getFileNameOnly(app.activeDocument.name)); activeFile.copy(newFile); } var getFileNameOnly = function(str) { var arr = str.split("."); if (arr.length > 1) { arr.pop(); } return arr.join("."); } var reverseFolderCreate = function(fld) { var fldpath = fld.absoluteURI; paths = fldpath.split("/"), rel = paths[0] + "/" + paths[1]; for (var a = 2, l = paths.length; a < l; a++) { rel += "/" + paths[a]; if (!Folder(rel).exists) { Folder(rel).create(); } } } var generateName = function(fileName) { var name = "", num = 0; if (InBackupConfig.many) { switch (InBackupConfig.format) { case "d": var curDate = new Date(); fmtDate = InBackupConfig.dateformat .replace(/D/g, curDate.getDate()) .replace(/M/g, curDate.getMonth()) .replace(/Y/g, curDate.getFullYear()) .replace(/h/g, curDate.getHours()) .replace(/m/g, curDate.getMinutes()) .replace(/s/g, curDate.getSeconds()) .replace(/[\/\?\:,\\\|]/g, "-"); var fileSuffix = InBackupConfig.suffix + fmtDate; if (InBackupConfig.usePrefix) { myPrefix = InBackupConfig.prefix + fileSuffix; fileSuffix = ""; } else { myPrefix = ""; } fileSuffix += ".indd"; name = InBackupConfig.folder + "/" + myPrefix + fileName + fileSuffix; break; case "n": if (InBackupConfig.num == null) { do { num++; num = Array(Math.abs(5 - num.toString().length) + 1).join("0") + "" + num; var qFile = new File(InBackupConfig.folder + "/" + fileName + InBackupConfig.suffix + num + ".indd"); if (usePrefix) { qFile = new File(InBackupConfig.folder + "/" + num + InBackupConfig.prefix + fileName + ".indd"); } } while (qFile.exists); name = qFile.absoluteURI; } else { num = app.activeDocument.extractLabel("countBackup"); if (num == "") { num = 1; } if (num == InBackupConfig.num) { app.activeDocument.insertLabel("countBackup", "1"); } else { app.activeDocument.insertLabel("countBackup", (Math.round(num) + 1).toString()); } name = new File(InBackupConfig.folder + "/" + fileName + InBackupConfig.suffix + num + ".indd"); if (InBackupConfig.usePrefix) { name = new File(InBackupConfig.folder + "/" + num + InBackupConfig.prefix + fileName + ".indd"); } } break; default: name = fileName + ".indd"; } } else { name = fileName + ".indd"; } return name; } return { run: main } })(); InBackup.run();