アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんわ。
今回はコマンドプロンプトのFTPコマンドについて質問させてください。

処理概要
Windowsバッチにて、サーバA(Windows)からサーバB(UNIX)にFTPでファイルを複数送りたい
その際、FTPが成功したか失敗したかをログファイルに出力したい。

以下プログラム
set logDir=C:\hogehoge\log\
set settingFileName=C:\hogehoge\upload.ftp
set execDate=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set logFileName=%logDir%log_%execDate%.txt

echo FTPバッチ起動 >> "%logFileName%"
cd C:\hogehoge
echo FTP開始 >> "%logFileName%"

ftp -s:"%settingFileName% >> "%logFileName%"

upload.ftpというファイルには以下のように記述しております。
ftp
open サーバIP ポート
ログインID
パスワード
binary
prompt
mput *.csv
bye

この2種類のファイルで、FTPは出来るのですが、
どうにかして成功/失敗を判断したいです。

どなたかわかる方、ご教授お願いいたします。


補足
UNIX上のバッチ処理(Cシェル)でもファイルがあるかどうか判断していますが、
WindowsでFTP失敗の場合、メールを送りたくてこのようなバッチを作成しました。

A 回答 (2件)

>そもそも、転送元のファイルサイズと、転送したファイルサイズが違っているので、



binモードなのにファイルサイズと転送サイズが違っているのなら、転送が失敗していると言うことです。

>また、相手側の都合上WindowsにFTPサーバを常駐させる事はNGらしく、mgetもできません・・・。

??こちらがWindowsで、相手がUnix(FTPサーバあり)なのでは?
何の問題も無いと思いますが?混乱してませんか?落ち着いてください。
    • good
    • 0
この回答へのお礼

>binモードなのにファイルサイズと転送サイズが違っているのなら、転送が失敗していると言うことです。

なるほど。
見た感じちゃんと転送できてそうでしたが、ちゃんと調べる必要がありますね・・・。

>??こちらがWindowsで、相手がUnix(FTPサーバあり)なのでは?
何の問題も無いと思いますが?混乱してませんか?落ち着いてください。

確かに、言うとおりです。
UNIXにmputして、別ディレクトリにmgetしてファイルの個数が一致してたらOKにしようと思います。

明日確認してみます。
また躓いたらよろしくおねがいします。

お礼日時:2011/09/13 20:55

FINDSTR 等でログファイルから自分が成功と判断する文字列を探してあれば成功と見なします。


特に複数ファイルを転送するようなので、何を以て成功とするか難しいでしょうね。
ログに出る転送バイト数とそれぞれのファイルサイズを比較するのでしょうか。

setlocal enabledelayedexpand
・・・・・
set ERR=0
for /f "usebackq tokens=1-8" %%A in ("%logFileName%") do (
if %%A==150 set for /f %%X in (%%H) do set SIZE=%%~zX
if %%A==ftp: if not %%B==!SIZE! set /a ERR+=1
)
if not %ERR% == 0 (
エラーがあった時の処理
)

これは私がさっきやってみたログの場合なので、OSが違うと修正が必要な可能性があります。

他には、mput したあと、別のディレクトリに lcd して mget して、元のファイルとコンペアするとか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

どうやら出来ていないようです。
そもそも、転送元のファイルサイズと、転送したファイルサイズが違っているので、
この方法は使えないみたいです・・・。

また、相手側の都合上WindowsにFTPサーバを常駐させる事はNGらしく、mgetもできません・・・。

お礼日時:2011/09/13 08:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!