dポイントプレゼントキャンペーン実施中!

OSはWIN10です
VBSでごみ箱に捨てたファイルの削除日時を取得して過ぎた日数によって完全削除したいのですが・・・
取得した削除日時を比較するためにCDateでデータ型に変換したいのですが「型が一致しません」のエラーが出てできません。
ゴミ箱以外のフォルダのファイルの更新日時とかは問題なCDateでデータ型に変換できます。
下記のような感じなのですが、WinXPの時は問題なく動いたのですが・・・

Set obj = CreateObject("Shell.Application").NameSpace(10)
WScript.Echo obj.GetDetailsOf(obj.Items().Item(0), 2)
WScript.Echo CDate(obj.GetDetailsOf(obj.Items().Item(0), 2))

よろしくお願いします。

A 回答 (1件)

こちらWindows7なので、もしかしたら、違うかもしれませんが、以下のスクリプトを実行してください。


取得した日付の中に、unicodeの8206,8207が含まれています。これが、原因でCDateのエラーになっています。
この文字を削除すると、エラーが回避できます。
-----------------------------------------------------------
Option Explicit
dim obj
dim dtime
dim dtime2
dim i
dim c1
Set obj = CreateObject("Shell.Application").NameSpace(10)
WScript.Echo obj.GetDetailsOf(obj.Items().Item(0), 2)
dtime = obj.GetDetailsOf(obj.Items().Item(0), 2)
WScript.Echo len(dtime)
for i = 1 to len(dtime)
c1 = mid(dtime,i,1)
WScript.Echo "<" & c1 & ">" & asc(c1) & ":" & ascw(c1)
next
dtime = replace(dtime,Chrw(8206),"")
dtime = replace(dtime,Chrw(8207),"")
WScript.Echo CDate(dtime)
-------------------------------------------
以下、実行結果です。
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

‎2019/‎08/‎14 ‏‎11:38
21
<‎>63:8206
<2>50:50
<0>48:48
<1>49:49
<9>57:57
</>47:47
<‎>63:8206
<0>48:48
<8>56:56
</>47:47
<‎>63:8206
<1>49:49
<4>52:52
< >32:32
<‏>63:8207
<‎>63:8206
<1>49:49
<1>49:49
<:>58:58
<3>51:51
<8>56:56
2019/08/14 11:38:00
    • good
    • 0
この回答へのお礼

ありがとうございました。おかげさまで数時間費やしたことがやっと解決できましたw

お礼日時:2019/11/24 21:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!