Помощь - Поиск - Пользователи - Календарь
Полная версия: DOS-скрипт для переименования фотоснимков
Форум «Всё о Паскале» > Системы, Сети, Технологии > ОС и ПО
Lapp
Думал я, думал, куда сию диковину можно поместить, да так толком и не придумал. Ладно, кладу тут, в ОС и ПО. Типа это ПО от меня)). All Rights Reserved)). Можете использовать, дорабатывать, изменять, зарабатывать на ней мульены $, единственное условие: не использовать для разработки вирусов и спама lol.gif .

Так вот, я пробовал ее на 2000, XP, Vista, Windows 7 - везде идет, НО..

Но я пробовал только на американской винде, и я сильно подозреваю, что на другой локализованной версии она может не пойти. То есть сорее всего не пойдет((. Я готов сотрудничать с любым добрым челом, кто возьмется ее локализовать под Россию. Сам я этого сделать не могу по причине неимения русской винды.

Кроме того, требуется подстройка под разные цифровые камеры. В настоящий момент она распознает Olymous, Fuji, Samsung и Sony. Распознавание самое примитивное (не забывайте, что это всего лишь батник), на основе имени.

Теперь об использовании.
Сначала делаете отдельный каталог и скачиваете туда все картинки с вашей карты (CF, SD, MS, xD или что там у вас..). Желательно, чтоб в этом каталоге не было других файлов (распознавание может ошибиться). Сам скрипт может лежать в любой директории, к которой прописан путь. У меня он называется dc2pc (digital camera to PC), рекомендую использовать это же название. Запуск без параметров выдает подсказку:
Код
P:\pix\ak\09\e_may\17>dc2pc
  usage:   dc2pc suffix      - choose a descriptive and short enough "suffix"
     or:   dc2pc undo        - the undo file must exist
example:   dc2pc _Big-Ben_   - transferred to:   05h012_Big-Ben_001 ...
months marked with letters: a - January, b - February, .. , l - December

Параметр всего один - желаемый суффикс, полностью, например: _KateBirthd_ . Обратите внимание на символы подчеркивания, с ними удобнее читать название. Скрипт произведет поиск картинок и скажет результат, а также спросит, нужно ли продолжать:
Код
P:\pix\ak\09\e_may>dc2pc _test_
No pictures found

Либо:
Код
P:\pix\ak\09\e_may\17>dc2pc _test_
Found 27 Sony pictures.  Proceed? (Y/whatever) y

В процессе работы создается файл с информацией для UNDO. Если, например, вам не понравилось название, вы можете вернуть все назад:
Код
P:\pix\ak\09\e_may\17>dc2pc undo
Undoing dc2pc ...
                  ... done!  Check it and remove dc2pc.undo file

После этого желательно вручную удалить undu-файл.

Файлы называются такаим образом:

YYmDDsuffixNNN

YY - год, типа 09
m - месяц, латинская буква: a - январь, b - февраль ... k - ноябрь, l - декабрь.
DD - день, типа 25
suffix - то, что вы задали
NNN - номер. У меня пока больше 999 не было за один раз..))

Такое соглашение о наименовании очень эффективно. Сортировка по дате и номеру кадра обеспечена. Я использую ее много лет. Плюс к тому систему директорий, ессно, если интересно, могу подробнее.
Короче, получается примерно так:
Код
..                        │  Up  │06/01/09│03:35
09e17_test_001         JPG│2099 K│05/17/09│17:38
09e17_test_002         JPG│2154 K│05/17/09│17:38
09e17_test_003         JPG│2461 K│05/17/09│17:39
09e17_test_004         JPG│1749 K│05/17/09│17:39
09e17_test_005         JPG│1794 K│05/17/09│17:39
09e17_test_006         JPG│1656 K│05/17/09│17:39
09e17_test_007         JPG│2516 K│05/17/09│17:58
09e17_test_008         JPG│2807 K│05/17/09│17:59
09e17_test_009         JPG│2564 K│05/17/09│17:59
09e17_test_010         JPG│2715 K│05/17/09│17:59
09e17_test_011         JPG│2843 K│05/17/09│17:59
09e17_test_012         JPG│2430 K│05/17/09│17:59
09e17_test_013         JPG│2762 K│05/17/09│18:00
09e17_test_014         JPG│2954 K│05/17/09│18:00
09e17_test_015         JPG│2556 K│05/17/09│18:01
09e17_test_016         JPG│2478 K│05/17/09│18:01
09e17_test_017         JPG│2605 K│05/17/09│18:01
09e17_test_018         JPG│3424 K│05/17/09│18:06
09e17_test_019         JPG│3422 K│05/17/09│18:06
09e17_test_020         JPG│3419 K│05/17/09│18:06
09e17_test_021         JPG│3310 K│05/17/09│18:06
09e17_test_022         JPG│3120 K│05/17/09│18:06
09e17_test_023         JPG│3231 K│05/17/09│18:07
09e17_test_024         JPG│3298 K│05/17/09│18:07
09e17_test_025         JPG│3559 K│05/17/09│18:07
09e17_test_026         JPG│3189 K│05/17/09│18:07
09e17_test_027         JPG│3039 K│05/17/09│18:07
dc2pc                  tmp│  1080│06/01/09│03:35
dc2pc                 undo│   918│06/01/09│03:35


