Stellen Sie zuerst sicher, dass Sie verstehen, wenn Sie Secure FTP (= FTPS, gemäß Ihrem Text) oder SFTP verwenden müssen (wie pro Tag Sie verwendet haben).
Weder wird von Windows-Befehlszeile ftp.exe
unterstützt. Wie Sie vorgeschlagen haben, können Sie WinSCP verwenden. Es unterstützt sowohl FTPS als auch SFTP.
Mit WinSCP, der Batch-Datei aussehen würde (für SFTP):
echo open sftp://ftp_user:[email protected] -hostkey="server's hostkey" >> ftpcmd.dat
echo put c:\directory\%1-export-%date%.csv >> ftpcmd.dat
echo exit >> ftpcmd.dat
winscp.com /script=ftpcmd.dat
del ftpcmd.dat
Und die Batch-Datei:
winscp.com /log=ftpcmd.log /script=ftpcmd.dat /parameter %1 %date%
Obwohl alle Fähigkeiten von WinSCP (insbesondere providing commands directly on command-line und die %TIMESTAMP%
syntax), vereinfacht die Batch-Datei:
winscp.com /log=ftpcmd.log /command^
"open sftp://ftp_user:[email protected] -hostkey=""server's hostkey"""^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv"^
"exit"
Für den Zweck von -hostkey
Schalter, siehe verifying the host key in script.
Einfacher als Zusammenbau des Skript/Batch-Datei manuell zu installieren und testen, um die Verbindungseinstellungen in WinSCP GUI und haben es dann generate the script or batch file for you:
Alles, was Sie zwicken müssen, ist die Quelldateinamen (Verwenden Sie die %TIMESTAMP%
Syntax wie zuvor gezeigt) und den Pfad zur Protokolldatei.
Für FTPS-, ersetzen die sftp://
im open
command mit ftpes://
(explicit TLS/SSL) oder ftps://
(implicit TLS/SSL). Entfernen Sie den Schalter -hostkey
.
winscp.com /log=ftpcmd.log /command^
"open ftps://ftp_user:[email protected] -explicit"^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv"^
"exit"
Sie müssen möglicherweise die -certificate
Schalter hinzufügen, wenn Zertifikat des Servers not issued by a trusted authority ist.
Wie beim SFTP ist es einfacher, die Verbindungseinstellungen in WinSCP GUI einzurichten und zu testen und dann generate the script or batch file for you zu haben.
Siehe eine vollständige conversion guide from ftp.exe
to WinSCP.
Sie sollten auch die Guide to automating file transfers to FTP server or SFTP server lesen.
Hinweis %TIMESTAMP#yyyymmdd%
statt %date%
zu verwenden: Ein Format von %date%
Variablenwert ist locale-spezifisch. Stellen Sie daher sicher, dass Sie das Skript in demselben Gebietsschema testen, in dem Sie das Skript tatsächlich verwenden werden. Zum Beispiel in meinem tschechischen Gebietsschema die %date%
löst zu čt 06. 11. 2014
, was könnte problematisch sein, wenn als Teil eines Dateinamens verwendet.
Aus diesem Grund unterstützt WinSCP (locale-neutral) timestamp formatting natively. Zum Beispiel %TIMESTAMP#yyyymmdd%
löst zu 20170515
an einem beliebigen Gebietsschema.
(ich bin der Autor von WinSCP)
Zuerst Sie müssen sicherstellen, dass der Server jede Art von sicheren Dateiübertragungsprotokollen unterstützt, zum Beispiel SFTP – golimar