|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автоматическая печать файлов из 1ой папки |
|
|
CMD/BAT - [решено] Автоматическая печать файлов из 1ой папки
|
Новый участник Сообщения: 16 |
Доброе время суток! Граждане программисты, подскажите как реализовать мою задачку:
есть некая прога, которая создает *.prt-0, *.prt-1, *.prt-2, *.prt-3 (это обычные txt-эшки) и размещает их по пути [сетевой диск:]\\год\месяц\день\. Нужно автоматически распечатать файлы на локальном принтере (LPT) (как только они появляются) из этой папки. Еще проблема в том, что запись и изменение в папке [сетевой диск:]\\год\месяц\день\ запрещено. я кое что нарыл\пепеделал:
но это не подошло, т.к. нельзя делать изменения в source папке. и имена файлов идут просто счетчиком по очереди, но с маленьким подвыподвертом ... когдато там начались 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 ... ну и продолжаются |
|
Отправлено: 19:27, 29-08-2012 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Ну в принципе у тебя все в батнике и написано
Чуть доработать надо было и все Пояснения: set file=file нужно только для первого if. скрипт берет последний созданный файл исравнивает его с file если равно то не печатет если не равно то печатает. строчкой ping 127.0.0.1 -n 2 >>null указываешь частоту проверки. |
Последний раз редактировалось Molchune, 30-08-2012 в 18:53. Отправлено: 15:55, 30-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Почемуто прога не печатает новый, поповший в папку, файл; и если там 2-3 файла сразу, печатается только 1й. значит перебор не работает. и не запускается при пустой source папке. ща попробую разобраться. подскажи, что за %$d% и как она работает?
Molchune, спасибо за код. есть хоть за что зацепиться и дорабоать |
Последний раз редактировалось aRHangel2013, 31-08-2012 в 11:50. Отправлено: 10:18, 31-08-2012 | #3 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Цитата aRHangel2013:
Цитата aRHangel2013:
Значи смотри(там же спецом оставлены echo чтобы видно было что за переменные) Смотри этим вот мы получаем последний добавленный файл. если в момент времени их будет два файлы то уж только последний он распечатет. Смысл был в том, что файло сыпется меньше чем 1 раз в секунду. тогда берется последний созданный файл и печатается. можно тогда задержку убрать (ping) мб будет лучше. Если чаще, то тогда надо сравнивать содержимое папки с какой то величиной, то есть надо будет сохранять данные(dir/a-d/b ) b и сравнивать на прошлый момент времени а разницу печатать (у тебя было условие не сохраняя) хотя можно мб сохранять в %temp%? |
||
Отправлено: 11:55, 31-08-2012 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать бывает попадают файлы и по 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 поэтому, скорее всего, нужно толи по имени.расширению сравнивать, толи весь список, и печатать разницу. но вот все равно не печатает при добавлении в папку нового файла |
|
Отправлено: 12:55, 31-08-2012 | #5 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать хз.. я когда ручками создаю файл в папке он пишет что будет печатать.
а отсортируй в папке файлы по дате создания. какой последний будет? Такой же как и в скрипте? |
Отправлено: 13:27, 31-08-2012 | #6 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать @echo Off cls Set Share0="E:\DDDDD\*.prt-0" Set Share1="E:\DDDDD\*.prt-1" Set Share2="E:\DDDDD\*.prt-2" Set Share3="E:\DDDDD\*.prt-3" Set Index=%~n0.EXCLUDE if Not Exist %Index% Echo %Index% >%Index% Call :Printer %Share0% Call :Printer %Share1% Call :Printer %Share2% Call :Printer %Share3% GoTo:Eof :Printer FOR /F "usebackq delims=" %%i IN (`xcopy /L /S /EXCLUDE:%Index% %1 "%Tmp%\" 2^>nul^`) DO ( If Exist "%%i" ( echo %%i Здесь надо файл распечатать echo %%i >>%Index% ) ) echo %%i Здесь надо файл распечатать нарисуйте свою команду для распечатки. Идея решения: Команда xcopy /L выдаёт список файлов (реальное копирование не происходит) за исключением списка файлов, указанных в файле под ключом /EXCLUDE. Кстати, /S указывает на просмотр в поддиректориях, соответственно заботиться о указании в пути папки с датой не обязательно (если, конечно, по сетевому пути не содержится других данных. Батник делает рядом с собой файл с именем батника и расширением EXCLUDE (имя и расширение можете сами придумать (в переменной Index), я решил, что так логичнее ). И далее в этот файл записываются полные имена уже обработанных файлов. То есть, батник должен быть в том месте, где у Вас есть права на запись, для обрабатываемых файлов расположение в месте для чтения. То есть в этом файле хранится список всех ваших обработанных файлов, при повторном запуске батника они уже обрабатываться не будут. Я не привязываюсь к дате файлов, я анализирую, обрабатывались ли они. Можно, конечно, формировать пути к файлам на основе текущей даты, но это уж Вам решать, моему батнику это никак не противоречит Как организовать цикл по времени - дело вкуса. Я бы поместил батник в назначенные задания. |
------- Последний раз редактировалось megaloman, 01-09-2012 в 12:58. Отправлено: 12:25, 01-09-2012 | #7 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать я примерно так и собирался сделать (это наверно один подходящий вариант) : проверять папку на наличие файлов, составлять список файлов, печатать, потом снова проверять папку, и сверять со списком, разницу печатать. поставить все на scheduler.
Цитата:
надо как то так ??? %Share% - это ж путь к файлу, а надо печатать разницу я вот конкретно не пойму, как задать на печать "разнину" между реальным списком файлов, и уже напечатанным??? |
|
Отправлено: 23:29, 03-09-2012 | #8 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Цитата aRHangel2013:
Так как в переменной %%i уже содержится полный путь до файла |
|
Отправлено: 10:08, 04-09-2012 | #9 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
|
||
------- Последний раз редактировалось megaloman, 04-09-2012 в 13:12. Отправлено: 12:34, 04-09-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Запрет на печать содержимого папки | SanCho | Microsoft Windows 7 | 3 | 15-05-2012 17:32 | |
Разное - [решено] Автоматическая печать на принтер | Magikanin2006 | Microsoft Windows 7 | 2 | 12-05-2011 12:30 | |
Печать файлов с расширением prn | Boikov | Хочу все знать | 8 | 23-04-2011 18:24 | |
Разное - [решено] Печать файлов из Explorerа | st.andrew | Microsoft Windows 2000/XP | 6 | 10-02-2009 15:58 | |
Офис и Текст - Печать PRN файлов (печать в файл) | ivieDVeD | Программное обеспечение Windows | 12 | 13-04-2006 16:49 |
|