![]() |
уникальное имя для файла
Добрый день!
Задача: с помощью БАТ файла копировать файл в указанную категорию и при этом присваивать ему уникальное имя, чтобы избежать повторения имен, а как следствие, затирания одного файла другим. Предполагаемый вариант решения: присвоить файлу имя состоящее из "текущая дата"-"текущее_время".jpg Желательно, чтобы время было указано с долями секунд, чтобы даже если за секунду копируется 2 файл, чтобы один не испортил другой Возможно есть и другие варианты решения, но я их не знаю. Помогите, пожалуйста. move C:\fest\1\*.jpg C:\fest\big\???.jpg Вот файл целиком: echo off :loop rem постояннос следит за появлением файлов в дериктории :test if exist C:\fest\*.jpg goto go goto test :go rem папка 1 нужна для того, чтобы программа не пропускала файлы move C:\fest\*.jpg C:\fest\1 rem изменяет размер файла, в конце строки стоит адрес конечного файла а после него - начального res -resize 180 135 -rotate 90 -sharpen 20 -out jpeg -o C:\fest\small\%%.jpg C:\fest\1\*.jpg rem переносим начальный файл в другую дерикторию, чтобы предотвратить его повторную обработку move C:\fest\1\*.jpg C:\fest\big\%date%.jpg goto loop |
Код:
echo off PS. Не тестировал ЗЫЫ. Что за res? Синтаксис как у nconvert (Xnview) |
Спасибо большое! Работает! Вы мне здорово помогли. Я и не думал, что всё так замечательно получится. И код весь переписали гораздо лучше чем у меня было. Правда, я в нем теперь половину команд не понимаю :)
Вот этот самый res: https://docs.google.com/viewer?a=v&p...EwN mM3&hl=ru А можно сделать: 1. чтобы файлы C:\fest\small\%%.jpg сразу же получали такое же имя как и "c:\fest\big\%name:,=%" . Так, чтобы имя большого файла и маленького совпадало. Я пытался как-то переделать сам, но у меня ничего не получилось. 2. Чтобы бат-файл запускался в фоновом режиме и не на экране ни на панели задач не отображался. Тогда я смогу просто в автозагрузку его закинуть и пользователю даже не нужно будет о нем беспокоиться. Ещё раз, спасибо Вам большое! |
Цитата:
Код:
echo off Цитата:
Код:
hstart /noconsole "1.cmd" Код:
Set objShell = WScript.CreateObject("WScript.Shell") |
"ЗЫ. Я не знаю объем поступающих в обработку файлов, но может быть будет лучше вставить в :loop небольшую паузу? Такой мониторинг, в холостую, должен серьезно грузить проц."
Спасибо! Действительно, процессор был постоянно загружен на 100%. Поискал в интернете, нашел такое решение: есть некая программка sleep, говорят, она стандартная, скопировал её в папку Виндовз, а в скрипте написал вот так: :loop sleep 1 for %%i in (c:\fest\*.jpg) do call:move "%%i" goto:loop В общем, с вашей помощью все задачи, которые стояли передо мной выполнены. Ещё раз спасибо, всё работает замечательно. Прямо желание появилось какие-то программы писать. Только жалко, что больше ничего не нужно. Может заняться разработкой какого-нибудь вируса? :) |
Время: 17:50. |
Время: 17:50.
© OSzone.net 2001-