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

解決


ねね  2005-07-08 20:21:48  No: 90894

おはようございます。

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 20:31:23  No: 90895

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


でヴぃけい  2005-07-08 20:50:30  No: 90896

違いました。

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 23:48:01  No: 90897

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

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


ガッ  2005-07-08 23:58:27  No: 90898

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

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


でヴぃけい  2005-07-09 01:27:33  No: 90899

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

テキストファイルを実際に作成するのは別でオブジェクト(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-12 01:18:27  No: 90900

お返事ありがとうございます。
残念ながら  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-12 02:27:35  No: 90901

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

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


ねね  2005-07-12 23:45:40  No: 90902

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加