Забавно - вроде все и несложно, а инструкция вышла ого-го!))



Добавлено через 6 мин.
Классно - а сам скрипт забыл положить)).
Вот он:
dc2pc.bat
Код
@ECHO Off
rem     dc2pc
rem     Tool to rename files taken from digital camera
rem     Written by Lapp from ForumAllAboutPascal
rem     1.0, Jan 28/05
rem     1.1, May 04/05 multicamera support added

SET sign=dc2pc.sign
IF %6a==%sign%a GOTO loop3
IF %4a==%sign%a GOTO loop2
IF %3a==%sign%a GOTO loop1
IF %1a==a GOTO error
SET undo=dc2pc.undo
IF /I %1==undo GOTO undo
SET tmp=dc2pc.tmp
SET month=a b c d e f g h i j k l
IF EXIST %undo% GOTO :undoexists
SET suffix=%1
SET num=0
SET nn=0
SET found=0
CALL %0 Olympus p???????.* %sign%
IF %nn%==0 CALL %0 Fuji DSCF????.* %sign%
IF %nn%==0 CALL %0 Canon ???_????.* %sign%
IF %nn%==0 CALL %0 Samsung sd??????.* %sign%
IF %nn%==0 CALL %0 Sony DSC?????.* %sign%
IF %found%==0 ECHO No pictures found
GOTO end

:loop1
IF EXIST %tmp% DEL %tmp%
FOR %%i IN (%2) DO (
        ECHO %%i %%~xi %%~ti >> %tmp%
        SET /A nn=%nn + 1
)
IF %nn%==0 GOTO END
SET found=1
SET /P yn=Found %nn% %1 pictures.  Proceed? (Y/whatever)
IF /I %yn%a==ya (
        FOR /F "tokens=1-3" %%i IN (%tmp%) DO CALL %0 %%i %%j %%k %sign%
) ELSE SET nn=0
GOTO end

:loop2
SET /A num=%num% + 1
IF %num% LSS 10 (
        SET z=00
) ELSE IF %num% LSS 100 (
        SET z=0
) ELSE SET z=
FOR /F "tokens=1-3 delims=/" %%l IN ("%3") DO CALL %0 %1 %2 %%l %%m %%n %sign%
GOTO end

:loop3
IF %5 GEQ 2000 (
    SET /a year=%5 - 2000
) ELSE SET year=%5
IF %year% LSS 10 SET year=0%year%
SET /A mo=1%3-100
FOR /F "tokens=%mo%" %%o IN ("%month%") DO (
        ECHO %1 %year%%%o%4%suffix%%z%%num%%2 >> %undo%
        REN %1 %year%%%o%4%suffix%%z%%num%%2
)
GOTO end

:undo
IF EXIST %undo% (
        ECHO Undoing dc2pc ...
        FOR /F "tokens=1,2" %%i IN (%undo%) DO REN %%j %%i
        ECHO                   ... done!  Check it and remove %undo% file
) ELSE ECHO No undo file %undo% found!
GOTO end

:error
ECHO   usage:   dc2pc suffix      - choose a descriptive and short enough "suffix"
ECHO      or:   dc2pc undo        - the undo file must exist
ECHO example:   dc2pc _Big-Ben_   - transferred to:   05h012_Big-Ben_001 ...
ECHO months marked with letters: a - January, b - February, .. , l - December
GOTO end
:undoexists
ECHO undo file %undo% already exists!
:end

