[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先行電文
故に以上のソースは英語版なら、問題なく、取得できますが
日本語版だと同じソースで時間も、有効ファイルも取得できなかった。
解決方法は分らなくて、誰か、教授してもらいませんか?
よろしくお願い致します。
VBってよくわからないのですが、
一時的にexport LANG=usで英語モードで動かすのはダメですか?
どのような手法で解決したいのか書かれていないので、何とも言えないのですが・・・
ご回答、どうもありがとうございます!
たしか、御提案は一つの解決方案なんですが
お客さんによりサーバの設定を変えることができません。だから今考えることは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コマンドようなものはなにもないです。原因がわかりません、どこか欠けるか?ミスか?
ご教授してもらいたいです。