No.3ベストアンサー
- 回答日時:
私が書いたスクリプトの後ろにkhaii21さんが書き足されたんですよね?
不思議ですねぇ。本当に書かれたものそのままなら、
>strNewFileName2 = objFile.Name
この行通るはず無いんですけど。
strNewFileName2、空のままのはずです。
通らない理由は、
>If dtmMostNewTimeStamp < objFile.DateLastModified Then
です。dtmMostNewTimeStampより新しいファイル、strNewFileName以外であるわけ無いですよね。
と、khaii21さんが書かれたスクリプトについて解説してみましたが、2番目に新しいファイルを見つけるのに列挙しなおす必要なんて無いですよ(^^;;;
私が書いたスクリプト、ちょっと直すだけで1番目と2番目両方取れます。
Dim strNewFileName
Dim dtmMostNewTimeStamp
Dim strNewFileName2
Dim dtmMostNewTimeStamp2
'ファイルを列挙
For Each objFile In objFolder.Files
If dtmMostNewTimeStamp < objFile.DateLastModified Then
dtmMostNewTimeStamp2 = dtmMostNewTimeStamp
strNewFileName2 = strNewFileName
dtmMostNewTimeStamp = objFile.DateLastModified
strNewFileName = objFile.Name
ElseIf dtmMostNewTimeStamp2 < objFile.DateLastModified Then
dtmMostNewTimeStamp2 = objFile.DateLastModified
strNewFileName2 = objFile.Name
End If
Next
考え方は、列挙したファイルが今までで一番新しかったら
・前の1番目→2番目
・列挙されたファイル→1番目
に、
1番目より古いけど、それまでの2番目よりは新しければ、
・前の1番目→そのまま1番目
・列挙されたファイル→2番目
になりますよね。
>taka_tetsuさん
本当に丁寧に教えて頂き、ありがとう御座いました。
まだまだ人に頼る所が多く、どうしても「教えて君」になってしまい申し訳無いと思いますが、1つを教えてもらって何倍にでも応用出来るようにスキルアップを図りたいと考えています。本当に助かりました。
No.2
- 回答日時:
>ファイル同士のタイムスタンプを比較する場合、どのようにして新しいか、古いかを区別するのかが分かりませんでした。
ただIfで大小を比較するだけですが(^^;;;
日時なんですから。
>よろしければ、比較するスクリプトを教えて頂けませんでしょうか?
ですから、「比較するスクリプト」って言っちゃうと、Ifの一行なんですって(^^;;
C:\の中で一番タイムスタンプが新しいファイルの名前とタイムスタンプを表示するVBScriptです。
Dim objFS
Set objFS = CreateObject("Scripting.FileSystemObject")
Dim objFolder
Set objFolder = objFS.GetFolder("C:\")
Dim strNewFileName
Dim dtmMostNewTimeStamp
'ファイルを列挙
For Each objFile In objFolder.Files
If dtmMostNewTimeStamp < objFile.DateLastModified Then
dtmMostNewTimeStamp = objFile.DateLastModified
strNewFileName = objFile.Name
End If
Next
WScript.Echo strNewFileName
WScript.Echo dtmMostNewTimeStamp
この回答への補足
ご丁寧にスクリプトを記述して頂き、ありがとうございました。
タイムスタンプの新旧の比較を、単純に大小で判別出来るのには気が付きませんでした。^^
教えて頂いたスクリプトを参考にして、タイムスタンプが一番新しいファイルと、その次にタイムスタンプの新しいファイルを取り出したいと考えているのですが、
For Each objFile In objFolder.Files
If objFile <> strNewFileName Then '(1)
If dtmMostNewTimeStamp < objFile.DateLastModified Then
dtmMostNewTimeStamp = objFile.DateLastModified
strNewFileName2 = objFile.Name
End If
End if
Next
(1)のような条件分岐を追加したスクリプトを加えて、先に取り出した1番タイムスタンプが新しいファイルを除外して、次に新しいファイルを代入させようと考えているのですが、strNewFileName2にもstrNewFileNameと同じファイルが代入されてしまい取り出せずに困っています。
本来の質問からは少しずれてしまうのですが、もし宜しければ教えて頂けませんでしょうか?
No.1
- 回答日時:
フォルダの内の最新のファイルを調べるんだったら、
1.ファイルを順番に順番に列挙していく(Filesコレクション)
2.最初のファイルのファイル名とタイムスタンプを退避
3.次のファイルのタイムスタンプと、退避したファイルのタイムスタンプを比較。新しいファイルだったらファイル名とタイムスタンプを退避しなおす。
以降3の繰り返し。
比較する方法ってのはIfでですけど、Ifがわからないわけじゃないですよね?
この回答への補足
>taka_tetsuさん
レスありがとうございます。
>比較する方法ってのはIfでですけど、Ifがわからないわけじゃないですよね?
スクリプトの条件分岐は分かります。^^
>3.次のファイルのタイムスタンプと、退避したファイルのタイムスタンプを比較。
タイムスタンプを確認するのは「DateLastModified」プロパティを利用すればいいんでしょうか?
ファイル同士のタイムスタンプを比較する場合、どのようにして新しいか、古いかを区別するのかが分かりませんでした。よろしければ、比較するスクリプトを教えて頂けませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
公文書のxmlファイルの開き方が...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
Seasar2のdiconファイルの読み方
-
VB6でトグルボタンを使いたい
-
#include <Windows.h>というヘ...
-
.NETアプリを作ったときの .man...
-
exeファイルの中身を見る方法は...
-
【VBS】 iniファイルの特定部...
-
自分で作成した重要ファイルを...
-
ファイル名にドットを使ったフ...
-
Tera Term にファイルを転送
-
セットアップ
-
監視ツールを入れさせられまし...
-
jarファイル
-
Latexで図番号だけを「図1.1」...
-
拡張子なしファイル検索について
-
XPでVB6.0ディストリビューショ...
-
C言語---ファイルに出力したデ...
-
VB.netで DirListBoxを使いたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
アクセス 壊れた? 「ファイ...
-
binファイルを解凍したいの...
-
.NETアプリを作ったときの .man...
-
Latexで図番号だけを「図1.1」...
-
公文書のxmlファイルの開き方が...
-
jarファイル
-
C言語---ファイルに出力したデ...
-
exeファイルの中身を見る方法は...
-
CSSを1ページに1枚作るのって変...
-
自分で作成した重要ファイルを...
-
バッチ処理で追記コピーしたい
-
研究する文献がたくさんありま...
-
コマンドプロンプトで、指定し...
-
コマンドプロンプトで作成日時...
-
監視ツールを入れさせられまし...
-
VBAでのicsファイル変換
-
Seasar2のdiconファイルの読み方
-
ファイルが開かれているかどう...
-
リンクの張り付けかたを教えて...
おすすめ情報