Enjoy, как грится! smile.gif
SKVOZNJAK
Общего с досом скрипт имеет только синтаксис. Имена у обрабатываемых файлов длинные. Такие если и успели к досу прикрутить то распространения всё равно не получили. Запустил фридос из под рута: видит 8 символов, точку и три символа расширения. Можно смело писать расширение .cmd и называть виндовым скриптом smile.gif Буду в винде, попробую протестить, но пока не вижу причин по которым он не должен работать. Единственное, с нелатинскими именами возможны затыки.
Не на чем протестить... У тебя же вроде куча старого железа, форматни антикварный винт и установи на него драйвера со zvercd.com Разумеется, в ознакомительных целях. Только там залогиниться надо. В чём сложность?

Немножко флуда: увлекательная скриптовая игра "закрой окошко" lol.gif На флешке создаётся текстовой файл с именем a.cmd
Содержимое файла:

:a
start a.cmd
goto :a


Обязательно создавать нужно именно на флешке. Для запуска - двойной клик мышкой, после чего собственно и начинается игра. Для выхода из игры вынуть флешку из компьютера. Работает на разных виндовсах, проверена антивирусом.
Lapp
> Общего с досом скрипт имеет только синтаксис.
Это верно. Но нововведения могут отпугнуть народ. Поэтому я предпочитаю такие вещи преподносить попроще.

> Имена у обрабатываемых файлов длинные.
Это необходимое зло))

> Буду в винде, попробую протестить,
Сиб!

> но пока не вижу причин по которым он не должен работать.
Я там, кажется, анализирую результат команды dir..

> Единственное, с нелатинскими именами возможны затыки.
ммм.. почему бы?

> У тебя же вроде куча старого железа, форматни антикварный винт
Это да)). Но антикварного времени не хватает))). Извини, но у меня ничего русского под рукой, за каждой мелочью придется лазить, искать..

> В чём сложность?
Да просто не нужно было до сих пор!))

> увлекательная скриптовая игра "закрой окошко" lol.gif
Супер!! А на сидюке? с автопоеем..
SKVOZNJAK
>у меня ничего русского под рукой, за каждой мелочью придется лазить, искать..

Я же эзоповым языком не нарушая правил форума описал всё что нужно сделать. Там даже бесплатный файлообменник летитбит для больших файлов применяется. Придётся правда пару минут на рекламные задницы посмотреть а дальше пусть качается, это же рунет - бесплатно и быстро только за просмотр хентая smile.gif

>А на сидюке? с автопоеем..

Надо будет эрвэшку протестить, только недолго, чтобы не взорвалась. Хотя винда и не линукс но иногда при нажатии на кнопку диск выплёвывать не хочет. Хотя копия реестра сделана - можно и ресетничать. Что за автопоей?
Lapp
> Я же эзоповым языком ...
да понл, понл..)) Попробую..

> Не знаю как выключить кроме как ресетом.
eject?

> Что за автопоей?
с автопЛеем!)) иои автораном..
(л и о - рядом))
SKVOZNJAK
Цифровой камеры не держу, только вебкамеру (ей и фотографировалась гороховая банка) потому тестить собирался на скриншотах из игры, они тоже разных дат. Скриптами попроще пользуюсь часто. Наиболее удобно стандартизировать имя обрабатываемого файла, например source.avi а потом просто кидать к нему в каталог нужный скрипт и запускать. Тогда писанина в скрипте сводится к минимуму.
Винда игровая: профессионал, 2002 года, сервис пак 2. Пак навинчен на винду древнюю совсем без паков, именно второй - для видухи. Конечно сейчас обычно играют на зверевской винде, но там японский язык порезан - нужно качать и ставить дополнения для яп игр. Но могу потом и на той потестить если заработает.

После запуска скрипта окно сразу пропадает. Дописал внизу строку
Код
pause


Изображение

Что-то я не совсем понял, суффикс нужно в консоли до запуска скрипта прописывать? Если так то это неудобно, это в КДЕ консоль из конгуерора вызывается одной клавой, в винде она включается долго и нудно.
Попробовал запускать скрипт из консоли и вот что получил
Изображение
Lapp
Спасибо)).
Да, суфикс задается параметром. Можно сделать, чтоб запрашивала, ессно, если нужно. Но поскольку я все перекачки делаю Far'ом, то мне это удобно - я там же и запускаю его.

