現在、csvファイルを別の場所にあるFTPサーバーに転送するバッチスクリプトが別のサーバーにあります。私のスクリプトはこれに似ています:
echo user ftp_user> ftpcmd.dat
echo password>> ftpcmd.dat
echo put c:\directory\%1-export-%date%.csv>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.MyFTPSite.com
del ftpcmd.dat
安全な送信を要求したい場合、スクリプトはどのように更新されますか?
ありがとう。
セキュアFTP (=テキストによるFTPS)または [〜#〜] sftp [〜#〜] (使用したタグごとに)。
どちらもWindowsコマンドラインftp.exe
ではサポートされていません。提案したように、 WinSCP を使用できます。 FTPSとSFTPの両方をサポートしています。
WinSCPを使用すると、バッチファイルは次のようになります(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
そしてバッチファイル:
winscp.com /log=ftpcmd.log /script=ftpcmd.dat /parameter %1 %date%
WinSCPのすべての機能(特に コマンドラインでコマンドを直接提供する および %TIMESTAMP%
構文 )を使用しますが、バッチファイルは次のように簡略化します。
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"
-hostkey
スイッチの目的については、 スクリプト内のホストキーの検証 を参照してください。
スクリプト/バッチファイルを手動で組み立てるよりも簡単なのは、WinSCP GUIで接続設定をセットアップしてテストし、それを使用することです スクリプトまたはバッチファイルを生成します :
微調整する必要があるのは、ソースファイル名(前述の%TIMESTAMP%
構文を使用)とログファイルへのパスだけです。
FTPSの場合は、 open
コマンド のsftp://
をftpes://
( explicit TLS/SSL )またはftps://
( implicit TLS/SSL =)。 -hostkey
スイッチを削除します。
winscp.com /log=ftpcmd.log /command ^
"open ftps://ftp_user:[email protected] -explicit" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
サーバーの証明書が 信頼できる機関によって発行されていない の場合は、-certificate
スイッチを追加する必要があります。
繰り返しになりますが、SFTPと同様に、WinSCP GUIで接続設定をセットアップしてテストし、それを スクリプトまたはバッチファイルを生成してください にする方が簡単です。
完全な ftp.exe
からWinSCPへの変換ガイド を参照してください。
FTPサーバーまたはSFTPサーバーへのファイル転送の自動化ガイド も読む必要があります。
%TIMESTAMP#yyyymmdd%
の代わりに%date%
を使用する場合の注意:%date%
変数値の形式はロケール固有です。そのため、実際にスクリプトを使用するのと同じロケールでスクリプトをテストしてください。たとえば、チェコ語のロケールでは、%date%
はčt 06. 11. 2014
に解決されます。これは、ファイル名の一部として使用すると問題になる場合があります。
このため、WinSCPは (locale-neutral)タイムスタンプのフォーマットをネイティブに をサポートします。たとえば、%TIMESTAMP#yyyymmdd%
は、どのロケールでも20170515
に解決されます。
(私はWinSCPの著者です)
組み込みのFTPコマンドには、セキュリティ機能がありません。代わりに cUrl を使用してください。スクリプト可能で、はるかに堅牢で、FTPセキュリティを備えています。