Запланированное задание и принтер

Я хочу просмотреть папку на моей 64-битной машине Win7 для новых файлов PDF и автоматически распечатать их, когда в папке есть файл PDF. После печати файл PDF следует переместить в подпапку. Итак, после некоторого исследования Google я сделал небольшой пакетный файл.

cd "D:\print"
for %%i in (*.pdf) do (
"C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" /print "%%i" 
timeout /T 10 /nobreak
move D:\print\*.pdf D:\print\printed
echo %%i
)

Я сохранил это в папке d:\print как print.cmd . Когда я запускаю cmd двойным щелчком, мой принтер начинает работать, и файл PDF перемещается в определенную мной подпапку (D:\print\printed).

Чтобы посмотреть папку, у меня возникла идея создать задачу по расписанию, которая будет повторять этот cmd-скрипт все 5 минут.

НО: Это не работает, когда скрипт запускается через запланированные задачи, принтер не работает - вместо этого работает «движение» файла.

Я ввел в запланированное задание:

Программа: C:\Windows\SysWOW64\cmd.exe

Аргумент: /c"d:\print\print.cmd"

Любая идея, почему я не могу получить доступ к принтеру через запланированное задание? Принтер подключен через usb.

Надеюсь, я смог предоставить необходимую информацию! Спасибо за ваши ответы!


person user3325687    schedule 09.03.2017    source источник
comment
move D:\print\*.pdf D:\print\printed должно быть move D:\print\%%i D:\print\printed, иначе все pdf будут перемещены после того, как будет напечатан только один. Не могу сказать, что я эксперт по запланированным задачам, но мне кажется, что принтер по умолчанию, определенный для пользователя, под которым выполняется запланированная задача, не является требуемым USB-принтером. Можете ли вы явно указать принтер в аргументах PDFXCview.exe?   -  person Magoo    schedule 09.03.2017
comment
Вы выбрали начало в папке? Вы запускаете cmd.exe, который делает рабочий каталог каталогом system32, который находится на диске C:. Поэтому, когда вы меняете каталог, вы должны использовать параметр /D, чтобы сделать рабочий каталог диском D:. Когда вы дважды щелкаете пакетный файл, чтобы запустить его, рабочим каталогом является диск D:, потому что именно там хранится и выполняется сценарий.   -  person Squashman    schedule 09.03.2017
comment
Ух ты! Я добавил d:\print в качестве рабочего каталога в свою задачу, и это сработало мгновенно! Огромное спасибо! Теперь мне нужно сделать несколько тестов и проверок, и надеюсь, что смогу снова попросить вас, ребята, помочь мне улучшить скрипт ;)   -  person user3325687    schedule 09.03.2017
comment
Если пакетный файл находится в D:\Print, вы можете просто добавить PushD %~dp0, чтобы D:\Print также был рабочим каталогом.   -  person Rawns    schedule 09.03.2017


Ответы (1)


  1. Измените эту строку: move D:\print\*.pdf на move /Y D:\print\%%i

  2. Укажите запланированной задаче фактически запустить ваш пакетный файл вместо вызова cmd и указания пути к вашему сценарию в аргументах.

Вы также можете отредактировать пакетный файл и закодировать его так, чтобы он зацикливался каждые 5 минут, чтобы вам нужно было запускать его только один раз:

    PushD %~dp0    
    :start
    for %%i in ("D:\print\*.pdf") do (
    "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" /print "%%i" 
    move /y "%%i" "D:\print\printed"
    echo %%i
    )
    timeout /T 300 /nobreak
    goto start
person Rawns    schedule 09.03.2017
comment
%%i — это полный путь к файлу, поэтому команда перемещения может быть просто такой. move /y "%%i" "D:\print\printed" - person Squashman; 09.03.2017
comment
Пробовал. Когда в папке 3 файла, он печатает первый файл и перемещает его, затем печатает второй файл и перемещает его и так далее. работает вполне нормально. Что лучше, сделать задачу, которая срабатывает каждые 5 минут или работать с т 300 и идти на старт. Тогда я должен запускать задачу только при включении ПК, что бы вы мне посоветовали? Есть ли возможность свернуть окна CMD или скрыть их, когда они работают? - person user3325687; 10.03.2017
comment
Либо действительно. Я предполагаю, что задача, запускаемая каждые пять минут, обеспечит некоторую избыточность, поэтому, если окно cmd выйдет из строя, задача будет перезапускать его каждые пять минут, а не ждать, пока кто-то выйдет из системы и снова войдет. Настройте выполнение запланированной задачи с использованием системной учетной записи, чтобы она не была видна вошедшему в систему пользователю. - person Rawns; 10.03.2017