Top過去ログ目次掲示板

作成日:2004年12月24日 作成:おやじ
掲示板で過去に質問された内容です。

No.4069 VBでUNIXサーバファイル時間取得


No.4069 投稿時間:2004年12月24日(Fri) 15:03 投稿者名:ちびこ URL:http://http://www7.big.or.jp/~pinball/discus/vb/56688.html
タイトル:VBでUNIXサーバファイル時間取得

[OSのVER]:win2000
[VBのVER]:vb6.0
VBでUNIXサーバ(日本語版)のディレクトリ内のファイルの時間を取得したいです。
UNIXサーバ(英語版)の対応ができましたが
しかしVBでUNIXサーバ(日本語版)なら、ファイルの作成時間を取得できなくなった。
以下はコードでした
Public Const MAX_PATH = 260
Dim pData As WIN32_FIND_DATA

Dim ft As SYSTEMTIME

Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As _
FileTime, lpSystemTime As SYSTEMTIME) As Long

pData.cFileName = String(MAX_PATH, 0) 
hFind = FtpFindFirstFile(hConnection, "*.*", pData, 0, 0)

Call FileTimeToSystemTime(pData.ftLastWriteTime, ft)
'時間取得:
dtWrite = DateSerial(ft.wYear, ft.wMonth, ft.wDay) + TimeSerial(ft.wHour, ft.wMinute, ft.wSecond)
MsgBox(dtWrite)
'有効のファイル名取得:
strItemName = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
MsgBox(strItemName )

分析 :
そもそも英語版と日本語版のUNIXサーバのlsコマンドの出力内容が違います。
英語版のUNIXサーバで ls -l
-rw-r----- 1 eiyo users 4345 Nov 24 10:23 DK5FS411
-rw-r----- 1 eiyo users 726 Nov 24 10:23 DK5FZ1B4
-rw-r----- 1 eiyo users 2370 Nov 24 10:23 DK5FZ411
-rw-r----- 1 eiyo users 1500 Nov 24 10:22 DT200609290000
-rw-r----- 1 eiyo users 1500 Nov 24 11:47 D66B5.OP0333

日本語版のUNIXサーバで ls -l
-rw-rw-r-- 1 d0000 ap 429200 11月 24 17:52 DT200611241192
-rw-rw-r-- 1 d0000 ap 510800 11月 25 14:07 DT200611251193
-rw-rw-r-- 1 d0000 ap 82400 11月 25 14:52 DT200611251194
-rw-rw-r-- 1 d0000 ap 532000 12月 7 18:47 DT200612071196
drwxrwxr-x 2 apusr ap 1024 4月 7 2004 0407先行電文
故に以上のソースは英語版なら、問題なく、取得できますが
日本語版だと同じソースで時間も、有効ファイルも取得できなかった。

解決方法は分らなくて、誰か、教授してもらいませんか?
よろしくお願い致します。


No.4070 投稿時間:2004年12月24日(Fri) 15:45 投稿者名:じま URL:
タイトル:Re: VBでUNIXサーバファイル時間取得

VBってよくわからないのですが、
一時的にexport LANG=usで英語モードで動かすのはダメですか?
どのような手法で解決したいのか書かれていないので、何とも言えないのですが・・・


No.4071 投稿時間:2004年12月24日(Fri) 17:50 投稿者名:ちびこ URL:http://http://www7.big.or.jp/~pinball/discus/vb/56688.html
タイトル:Re^2: VBでUNIXサーバファイル時間取得

ご回答、どうもありがとうございます!
たしか、御提案は一つの解決方案なんですが
お客さんによりサーバの設定を変えることができません。だから今考えることはftpcommandのLisから情報を取得する
しかし
Debug.Print ResponseListの出力結果は

200 Type set to A.
227 Entering Passive Mode (172,28,121,10,193,27)
150 Opening ASCII mode data connection for /usr/bin/ls
の後ろにls -lコマンドようなものはなにもないです。原因がわかりません、どこか欠けるか?ミスか?
ご教授してもらいたいです。



掲示板▲頁先頭