![]() |
Автоматическая печать файлов из 1ой папки
Доброе время суток! Граждане программисты, подскажите как реализовать мою задачку:
есть некая прога, которая создает *.prt-0, *.prt-1, *.prt-2, *.prt-3 (это обычные txt-эшки) и размещает их по пути [сетевой диск:]\\год\месяц\день\. Нужно автоматически распечатать файлы на локальном принтере (LPT) (как только они появляются) из этой папки. Еще проблема в том, что запись и изменение в папке [сетевой диск:]\\год\месяц\день\ запрещено. я кое что нарыл\пепеделал: HTML код:
@Echo Off и имена файлов идут просто счетчиком по очереди, но с маленьким подвыподвертом ... когдато там начались 01168608.prt-1 01168608.prt-2 01168609.prt-0 01168610.prt-0 01168611.prt-0 ~~~~~~~~~~~ 01168649.prt-0 01168652.prt-1 01168652.prt-2 01168652.prt-3 01168650.prt-0 01168651.prt-0 ... ну и продолжаются |
Ну в принципе у тебя все в батнике и написано
Чуть доработать надо было и все Пояснения: set file=file нужно только для первого if. скрипт берет последний созданный файл исравнивает его с file если равно то не печатет если не равно то печатает. строчкой ping 127.0.0.1 -n 2 >>null указываешь частоту проверки. |
Почемуто прога не печатает новый, поповший в папку, файл; и если там 2-3 файла сразу, печатается только 1й. значит перебор не работает. и не запускается при пустой source папке. ща попробую разобраться. подскажи, что за %$d% и как она работает?
Molchune, спасибо за код. есть хоть за что зацепиться и дорабоать |
Цитата:
Цитата:
Значи смотри(там же спецом оставлены echo чтобы видно было что за переменные) Смотри этим вот Код:
for /f "delims=" %%d in ('dir /b/a-d/od "%Folder%\*.prt"') do set "$d=%%~nxd" Смысл был в том, что файло сыпется меньше чем 1 раз в секунду. тогда берется последний созданный файл и печатается. можно тогда задержку убрать (ping) мб будет лучше. Если чаще, то тогда надо сравнивать содержимое папки с какой то величиной, то есть надо будет сохранять данные(dir/a-d/b ) b и сравнивать на прошлый момент времени а разницу печатать (у тебя было условие не сохраняя) хотя можно мб сохранять в %temp%? |
бывает попадают файлы и по 3 сразу
01168685.prt-3 29.08.2012 21:19:43 01168685.prt-2 29.08.2012 21:19:43 01168685.prt-1 29.08.2012 21:19:43 поэтому, скорее всего, нужно толи по имени.расширению сравнивать, толи весь список, и печатать разницу. но вот все равно не печатает при добавлении в папку нового файла |
хз.. я когда ручками создаю файл в папке он пишет что будет печатать.
а отсортируй в папке файлы по дате создания. какой последний будет? Такой же как и в скрипте? |
Код:
@echo Off echo %%i Здесь надо файл распечатать нарисуйте свою команду для распечатки. Идея решения: Команда xcopy /L выдаёт список файлов (реальное копирование не происходит) за исключением списка файлов, указанных в файле под ключом /EXCLUDE. Кстати, /S указывает на просмотр в поддиректориях, соответственно заботиться о указании в пути папки с датой не обязательно (если, конечно, по сетевому пути не содержится других данных. Батник делает рядом с собой файл с именем батника и расширением EXCLUDE (имя и расширение можете сами придумать (в переменной Index), я решил, что так логичнее ). И далее в этот файл записываются полные имена уже обработанных файлов. То есть, батник должен быть в том месте, где у Вас есть права на запись, для обрабатываемых файлов расположение в месте для чтения. То есть в этом файле хранится список всех ваших обработанных файлов, при повторном запуске батника они уже обрабатываться не будут. Я не привязываюсь к дате файлов, я анализирую, обрабатывались ли они. Можно, конечно, формировать пути к файлам на основе текущей даты, но это уж Вам решать, моему батнику это никак не противоречит Как организовать цикл по времени - дело вкуса. Я бы поместил батник в назначенные задания. |
я примерно так и собирался сделать (это наверно один подходящий вариант) : проверять папку на наличие файлов, составлять список файлов, печатать, потом снова проверять папку, и сверять со списком, разницу печатать. поставить все на scheduler.
Цитата:
надо как то так ??? Код:
print /D:\\comp\hp1320 %Share0%\%Tmp% я вот конкретно не пойму, как задать на печать "разнину" между реальным списком файлов, и уже напечатанным??? |
Цитата:
Код:
print /D:\\comp\hp1320 %%i |
Цитата:
Цитата:
|
Блин, работает!!! Эврика! теперь я начинаю немного понимать. Спасибо большое.
PS Надо будет в будущем допридумать hide режим и еще что нидь. |
Время: 09:02. |
Время: 09:02.
© OSzone.net 2001-