YYYYMMDDHHMM形式のテキストファイルを作成したい

解決


ねね  2005-07-08 11:21:48  No: 90894  IP: [192.*.*.*]

おはようございます。

VBScript暦3週間の初心者です。  
VBScriptでYYYYMMDDHHMMSS形式のテキストファイルを作成したいのですが  
苦戦しています。

strTxtName = Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now) & Second(Now) & "tmp.txt"
上記のようにコードを記述しているのですが  
YYYYMMDDHH.txtというファイルが作成されてしまいます。
何が原因なのか、どうすればYYYYMMDDHHMMSS形式のテキストファイルが
作成できるか、ご存知でしたらご教授いただきたく。

よろしくお願いします。

編集 削除
でヴぃけい  2005-07-08 11:31:23  No: 90895  IP: [192.*.*.*]

strTxtName = Format(Now(),"YYYYMMDDHHNNSS") & "tmp.txt"

編集 削除
でヴぃけい  2005-07-08 11:50:30  No: 90896  IP: [192.*.*.*]

違いました。

VBScriptですね。

Private Sub Main()

Dim tmpDate
Dim strTxtName

tmpDate = Now()
strTxtName = Year(tmpDate) & FormatZero(Month(tmpDate),2) & FormatZero(Day(tmpDate),2) & _
             FormatZero(Hour(tmpDate),2) & FormatZero(Minute(tmpDate),2) & _
             FormatZero(Second(tmpDate),2) & "tmp.txt"

msgbox strTxtName

End Sub

Private Function FormatZero(strFormat,lngSize)
   Dim lngSabunSize
   Dim strZero

   lngSabunSize = lngSize - Len(strFormat)

   For i = 1 To lngSabunSize
      strZero = strZero & "0"
   Next

   FormatZero = strZero & strFormat

End Function


Call Main


参考にして下さい。

編集 削除
ねね  2005-07-08 14:48:01  No: 90897  IP: [192.*.*.*]

お返事ありがとうございます。

いただいたコードをコピーして試してみたのですがやはり  20050708.TXT
が作成されます。
20057814tmp.txtと文字を打ち込んで試してみたところ 20057814.TXT
というのが作成されたので  数字8桁のテキストファイルしか作成できない
ようです。  
*しかも拡張子が大文字で"tmp"という文字は無視される。

編集 削除
ガッ  2005-07-08 14:58:27  No: 90898  IP: [192.*.*.*]

> でヴぃけいさん
の、
> 参考にして下さい。
が見えてない様子…

※最近、夏の陽気にやられたかの様な人が来る…

編集 削除
でヴぃけい  2005-07-08 16:27:33  No: 90899  IP: [192.*.*.*]

そうですか・・・・・
ファイル名を作成した後で何か操作されている感じですね。

テキストファイルを実際に作成するのは別でオブジェクト(DLL)など
を使用しているのですか?

とりあえず原因を探るのが先決ですね。
お使いPCにVB6はインストールされていますか?

されていれば・・・・・

1.ActiveXDLLでプロジェクトを作成してください。(必ず保存はして下さい。)
    ※ActiveXDLLを生成するのは不要です。

Public Sub DebugObject(valObject As Variant, valObject2 As Variant)

MsgBox "デバッグ終了"

End Sub

2.プロジェクト作成後、ブレイクポイントをMsgBoxに設定して
    実行を開始して下さい。

3.対象のVBScriptに上記で作成したオブジェクトを生成してください。

Private Sub Main()

Dim tmpDate
Dim strTxtName

tmpDate = Now()
strTxtName = Year(tmpDate) & FormatZero(Month(tmpDate),2) & FormatZero(Day(tmpDate),2) & _
             FormatZero(Hour(tmpDate),2) & FormatZero(Minute(tmpDate),2) & _
             FormatZero(Second(tmpDate),2) & "tmp.txt"

Dim DebugObject
Set DebugObject = CreateObject("prjDebugObject.cDebugObject")
Call DebugObject.DebugObject(tmpDate,strTxtName)
Set DebugObject = Nothing

msgbox strTxtName

End Sub

4.後はVBSを実行すればVBのウォッチウィンドなどで変数の中身を参照できます。


よければ作って見て下さい。結構便利です。

編集 削除
ねね  2005-07-11 16:18:27  No: 90900  IP: [192.*.*.*]

お返事ありがとうございます。
残念ながら  VB6は入っていないんです。

色々試してみた結果、この箇所でテキストファイルが作成されているようです。


dim wshShell, strCmd
set wshShell = WScript.CreateObject("WScript.Shell")

'ネットワークに接続し、タスクが存在するか確認します。
MsgBox strTmp
wshShell.Run "command.com /c tasklist /s " & strHost & " >> " & strTmp, 0, true 

set wshShell = Nothing

wshを実行する前に  strTmpの中身を表示させたところ
ちゃんと"20050711160000tmp.txt"となっていました。

編集 削除
でヴぃけい  2005-07-11 17:27:35  No: 90901  IP: [192.*.*.*]

command.comで起動すると、たぶんロングファイルネーム
に対応していないので8桁にファイル名が
カットされてしまうのかと思います。

"command.com /c"なしで起動できませんか?

編集 削除
ねね  2005-07-12 14:45:40  No: 90902  IP: [192.*.*.*]

お返事ありがとうございます。

なんとか、プログラムの処理フローを変更し、
wshShell.Run("tasklist.exe /s " & strHost & " >> " & strTmp, 0, true )
とし、解決することができました。

でヴぃけいさん、大変お世話になりました。
大感謝です!

編集 削除