[前の記事]« WinNT3.5以上:バッチ処理でファイル名に日付を追加したい
[次の記事]PC98のDOS画面のカーソル点滅を止めたい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FTP」索引へ

存在しないファイルへのGETでzeroバイトファイルが作られてしまう


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はゼロバイトのファイルです
 
 


カテゴリー「FTP」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2002年06月28日 20:31に投稿されたエントリーのページです。

ひとつ前の投稿は「WinNT3.5以上:バッチ処理でファイル名に日付を追加したい」です。

次の投稿は「PC98のDOS画面のカーソル点滅を止めたい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート