うちのカレーにはこれが入ってる!って食材ありますか?

職場で簡単なファイルのバックアップPGをWSHで作っていますが
ファイルの作成日時が思うように入ってくれません。

WSHの流れは下記にしたいと考えています。
(1)前回分のファイルを作成日時を末尾に付けてリネーム
(2)WSHからバッチを呼び出して、ファイル作成

(2)でファイルが作成はされるのですが、(1)の処理でリネームした
ファイルの作成日時(実行時間より古い時間)が入って作成されてしまい、(2)が実行された
日付が入ってくれません。
ちなみに、更新日時アクセス日時は(2)の実行時間が入ります。

環境は以下になります。
OS:Windows7Pro SP1
→この先WindowsSV 2008R2で実行させたいと考えています。

Windowの仕様なのか、どうなのか、わからないのですが
どなたか何か回避策をご存じの方がみえれば、ご教授をお願いいたします。


テストで作成したWSHとBatのソースを下記に貼り付けます。

WSH ***************************************

option explicit

'変数定義
Dim objFso
Dim objFile
Dim objWShell

'オブジェクトの生成
Set objFso = Wscript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.GetFile("C:\testDir\File-A.txt")

'ファイル名変更
objFso.GetFile("C:\testDir\File-A.txt").Name = "File-B.txt"

'オブジェクト解放
Set objFile = Nothing

'bat実行
Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "C:\testDir\echo.bat", 0, True

'batで作成したFile-Aのオブジェクト生成
Set objFile = objFso.GetFile("C:\testDir\File-A.txt")

'オブジェクト解放
Set objWShell = Nothing
Set objFile = Nothing
Set objFso = Nothing

WSH ***************************************

Bat ****************************************

echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > C:\testDir\File-A.txt

Bat ****************************************


以上、よろしくお願いします。
 

A 回答 (2件)

その方法での名前の変更はおかしくありませんか?


たとえばコマンドプロンプトでの Rename コマンドや
Windowsエクスプローラでの「名前の変更」では
ファイルの「作成日時」は当初の作成日時のままです。
たとえば添付画像の
DCサーボ.html ファイルは
Renameや「名前の変更」を行なっても作成日時に変化はありません。

> objFso.GetFile("C:\testDir\File-A.txt").Name = "File-B.txt"
の結果、Windowsエクスプローラで照会しても作成日時が更新されていますか?
「ファイルの作成日時について」の回答画像2

この回答への補足

ご回答ありがとうございます。

私のご説明が足りておらず、すみません。

私が実現したいことは、作成日時を変更したいのではなく、
作成日時を取得してファイル名(ファイル名をFileAとして作成。)の末尾に作成日時を付け足して
リネームさせたいのですが、そもそも、ファイル(FileA)が作成されるときに付く
作成日時が過去日時が付いてしまうので、困っております。

説明が足りているか、わらりませんが、処理の流れを記載します。

1)FileAを作成
2)FileAを作成日時を取得リネーム
  なので、ファイル名はこんな感じ→ FileA_20140411
3)別処理(バッチ)でFileAを作成 ※作成する場所は同じフォルダ上
 ※3)の処理で新しいFileAを作成するときに1)でリネームした古いFileAの作成日時が
  何故か、入って新しいFileAが作成されてしまう。

サンプルで載せた、ソースを数回実行していただき、FIle-Bの作成日時をプロパティから
確認していただければ、現象がわかるかと思います。

よろしくお願いします。

補足日時:2014/04/11 16:45
    • good
    • 0
この回答へのお礼

対応策として、更新日時を使用して日付を比較することにしました。
ご回答ありがとうございました。

お礼日時:2014/04/16 10:26

DateCreated プロパティで確認してみてください。


echo "ファイル作成日付: " & objFile.DateCreated

この回答への補足

kteds様 ご回答ありがとうございます。

「echo "ファイル作成日付: " & objFile.DateCreated」入れて確認しましが、結果は同じでした。
DateLastModifiedも、DateLastAccessedも入れて確認しましたが、DateCreatedの日時のみ過去日付(リネームをかけたファイルの作成日時)が付いてました。

同一ファイル名でファイルを作ると、どうやら上記の動きをするようです。

補足日時:2014/04/09 10:47
    • good
    • 0

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


おすすめ情報