Comment puis-je FTP plusieurs fichiers à partir de la ligne de commande?

25

Je voudrais FTP le contenu d'un répertoire, mais je n'arrive pas à trouver la bonne façon d'utiliser un caractère générique. Il semble que ce serait une chose courante à faire; toute mon approche est-elle fausse?

La commande est

ftp -s:"C:\Scripts\ftp01" ftpserver.domain.com

Le script appelé est ci-dessous. Mis à jour par billinkc.

username
password
ascii
cd "/destinationfolder"
lcd "C:\Backup"
mput *.bak
close
quit

Le script démarre, aucun fichier n'est copié et la session FTP reste ouverte.

230 User username Logged in Successfully
ftp> ascii
200 TYPE Command OK A
ftp> cd "/destinationfolder"
250 Directory successfully changed to "/destinationfolder"
ftp> lcd "C:\Backup"
Local directory now C:\Backup.
ftp> mput *.bak
mput 9829980.bak? close
mput 6406766.bak? quit
ftp>
ftp>

Conclusion

J'avais besoin d'ajouter le drapeau pour supprimer la commande PROMPT:

ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com
mmcglynn
la source

Réponses:

36

Avant d'émettre la mputcommande, exécutez une promptcommande pour désactiver le mode interactif. Une fois que c'est désactivé, il ne devrait pas vous demander de confirmer chaque fichier pour le mput(ou un mget).

Ƭᴇcʜιᴇ007
la source
3
Pour ceux qui se demandent "quelle est la syntaxe de cette promptcommande", vous tapez littéralement "invite" et elle fait basculer l'invite de vrai à faux.
Noumenon
2
Une autre façon de désactiver l'invite interactive consiste à utiliser l' -iindicateur sur la ftpcommande elle-même (par exemple ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com). Les documents décrivent l' -ioption comme: "Désactive l'invite interactive lors de plusieurs transferts de fichiers."
Jesse Webb
3

Je n'ai jamais essayé d'utiliser le chemin d'accès pour les dossiers locaux, mais je l'ai fait en changeant le répertoire local ( lcd):

username
password
ascii
cd "/destinationfolder"
lcd Backup
mput *.bak
close
quit
billinkc
la source
2

Essayez d'insérer la ligne prompt njuste avant la mputligne

horatio
la source
1

Utilisez la mputcommande pour mettre plusieurs fichiers.

Chris S
la source
1
Oui, c'est ce que j'utilise
mmcglynn
Derrière un pare-feu (en particulier SOHO ou des unités de qualité professionnelle bon marché)? Le ftpWindows intégré ne prend pas en charge le mode PASV, donc le transfert se bloquera et ne sera jamais terminé.
Chris S
1

Si vous avez des droits d'administrateur, vous pouvez installer ncftpput . Il est facile à utiliser et idéal pour les téléchargements FTP récursifs. Le commutateur pour le transfert récursif est -R.

Le logiciel est inclus dans la plupart des distributions Linux. Pour Windows, il est installable avec Cygwin .

Tim Haegele
la source
1

Comme Tim Haegele l'a mentionné, ncftp le fait très bien sous Linux, si vous êtes capable et désireux de l'installer:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01
Collin Anderson
la source
0

C'est le script que j'ai utilisé et qui a fonctionné pour moi.

Pour ftp1.bat (script):

ftp -i -s:\tmp\ftp.txt

Pour ftp.txt (script):

Open ip
username
password
prompt
lcd C:\YourFolder\YourFolder
binary
cd /DestinationFolder
prompt
mput *.bak
cd ..
disconnect
quit

Peut-être qu'il y a des pièces qui ne sont pas nécessaires mais je le mets comme ça a fonctionné pour moi, j'espère que cela aide

Adrian Chacon
la source