A resposta de Jesper mostra como fazer isso de uma maneira que mais se aproxima do modo como a pergunta foi escrita.
Eu proponho outra solução: não use ftp. O FTP não oferecerá segurança em uma rede. Também pode ser problemático em determinados projetos de rede, especialmente se o NAT for usado ou quando um firewall for usado. Esses problemas provavelmente não existirão agora se os uploads FTP manuais estiverem funcionando bem, mas poderão começar a existir se alguém fizer alterações. Por exemplo, problemas podem existir se você substituir um modem DSL por outro modem DSL que ofereça recursos diferentes.
A solução preferida é não usar o FTP. O que você pode usar, em vez disso, pode ser limitado com base no que o host fornece como uma opção. Uma ótima alternativa é o SFTP, implementado com o PSFTP.EXE do PuTTY. Pode haver alguma ambiguidade, pois há várias variações seguras de FTP, como FTPS. SCP, implementado com o PSCP do PuTTY, pode ser um pouco mais fácil de usar em alguns casos, então eu sugiro começar com isso.
Para fazer isso, primeiro pegue os arquivos do site de download do PuTTY. O link oferece o pscp.exe e o arquivo psftp.exe similar. O the.earth.li/~sgtatham/putty/latest/x86/… (para a versão 0.63, que é a versão mais recente no momento da redação deste artigo) pode ser mais simples para pessoas que preferem passar por um processo de instalação fácil usando um GUI, enquanto o arquivo putty.zip também contém putty.exe e pscp.exe e psftp.exe
A primeira versão do seu arquivo de lote será algo parecido com isto:
C:\Program Files\PuTTY\PSCP.exe -l username C:\dir\stuff\to\upload*.* remoteSever:.
Observe o período no final, que especifica o local onde os arquivos serão enviados. Personalize isso conforme necessário.
Uma vez que você tenha trabalhado bem, você vai querer objetar que o usuário precisa digitar uma senha. Sim, bem, isso pode ser resolvido, mas isso é apenas um pouco mais de trabalho, mas geralmente é uma opção por servidores que suportam o uso de PSFTP ou PSCP. Você provavelmente desejará usar o PuTTYGen para criar uma chave. Salve a chave privada no formato OpenSSH (não o formato * .PPK preferido do PuTTYGen). Essa chave privada precisará ir para o servidor. Usar o PuTTY provavelmente será uma ferramenta mais fácil para garantir que a chave privada seja instalada onde precisa estar. Depois que a chave privada é manipulada, o arquivo em lotes pode ser modificado para usar:
C:\Program Files\PuTTY\PSCP.exe -l username -i C:\mykeys\mykey.pub C:\dir\stuff\to\upload*.* remoteSever:.
Se o PSCP estiver funcionando bem, modernize um pouco as coisas experimentando o PSFTP.exe. Se isso funcionar, isso é um pouco preferível, já que os autores do OpenSSH observam que o SFTP é um protocolo mais desenvolvido do que o SCP.
Alternativas são usar protocolos diferentes de FTP, SFTP ou SCP, como HTTP (S). HTTP (S) provavelmente pode ser automatizado usando WGET com --post-file = filename, mas você precisará descobrir qual URL seu host da web usa para permitir uploads HTTP. Na verdade, cURL é preferível ao WGET. Ele tem uma licença mais branda, e acredito que o código seja mais recente e mais simples também.
Pode haver outras implementações disponíveis também. O WinSCP suporta um cliente de linha de comando chamado winscp.com (e há também o winscp.exe que fornece a GUI). O host de scripts do Windows pode usar HTTP usando um objeto incorporado no Microsoft Windows, portanto, não há necessidade de baixar um arquivo executável. Mais uma vez, refiro-me à resposta de Jesper como uma resposta que você pode encontrar funciona muito bem para você, e que usa um software que normalmente é pré-instalado com o Windows, portanto nenhum software extra precisa ser baixado. Estou apostando que existem muitas outras opções disponíveis ... você tem muitas opções que você pode escolher.