Пакетный файл Windows - перемещение файла не работает только в планировщике задач - PullRequest
11 голосов
/ 19 июня 2009

У меня есть файл, который я пытаюсь переместить через пакетный файл по расписанию.

переместить sourceFile destinationFile.

Файл назначения находится на подключенном сетевом диске Z.

Так, например, команда будет:

переместить C: \ myfile.txt Z: \ myfile.txt

Когда я запускаю командный файл в Windows, дважды щелкнув по нему, он работает нормально. Но когда я планирую это через Task Scheduler, он не работает.

Я добавил в:

сетевое использование Z: \ myipaddress

чтобы узнать, была ли проблема в решении проблемы, но это также работает только с командным файлом напрямую, а не с планировщиком задач.

Задача выполняется с наивысшими правами администратора.

ОС = сервер Windows 2008.

Есть идеи?

Спасибо.

Ответы [ 5 ]

6 голосов
/ 15 января 2011

Я нашел ответ: зайдите в свойства задачи и UNCHECK «Запускать с наивысшими привилегиями», и это будет работать.

Ответ Ричарда побудил меня рассмотреть это подробнее. Я запустил cmd от имени администратора, не смог найти подключенный диск. Поэтому планировщик задач не может найти его, когда он работает от имени администратора, что делает «наивысшие привилегии».

2 голосов
/ 21 августа 2009

"Задача выполняется с наивысшими правами администратора." напомнил мне кое-что, это произошло в Vista и все еще происходит в Windows 7 (я только что обновил): я обнаружил, что мои подключенные сетевые диски недоступны, когда я запускаю командную строку от имени администратора.

Возможно, вы захотите попробовать запустить пакетный файл из командной строки с повышенными правами (администратор) и посмотреть, не возникает ли такая же ошибка, я подозреваю, что так и будет.

Возможно, вы можете запланировать выполнение команды "move" вместо запланированной задачи и передать ей параметры "C: \ myfile.txt Z: \ myfile.txt"? (Я не пробовал это)

1 голос
/ 19 июня 2009

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

net use z: \\ipaddress\shared_folder >c:\debug_log.txt 2>&1
move c:\myfile.txt z:\myfile.txt >>c:\debug_log.txt 2>&1

После запуска запланированной задачи вы сможете просмотреть c:\debug_log.txt для всех выходных данных и ошибок, которые произвели эти две команды.

1 голос
/ 19 июня 2009

Это звучит как проблема аутентификации - вы уверены, что у пользователя, выполняющего задачу, есть права администратора (или те же права, что и у пользователя, вошедшего в систему, когда «это работает»)?

0 голосов
/ 19 июня 2009

Вы пробовали использовать пути в стиле UNC вместо подключенных дисков?

что-то вроде (не проверено):

move \\server\share\file_path \\other_server\other_share\new_file_path 
...