Пока полет нормальный - просто файлов нет. В директории должны находиться файлы, названные определенным образом. Например dscXXXXX.jpg. ХХХХХ - это номер. Сделай пару файлов:

dsc00055.jpg
dsc00056.jpg

- например так (это Sony'вский формат). Неважно, что внутри, могут быть вообще пустые или текст, она только по названиям распознает. Сделай типа так

echo aaa > dsc00055.jpg
echo aaa > dsc00056.jpg

Потом в этой директории запускай. Паузу убери)).
SKVOZNJAK
Изображение

В фаре тоже самое, после ввода "y" система думает ~4 сек. Расширение jpg у картинок ничего не меняет. С именами типа dsc00155.jpg тот же глюк.
Содержимое файла dc2pc.tmp
Код
dsc00055.jpg .jpg 25.01.2009 14:05
dsc00005.jpg .jpg 25.01.2009 14:06
dsc00155.jpg .jpg 25.01.2009 14:07

Фаром сейчас пользуюсь в основном для сложностей и в случае траблов с проводником. В новой версии мелкий противный шрифт. Не знаешь, можно сделать как раньше было, крупный без завитушек, как в нортоне?
Lapp
Ну вот, это как раз то, что я предполагал..(( Я попробую вникнуть и исправить. Если не получится так просто, поставлю русскую винду. Конечно, блажь все это, лучше взять и написать нормально на нормальном языке нормальную прогу. Тут ведь как: начал, потому что всего несколько строк нужно было. Потом добавил, потом добавил еще.. А потом уже и бросать жалко)). А теперь еще и чисто спортивный интерес добавился)).

Спасибо SKVOZNJAK, +1 smile.gif

Цитата(SKVOZNJAK @ 3.06.2009 3:56) *
Фаром сейчас пользуюсь в основном для сложностей и в случае траблов с проводником. В новой версии мелкий противный шрифт. Не знаешь, можно сделать как раньше было, крупный без завитушек, как в нортоне?
Легко. Правый клик по шорткату, которым ты его запускаешь -> пропертис -> закладка Фонт.
В Фаре глюки, к сожалению, и на Висте еще больше.. А на разработку и поддержку они, похоже, положили.. Так что пользоваться нужно с оглядкой.
SKVOZNJAK
>Конечно, блажь все это, лучше взять и написать нормально на нормальном языке

Это только в винде блажь а под никсами столько наворотов для скриптовых языков что и более сложные вещи вполне реальны. Вот только не всегда хочется глубоко это изучать smile.gif

>В Фаре глюки, к сожалению, и на Висте еще больше..

Для просмотра содержимого файлов как в фаре использую свободную читалку на паскале http://kran100.narod.ru/ Сделана для црт 17' мониторов, но мне интересно, как она поведёт себя на жк или плазме и не только с соотношением сторон как в црт а на широкоэкранных. Что там будет с полноэкранным режимом: изображение выведется на часть экрана или растянется по горизонтали, или вообще заглючит. Не можешь протестить?
Lapp
Цитата(SKVOZNJAK @ 3.06.2009 9:34) *
Это только в винде блажь а под никсами столько наворотов для скриптовых языков что и более сложные вещи вполне реальны.
Это само собой)).

Цитата(SKVOZNJAK @ 3.06.2009 9:34) *
Сделана для црт 17' мониторов, но мне интересно, как она поведёт себя на жк или плазме и не только с соотношением сторон как в црт а на широкоэкранных. Что там будет с полноэкранным режимом: изображение выведется на часть экрана или растянется по горизонтали, или вообще заглючит. Не можешь протестить?
Запустил readme.bat

Он мне сделал моду 800х600 и показал вот это: Нажмите для просмотра прикрепленного файла

