39 votes

Comment scripter le téléchargement et le téléchargement FTP?

J'essaie de créer un fichier batch pour télécharger un fichier sur le serveur ftp. Si je le tape manuellement, cela fonctionne bien, mais lorsque j'exécute le fichier de commandes, il s'arrête une fois connecté ... il dit

 connected to domain.com.

220 microsoft ftp server

User(domain.com:(none)):
 

alors rien d'autre. Mais qu'est ce qu'il se passe ici?

Voici mon fichier batch:

 ftp www.domainhere.com 

user useridhere

passwordhere

put test.txt

bye

pause
 

69voto

Cheeso Points 87022

C'est une idée raisonnable de vouloir créer un script de session FTP de la manière que l'original de l'affiche de l'imaginer, et c'est le genre de chose s'Attendre à aiderait. Lot de fichiers sur Windows ne peut pas le faire.

Mais plutôt que de faire de roulage ou d'Attendre, vous pouvez trouver plus facile de faire un script FTP interaction avec Powershell. C'est un modèle différent, en ce que vous ne sont pas directement un script du texte à envoyer au serveur FTP. Au lieu de cela, vous allez utiliser Powershell pour manipuler des objets qui génèrent le FTP de dialogue pour vous.

Télécharger:

$File = "D:\Dev\somefilename.zip"
$ftp = "ftp://username:password@example.com/pub/incoming/somefilename.zip"

"ftp url: $ftp"

$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)

"Uploading $File..."

$webclient.UploadFile($uri, $File)

Télécharger:

$File = "c:\store\somefilename.zip"
$ftp = "ftp://username:password@example.com/pub/outbound/somefilename.zip"

"ftp url: $ftp"

$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)

"Downloading $File..."

$webclient.DownloadFile($uri, $File)

Vous avez besoin de Powershell pour ce faire. Si vous n'êtes pas au courant, Powershell est un interpréteur de commandes comme cmd.exe qui se déroule votre .les fichiers bat. Mais Powershell s'exécute .fichiers ps1, et est un peu plus puissant. Powershell est un add-on gratuit pour Windows et sera intégré dans les futures versions de Windows. Obtenez-le ici.

Source: http://poshcode.org/1134

27voto

cbeuker Points 685

Créez un fichier de commandes avec vos commandes

ie: commands.txt

 open www.domainhere.com
user useridhere 
passwordhere
put test.txt
bye
 

Exécutez ensuite le client FTP à partir de la ligne de commande: ftp -s: commands.txt

Remarque: cela fonctionnera pour le client FTP Windows.

Modifier: aurait dû avoir un saut de ligne après le nom d'utilisateur avant le mot de passe.

6voto

grawity Points 6338

Fichiers de commandes ne fonctionnent pas de cette façon. Ils ne se contentent pas de "type" tout - ils exécuter des commandes système, dans ce cas - ftp, attendre pour eux de revenir, et exécuter la commande suivante... donc dans ce cas, l'interprète est tout simplement en attente pour ftp à la sortie.

Si vous devez utiliser l' ftp à la commande, puis préparer un fichier de script (par exemple, commands.txt et exécutez ftp -s:commands.txt.

Mais à l'aide de cURL, ou un PHP/Perl/Python/quel que soit le script peut être une meilleure idée.

6voto

ruslander Points 1209

Je l'ai fait avec PowerShell. Vérifiez le ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X