|
423) FTPのGETでzeroバイトファイルの作成? けろ 2002/06/28(金) 18:44 |
|
こんにちわ、けろと言います。 表題の件でご教授願えればと思っております。 現在、ms-dos 環境下で社内のFTPサーバにファイルを取りに行くバッチファイルを作成しています。 get対象のファイルがサーバに存在している時には問題はないのですが、サーバにファイルが存在しないときに、そのファイル名で ZERO バイトのファイルがクライアント側に作成されてしまいます。FTP 終了後に get したファイルが存在するか否かを IF EXIST で判断させ、ファイル取得の結果を表示させています。IF EXIST だと、ZERO バイトでも「真」になっちゃうんですよね。 Windows 98/2000 では、ファイルが存在しないときの get では ZERO バイトファイルは作成されないのですが、NT4.0WS/XP では、作成されてしまいます。 結論として、ファイルの取得に成功したか否か?の判断をしたいのですが、解決法として良い方法がありますでしょうか? 解決の可能性として、 1)FTP で get 失敗時に、ZERO バイトファイルを作成しないようにする。 2)EXIST など、コマンドを駆使して ZERO バイトファイルを判断させる。 3)諦める(泣)。 ぐらいかなぁと思っております。 2)の方法は過去Log中にプログラムを公開されている方がおられたので、可能だと思われます。 もし、簡単に解決する方法があれば、皆様の知恵をお借りできればと思います。よろしくお願いします。 環境:Windows95/98/NT4.0WS/2000/XP の DOS窓 |
|
428) Re:FTPのGETでzeroバイトファイルの作成? SYSOP 2002/06/29(土) 18:32 |
|
けろ さん こんにちは。 >2)の方法は過去Log中にプログラムを公開されている方がおられたので、可能だと思われます。 IS.EXEのことですね。 ・ダウンロードしたファイルは特定のディレクトリ内にまとまっている ・ファイルサイズが0なら失敗したとみなす という条件でよいのであれば、(かつ、IS.EXEの使用例でいうならば)後処理のバッチファイルの冒頭のほうに、次のような1行を入れておけばよいことになるかと思います。 FOR %%F IN (*.*) DO CALL SIZECHECK %%f ⇒SIZECHECK.BATの内容は次の2行。 IS FILESIZE %1 0 IF ERRORLEVEL 2 DEL %1 その他、何か特殊な条件があるならそれはそれで考えねばならないと思いますけど。 YanaKen |
|
432) Re2:FTPのGETでzeroバイトファイルの作成? けろ 2002/07/01(月) 09:03 |
|
おはようございます。 コメント有り難うございます。 やはり、簡単に0バイト判定できるようなコマンドなどはないようですね。 頂いたコメント中にかかれている条件で考えていますので、コピペ+αでなんとか対応したいと思います。 今までもFTPに限らず、0バイト判定には苦労していました。 助かりました&ありがとうございました。 |
|
479) Re3:FTPのGETでzeroバイトファイルの作成? じゃく 2002/07/13(土) 12:41 |
|
偶然よい方法が見つかりましたので書きます。 サイズZEROのファイル名をtest.txtとすると、 C:\>copy test.txt tmp.txt 0 個のファイルをコピーしました. C:\>if not exist tmp.txt echo 取得失敗です 取得失敗です ということで、サイズZEROのファイルはコピーされないので いったん別の名前でコピーをして、その別の名前のファイルが できているかどうかで判断してはどうでしょうか。 ちなみに、WinMeでの実行結果です。 じゃく |
|
489) Re4:FTPのGETでzeroバイトファイルの作成? 酸性猛獣 2002/07/17(水) 19:04 |
|
>C:\>copy test.txt tmp.txt > 0 個のファイルをコピーしました. Win2k、WinXPではコピーできました。 Win2kとWinXPでしか確認してませんけれど、次のようなやり方はどうでしょう? @ECHO OFF IF "%~z1" == "0" GOTO NOBYTE :NOBYTE @ECHO %1はゼロバイトのファイルです |