クライアントは、FTPを介してネットワークから指定されたファイルを転送する必要があります。指定したファイルのいずれかが変更されるたびに、転送が自動的に呼び出される必要があります。この目的には、RoboCopyが最適です。ただし、RoboCopyはFTPアドレスへの転送をサポートしていません。したがって、私はFTPサイトをクライアントサーバーのドライブ文字にマップしたいと思います。 FtpUse は、FTPをドライブ文字にマッピングするのに最適です。マッピングは期待どおりに機能し、WindowsエクスプローラーでFTPサイトのコンテンツを確認できます。マップされたFTPドライブにデータを書き込むこともできます。
したがって、次のコマンドを使用して、ローカルマシンでドライブQにFTPサイトをマッピングしたとします。
ftpuse Q: [ftp address] [password] /USER:[username]
次のコマンドでRoboCopyをセットアップしてみてください。
robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30
RoboCopyを実行すると、次のエラーメッセージで失敗します。
エラー87(0x00000057)ファイル[ソースディレクトリ]\test2.xlsmをコピーしていますパラメータが正しくありません
ドライブをマップしてsammeユーザーアカウントでRoboCopyコマンドを実行しようとしましたが、問題が解決しないようです。
誰かが助けてくれることを願っています。
どんな助けでも大歓迎です。
WinSCPをミラーモードで使用してみてください。 WinSCPはここからダウンロードできます。
http://winscp.net/eng/download.php
WinSCPを使用すると、ドライブをマップする必要がなくなります。ドライブを直接FTPに接続し、作業を行います。
これをROBOCOPYと同様にする小さなBATスクリプトを次に示します。
注意:ローカルフォルダーに一致しないリモートファイルを削除する-deleteオプションを追加しました。ローカルパスにスペースがあるため、二重引用符が必要です。
set FTPSERVER=v2008
set FTPUSER=username
set FTPPASS=password
set FTPLOCALE=C:\Users\User\Desktop\Local folder
set FTPREMOTO=/public
winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/" ^
"synchronize remote -delete ""%FTPLOCALE%"" %FTPREMOTO%"
既にWindowsを使用しているので、Power Shellを使用してこれを実行しませんか?新しいファイルのみを指定し、組み込みのWindowsツールを備えたWindowsタスクスケジューラでタスクをスケジュールできます。組み込みの機能に料金を支払う必要はありません。私が使用しているのは安全なFTP接続ではないと思います。簡単なスクリプトで、非常に柔軟で安価なソリューションが得られます。特定の基準に基づいてFTPファイルをプルおよびプッシュするいくつかのPower Shellスクリプトがあります。
コピーが実行されると、ファイルを作成する権限がありますが、上書きすることはできません。ファイルの大きさはどれくらいですか?ファイルを編集するたびに収集したものから、ファイル全体が再びコピーされ、古いファイルを新しいバージョンで上書きします。ファイルの変更点を評価して新しいデータを追加する方法はありませんか?データを追加しようとしておらず、使用しているツールではファイルを上書きできないため、理論的には、新しいファイルを所定の場所にコピーする直前に検出されたときに古いファイルを削除する何らかの種類の中間スクリプトを作成できます。それは不格好なソリューションのように聞こえますが、それから全体も不格好なプロセスのように聞こえます。個人的に私はここでの目標などを再評価しますが、私は質問に答えるだけに固執しようとしています。幸運を!