O arquivo de lote FTP funciona da linha de comando, mas não da tarefa agendada

3

Eu quero que uma tarefa agendada do Windows execute um arquivo de lote FTP que carregará alguns arquivos para o meu servidor. Se eu executar o argumento abaixo a partir da linha de comando, ele será executado com êxito.

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

Quando tento e executo isso através de uma tarefa agendada, ele sempre chega ao processo de tarefa criado e permanece assim; não completa ou falha. Eu também tentei isso sem os comandos put e ele ainda faz isso, então não é como se ele estivesse esperando para transferir os arquivos.

Estou criando a tarefa por meio da GUI do agendador de tarefas no Windows Vista . Sob a aba geral eu tenho executado se o usuário está logado ou não e executado com o maior conjunto de privilégios.

Em ações, está definido para executar C:\Windows\System32\cmd.exe .

E o argumento é

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

O arquivo ftp.dat é assim:

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

Eu não entendo porque isso funciona perfeitamente bem manualmente a partir da linha de comando, mas não da tarefa agendada.

    
por Tom smith 08.08.2013 / 17:23

3 respostas

0

Deve funcionar quando você adiciona "/ c" como parâmetro para cmd.exe para executar o comando ftp:

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

Você também pode tentar essa coisa 'inteira' na linha de comando:

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

Sem "/ c" basta abrir um console dentro do console, observe a execução do comando.

    
por 23.09.2014 / 09:54
0

Minha sugestão seria executar um script VBScript em uma tarefa agendada:

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

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

Sempre tive muito mais sorte com o agendamento de scripts VBScript ao tentar agendar comandos.

    
por 06.09.2013 / 08:37
0

Parece que ainda há um problema de permissões ou acesso a arquivos, pois quando não estão sendo executados com uma interface de usuário, algumas partes do ambiente não estão disponíveis. É provável que um arquivo ou caminho não esteja disponível, pois não sabemos para onde vai ...

A melhor coisa a fazer é registrar a saída de ftp para ver se há erros. Seria útil ter de qualquer maneira para rever se há algum problema futuro como este:

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

Você poderia colocar o arquivo de log no arquivo, mas ele não fornecerá um log se você não puder acessar a pasta por algum motivo, então, até que você decida que é melhor mantê-lo na raiz. Depois de eliminar esse problema, você pode movê-lo para um local mais apropriado.

    
por 23.09.2014 / 10:51