3

Я хочу, чтобы запланированная задача Windows выполняла пакетный файл FTP, который загрузит некоторые файлы на мой сервер. Если я запускаю приведенный ниже аргумент из командной строки, то он выполняется успешно.

ftp -i -s:C:\<path-to-file>\ftp.dat

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

Я создаю задачу через графический интерфейс планировщика задач в Windows Vista. На вкладке «Общие» я запустил независимо от того, вошел ли пользователь в систему и работает ли он с наивысшими привилегиями.

Под действиями установлен запуск C:\\Windows\System32\cmd.exe .

И аргумент

ftp -i -s:C:\<path-to-file>\ftp.dat

Файл ftp.dat выглядит так:

open ftp.mysite.co.uk
myUsername
myPassword
put C:\<path-to-file>\file.xml
put C:\<path-to-file>\file2.xml
bye

Я не понимаю, почему это прекрасно работает вручную из командной строки, но не из запланированной задачи.

3 ответа3

0

Он должен работать, когда вы добавляете "/c" в качестве параметра для cmd.exe для запуска команды ftp:

C:\Windows\System32\cmd.exe
/c ftp -i -s:C:\<path-to-file>\ftp.dat

Вы также можете попробовать это «целое» в командной строке:

cmd /c ftp -i -s:C:\<path-to-file>\ftp.dat

Без "/c" он просто открывает консоль внутри консоли, обратите внимание на выполнение команды.

0

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

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

ftp -i -s:C:\<path-to-file>\ftp.dat >c:\ftp.log

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

0

Мое предложение будет запускать сценарий VBScript в запланированной задаче:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "C:\Windows\System32\ftp.exe -i -s:C:\<path-to-file>\ftp.dat", , True

У меня всегда было гораздо больше удачи с планированием сценариев VBScript, чем с попытками запланированных команд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .