2017-05-30 2 views
1

Je transfère des fichiers via PSFTP vers un serveur tiers à l'aide de fichiers batch. Lors du transfert de fichiers, en raison de problèmes de mise en mémoire tampon, les fichiers sont brisés/ne sont pas transférés complètement. En guise de solution, une tierce partie nous a demandé de nommer chaque fichier avec '.new' avant de commencer le transfert de fichiers et de supprimer '.new' une fois que le fichier a été transféré entièrement/avec succès.PSFTP renommer le fichier après le transfert terminé

Veuillez me faire savoir les commandes de script Batch à mettre en œuvre ci-dessus. S'il vous plaît laissez-moi savoir si vous avez besoin d'informations supplémentaires.

+0

'psftp' a une commande' ren' pour renommer un fichier sur un ordinateur distant. À l'invite 'psftp', tapez' help' et appuyez sur 'Enter'. Le 'ren' serait placé dans le script ftp utilisé pour transférer le fichier. – lit

Répondre

0

Pour renommer un fichier, utilisez mv command (ou il est ren alias):

put c:\local\path\file /remote/path/file.new 
mv /remote/path/file.new /remote/path/file 

Bien que si vous transférez plusieurs fichiers en utilisant un caractère générique, cela ne vous aidera pas.

Une solution relativement simple pour plusieurs fichiers utilise un dossier de téléchargement temporaire. Après la fin de téléchargement, vous pouvez déplacer tous les fichiers à la fois dans le dossier cible:

mput c:\local\path\* /temp/path 
mv /temp/path/* /remote/path 

Pour une discussion similaire, voir aussi SFTP file lock mechanism.


Si vous avez besoin d'utiliser la solution avec des extensions, vous pouvez utiliser WinSCP, car il vous permet d'utiliser automatiquement un nom de fichier temporaire pour le téléchargement. Bien qu'il utilise .filepart, pas l'extension .new.

put -resumesupport=on c:\local\path\* /remote/path/ 

Voir article WinSCP sur Uploading to temporary file name pour plus de détails.

L'article montre également (un moyen plus compliqué) solution using WinSCP .NET assembly that allows you to use even the .new extension.

Si vous choisissez de basculer vers WinSCP, il existe un guide for converting psftp script to WinSCP.

(je suis l'auteur de WinSCP)