У меня Samsung SM T260, 25.5". Родное разрешение 1920х1200.
Видеть это на нем было немного странно)). Может, там есть настройка разрешения?
Lapp
Забыл сказать: у меня тут стоит Windows 7 Ultimate 64 bit, Beta.
SKVOZNJAK
Впечатления живого пользователя, не аникейщика, представляют большой научный и практический интерес.
Чем делался скриншот, фотоаппаратом? Если программой то соотношение высоты и ширины картинки такое же? Или на экране она растянута в ширину а на скрине нормальная. И как на ЖК панели хинты в таком разрешении не искажали буквы по сравнению со скриншотом? Скрин-то вроде идеальный. НО скрин не передаст как это пашет под линем, потому что в оригинальном разрешении 720х400 на црт мониторе левый край пикселя буквы раскрашен несколькими цветами, да и сеточка поверх наложена. Чтобы такое эмулировать на ЖК, их ресурсов никак не хватит - потребуется разрешение в десятки тысяч по горизонтали и вертикали smile.gif

>Может, там есть настройка разрешения?

Это же свободный софт, все нестандартные пожелания пользователя реализуются им лично путём правки исходника smile.gif А если серьёзно, и 800х600 отклонение от желаемого. Просто в свойствах экрана винды нет ни 720х400 ни 720х480 и выбрано меньшее зло. Прога-то создавалась по причине плохого запуска нортон командера в линуксе (для комфортного чтения фантастики и фентези, просмотра двоичных файлов) и воспроизводит в соответствии с новыми пожеланиями функции утилиты WPVIEW.EXE вместе с кусочком доса. Там миллионы цветов, но используются лишь 16 из тех что какими-либо ухищрениями можно получить в реальном досе. Образец шрифта получен сканированием скрина досовских символов 0-255. А поскольку в досе разрешение символов на экране 80х25 а символ 9х16 пикселей то и разрешение в идеале 720х400. То есть в глеаноре используемый шрифт определяет наилучшее разрешение smile.gif Нет шрифта который в разрешении 1920х1200 красиво сделает 25 строк по 80 символов, значит автор и не будет использовать такое разрешение smile.gif В будущем, когда среднего размера мониторов для ПК может и не быть, в программе может появиться эмуляция 17 дюймового монитора - нажал на кнопку и текст в прямоугольнике 16 дюймов а вокруг чёрная рамка. Может быть прямоугольник с текстом для удобства будет ездить по чёрному экрану. А вот когда (если) мониторы станут совсем крутыми можно будет полностью (смотри выше) эмулировать родное 720х400 со всей расцветкой пикселя. 21 век - высокие технологии)))
Lapp
Цитата(SKVOZNJAK @ 3.06.2009 17:43) *
Чем делался скриншот, фотоаппаратом? Если программой то соотношение высоты и ширины картинки такое же? Или на экране она растянута в ширину а на скрине нормальная. И как на ЖК панели хинты в таком разрешении не искажали буквы по сравнению со скриншотом?
Скрин делался обычной клавишей print screen)). Естественно, пропорции на нем не сохранены. Растяни его по горизонтали до нужного аспект рейшио и увидишь, как он выглядел. Но обрати внимание на черную полосу справа. Все изображение занимало не весь экран, оставляя край справа. Это несколько улучшало ситуацию, но не до конца. Реальные размеры изображения (без черной полосы справа) были такие: 345 мм (это реальный размер монитора по вертикали) на 495 мм. Тем самым, аспект рейшио было 1.43, тогда как 800х600 это 1.33.

Что касается шрифта, никаких видимых деффектов я не заметил. Все нормально)).

Слушай, а я для чтения использую AlReader. Он идет на смартфонах и КПК. Про Линукс не знаю, но скорее всего нет.

SKVOZNJAK
>Но обрати внимание на черную полосу справа.

Чёрная полоса справа задумана разработчиком, надеюсь ты уже догадался кто это ;) 80 символов идеально вписываются в разрешение 720, а на 800 остаются лишние 80 пикселей. А увеличивать количество символов в строке и корявить из-за этого алгоритм и привычки как-то мало смысла. А вот несколько лишних строк добавить чтобы 200 пикселей снизу занять - запросто.

>Он идет на смартфонах и КПК.

Таких зверюг в зоопарке автора не наблюдается а стало быть и ждать их поддежки в ближайшие годы бессмысленно smile.gif
Lapp
Цитата(SKVOZNJAK @ 3.06.2009 19:09) *
задумана разработчиком, надеюсь ты уже догадался кто это ;)
Подозрение, постепенно перерастающее в уверенность, появилось в самом начале)). Я гляну подробнее на досуге.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.