miau's blog?

GetTempName

VBScript の GetTempName メソッド

一時ファイルまたは一時フォルダの名前をランダムに生成して返します。

ということで、今回ランダムなファイルを作るのに使ってたんですが。
たまに同じファイル名が生成されることがあるようですね。

なんらかのロジックで重複しないようになってると思ったんですが・・・考えられる原因として、

・Dual CPU なマシンだから本来起きないはずの「本当に同一時刻」における処理になった

あるいは

・GetTempName は TemporaryFolder 内でのファイルとして使われるのが前提で、TemporaryFolder に存在しないファイル名を返すだけ

とか?完全に推測ですが。


とりあえず、


Dim fso
Dim ts

Set fso =CreateObject("Scripting.FileSystemObject")

On Error Resume Next

Set ts = fso.CreateTextFile(fso.GetTempName(), False)

Do While IsEmpty(fs)
If Err.Number <> 58 Then '「既に同名のファイルが存在しています。」以外
WScript.Echo Err.Description & vbCrLf
Err.Clear
Exit Function
End If

Set ts = fso.CreateTextFile(fso.GetTempName(), False)
Loop

みたいな形で回避。

ちなみにこのせいで周囲巻き込んで徹夜。
もっと詳しい説明ほしかった。


そういえば CreateTextFile メソッド

overwrite 
省略可能です。既存ファイルの場合に上書きするかどうかを示すブール値を指定します。
上書きする場合は真 (true) を、上書きしない場合は偽 (false) を指定します。
省略した場合は、既存ファイルは上書きされません。

も間違ってたっぽくて、ここでもハマった。
しっかりしてー。>msdn

posted at 22:38:25 on 2005-05-29 by miau - Category: Work No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。