Lunatic Sol

IT Tips

GetPrivateProfileString - VBScript で使うための独自ファンクション

2005-11-27 16:48:27 | VBScript
なんだか無駄が多い関数のような気がしますが、とりあえず動くということで。。。

'############################################
' GLOBAL
'############################################
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const ERR_NOERROR = 0
Const ERR_UNKNOWN = 1
Const ERR_APPNOTFOUND = 2
Const ERR_KEYNOTFOUND = 3

'############################################
' GetPrivateProfileString
' lpAppName セクション名
' lpKeyName キー名
' lpDefault デフォルト文字列
' lpReturnedString 戻り値
' nSize 情報バッファのサイズ
' lpFileName .ini ファイルの名前
'############################################
Function GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, lpReturnedString, nSize, lpFileName)
  GetPrivateProfileString = ERR_NOERROR
  Dim oFs, oTs, strLine
  Dim appFound
  appFound = 0
  Set oFs = CreateObject("Scripting.FileSystemObject")
  Set oTs = oFs.OpenTextFile(lpFileName, ForReading, True)
  Do While Not oTs.AtEndOfStream
    strLine = oTs.ReadLine
    If appFound = 0 Then
      If strLine = "[" & lpAppName & "]" Then
        appFound = 1
      End If
    Else
      If Left(strLine,1) = "[" and Right(strLine,1) = "]" Then
        If lpDefault <> "" Then
          lpReturnedString = lpDefault
        Else
          GetPrivateProfileString = ERR_KEYNOTFOUND
        End If
        Exit Function
      Else
        If Trim(Left(strLine,InStr(strLine, "=")-1)) = lpKeyName Then
          lpReturnedString = Trim(Mid(strLine, InStr(strLine, "=")+2))
          If lpReturnedString = "" Then
            lpReturnedString = lpDefault
          End If
          Exit Function
        End If
      End If
    End If
  Loop
  If appFound = 0 Then
    GetPrivateProfileString = ERR_APPNOTFOUND
  Else
    GetPrivateProfileString = ERR_UNKNOWN
  End If
End Function

GetDateTimeForLogfile - ログファイルリネーム用の日付時刻文字列

2005-11-27 11:22:28 | VBScript
ちょっと VBScript に手を出していこうと思います。
ということで、CMD でやるよりも柔軟性が高いので、Function や Class を書いたらメモして行こうかなと。

ログファイルを1処理ごとにリネームしたい場合、日付と時刻を入れておくのが経験上一番良いと思ってます。その時に使う日付@時刻というフォーマットを出力する関数サンプル。

Function GetDateTimeForLogfile()
    GetDateTimeForLogfile = ""
    Dim strNow, strYear, strMonth, strDay, strHour, strMin, strSec
    strNow = Now
    strSec = Second(strNow)
    If Len(strSec) = 1 Then strSec = "0" & strSec
    strMin = Minute(strNow)
    If Len(strMin) = 1 Then strMin = "0" & strMin
    strHour = Hour(strNow)
    If Len(strHour) = 1 Then strHour = "0" & strHour
    strDay = Day(strNow)
    If Len(strDay) = 1 Then strDay = "0" & strDay
    strMonth = Month(strNow)
    If Len(strMonth) = 1 Then strMonth = "0" & strMonth
    strYear = Year(strNow)

    GetDateTimeForLogfile = strYear & "_" &_
        strMonth & "_" &_
        strDay & "@" &_
        strHour & "_" &_
        strMin & "_" &_
        strSec
End Function

ファイルをタイムスタンプでリネーム

2005-11-22 02:12:19 | Windows
バッチファイルも使いこなせばなかなかできるものですね。

C:>move test.txt "test.txt.%DATE:~,4%_%DATE:~5,2%_%DATE:~8,2%@%TIME:~,2%_%TIME:~3,2%_%TIME:~6,2%"

これで test.txt というファイルを "test.txt.2005_11_22@ 2_10_53" というファイルにリネームできます。時間の 2 を 02 にしたい場合は、バッチファイルで補うしかないでしょうかね。

移動先ファイルはスペースが入る場合があるので "" で囲んであげないと失敗します。

バッチファイルで日付と時刻を記録する

2005-11-16 14:45:53 | Windows
うーん。今まで知りませんでした。
いつも、以下のようなバッチ組んでました。

time /t
echo "*** Starting hogehoge ... ***"

出力
14:45
*** Starting hogehoge ... ***

これを、以下のようにしてあげれば、もっとスマートです。環境変数があったとは。。。

echo [%date% %time%] *** Starting hogehoge ... ***"

出力
[2005/11/16 14:42:54.22] *** Starting hogehoge ... ***

YWL-11B5 のドライバ

2005-11-05 12:21:25 | Windows Drivers
当時の(株)ワイズコーポレーションが販売していた YWL-11B5 のドライバ。

ヤマハエレクトロニクスマーケティング(株)というところに引き継がれているみたいですね。ということで、ドライバのリンク。

http://www.yamaha-elm.co.jp/support/download/#11b5

中身は確か Gemtek の OEM で、I-O Data や Accton も出していたはず。

これかな http://www.iodata.jp/products/plant/wnb11pcm.htm