VBスクリプトを使って、あるフォルダの最新のJPGファイルのファイル名を取得する方法

このQ&Aのポイント
  • VBスクリプトを使用して、TESTフォルダ内のJPGファイルの中で一番新しいファイルのファイル名を取得する方法について教えてください。
  • JPGファイルは、ファイル名が日付.jpgの形式で保存されています。例)061123.jpg
  • VBSファイルで上記の問題を解決するためのコードのサンプルも教えていただけますか?
回答を見る
  • ベストアンサー

あるフォルダのファイル名を取得したい(vbs)

VBスクリプトを使って、TESTフォルダにあるJPGファイル中で、一番新しいファイルのファイル名を取得したいと思っています。 JPGは、ファイル名が日付.jpgになっています。例)061123.jpg vbsは苦手で途中挫折してしましました。。ぜひ教えて頂けないでしょうか。 --------------- Dim Fs,strPath,Fl Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\Test\" Set Fl = Fs.GetFile(strPath) MsgBox Fl Set Fs = Nothing Set Fl = Nothing

  • fabu
  • お礼率69% (384/554)

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

単純に名前で比較していいのなら、 Dim Fs, strPath, Fl, F, NewFile Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\Test\" NewFile = "" Set Fl = Fs.GetFolder(strPath) For Each F In Fl.Files If F.Name > NewFile Then NewFile = F.Name End If Next MsgBox (NewFile) Set Fs = Nothing Set Fl = Nothing

fabu
質問者

お礼

ありがとうございます。 バッチりでした。

関連するQ&A

  • VBSを使ってフォルダを圧縮

    初めましてsazzzzと申します。 恥を承知、お解りになる方に聞いてみようかとこの度投稿した次第です。 どなたか助けてください。宜しくお願いします。VBSめちゃめちゃ初心者なのです。 ☆不特定なファイルが格納されているフォルダを指定フォルダに圧縮 ☆VBSを使い、業務時間外にタスクで管理したい ☆Windows2000(いまだに...)を使用 不作VBSを書かせて頂きます。ファイルでは、動作問題なく出来ましたが、フォルダとなると無理でした。 '---------------フォルダーのコピー-------------------- 'コピーフォルダ名 strFolder= "TEST" '圧縮フォルダ名 strZipFolder= strFolder & ".zip" MsgBox strZipFolder 'コピー元パス strSource="\\Pink\Work\" & strFolder 'コピー先パス strDestinate="\\Pink\Work\BK\" Set objFS = CreateObject("Scripting.FileSystemObject") Set objFB = CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(strSource) = False Then objFB.CreateFolder(strSource) End If objFB.CopyFolder strSource , strDestinate , False '--------------コピー元フォルダの削除----------------------- strPath = strSource Set objFS = CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(strPath) = False Then MsgBox("指定されたフォルダが存在しません。") Else objFB.DeleteFolder strPath End If 'DOSコマンドを実行して、圧縮する  Set ws = WScript.CreateObject("WScript.Shell") strDC="Makecab " & strDestinate & strFolder & " " & strDestinate & strZipFolder ws.Run strDC,0,true set ws=nothing objFS.DeleteFile(strDestinate & strFolder) Set objFS=Nothing Set objFB=Nothing

  • VBSでルートフォルダ名を取得したい

    (I)ドライブにUSBメモリーがあってルートフォルダ名がABCだとします。 VBSでルートフォルダ名を取得したくてコード書いてみたんですがMsgBoxには空欄しかでません。なにが間違っているのか教えて頂けないでしょうか? dim objFSO dim objDrive Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objDrive = objFSO.GetDrive("I") MsgBox objDrive.RootFolder.name

  • VBSで、テキストファイルに対して、全体の途中に文字列を追加したい

    こんばんわ VBSについて質問です。 テキストファイルを開いて、文字列を追加するスクリプトを作成したいのですが、 以下のようなプログラムであれば、行の一番下に文字を追加できると思います。 ########ここから Dim objFS,objText,objFile Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.GetFile("C:\test\vbs\test.txt") Set objText = objFile.OpenAsTextStream(8,-2) objText.WriteLine("新しい行") Set objFILE = Nothing Set objText = Nothing ############ここまで しかし今やりたいのは分の途中に文字をいれたい。 たとえばテキストファイルが A B C D というファイルだったら、 "B"を検索して、Bの下に”新しい行”という文字列を追加したいです。 いろいろ調べましたがどうもうまくいきません。 わかる方ご教授願います。

  • VBSで指定したフォルダー内のファイルを書き出さないようにする

    あるフォルダ以下のファイル名を出力ファイル、f.name.txtに書き出すのですが "新しいフォルダ"というフォルダのなかにあるファイルは書き出さないようにしたいのですが、意に反してフォルダー内の全てのファイル名を書き出してしまいます。どこがおかしいのでしょう? ********************************************** Set FSO = CreateObject("Scripting.FileSystemObject") Set fl = WScript.CreateObject("Scripting.FileSystemObject") Set abc = fl.CreateTextFile("f.name.txt") ShowSubfolders FSO.GetFolder(".") Sub ShowSubFolders(Folder) For Each File in Folder.Files 'Folder内のファイルを列挙する Fname = File.name FolderCheck=Folder & "\" & "新しいフォルダ" If Folder <> FolderCheck Then abc.Write Folder & "\" & Fname & vbCrLf End If Next For Each Subfolder in Folder.SubFolders 'Foler内のフォルダを列挙する ShowSubFolders Subfolder '再帰呼び出し Next End Sub abc.Close

  • 再度:VBSで指定したフォルダー内のファイルを書き出さないようにする

    先ほども似たような質問をしました。 あるフォルダの中にあるファイル名の一覧をファイル"f.name.txt"を書き出したいのですが"新しいフォルダ"のなかにあるファイルは書き出さないようにしたいです。下記のVBSは"新しいフォルダ"のなかに更にフォルダが階層的に存在するときには"新しいフォルダ"の中のファイルも全て書き出してしまいます。 "新しいフォルダ"の中にフォルダがない場合は正しく動きます。 "新しいフォルダ"の中にフォルダが階層的にあっても"新しいフォルダ" の中にあるファイル名を書き出さないようにするにはどうしたらよいのでしょう? ************************************************************** Set FSO = CreateObject("Scripting.FileSystemObject") Set fl = WScript.CreateObject("Scripting.FileSystemObject") Set abc = fl.CreateTextFile("f.name.txt") ShowSubfolders FSO.GetFolder(".") Sub ShowSubFolders(Folder) If Folder.Name <> "新しいフォルダ" Then For Each File in Folder.Files 'Folder内のファイルを列挙する Fname = File.name abc.Write Folder & "\" & Fname & vbCrLf Next End If For Each Subfolder in Folder.SubFolders 'Folder内のフォルダを列挙する ShowSubFolders Subfolder '再帰呼び出し Next End Sub abc.Close

  • ファイルの種類・属性を表示したい

    ファイルの属性を表示させたいのですが、 Dim FileName FileName = "C:\TEST.TXT" Set fs = CreateObject("scripting.FileSystemObject") Set f = fs.GetFile(FileName) Msgbox(F.Size & F.DateLastModified) とすると、ファイルのサイズ・最終更新日が表示されます。 あと、ファイルの種類・属性を表示させたいのですが、 F.Type、F.Attributeなどとやってもうまくいきません。 上のロジックは、人からもらった物なので、完璧に理解している訳ではないんですが・・・。 おわかりになる方、よろしくお願いします。

  • テキストファイルに一行文字を追加したい

    バッチ処理でテキストファイルの最後に文字列を追加する作業をやりたいのです。 普通の文字列ですと、1)のようにして上手くいきます。 ところが「"」の入った文字列を一行加えようと2)のようにすると、エラーになってしまいます。どうしたら前に進めるでしょうか? --------- 1)上手くいくケース ----------- Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.GetFile("C:\test\hoge.txt") Set f = tmpFile.OpenAsTextStream(8, -2) f.Write("一行追加しました") f.close Set f = Nothing Set tmpFile = Nothing Set fso = Nothing --------- 2)上手くいかないケース ----------- Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.GetFile("C:\test\hoge.txt") Set f = tmpFile.OpenAsTextStream(8, -2) f.Write("一行"追加"しました") f.close Set f = Nothing Set tmpFile = Nothing Set fso = Nothing

  • FileSystemObjectのGetFolderで取得できるファイルの並び順

    お世話になっております。 Access2002VBAを使用しております。 サンプルを以下に示します。 '------------------------ Set FS = CreateObject("Scripting.FileSystemObject") Set obF = FS.GetFolder(RD & ":\" & RP) Set colF = obF.Files For Each F In colF '各ファイルアクセス Next Set FS = Nothing Set obF = Nothing Set colF = Nothing Set F = Nothing '------------------------ 特定のフォルダ内の全ファイルをアクセスする プログラムを作成しております。 この際、ファイル名の昇順、もしくは作成年月日、更新年月日の昇順にファイルをアクセスしたいのですが、 FileSystemObjectを使用して、ファイルを順当に取得する 方法がわかりません。 もしそのような方法がなければ、 配列にファイル名、年月日を入れて、 擬似的に並べ替えをおこなうか、 作業用テーブルにファイル名、年月日を入れて、 order by で取得しなおして、順当にファイルアクセス とおもっております。 FileSystemObjectのGetFolderメソッドで 取得できるファイルは何の順番で取得されるのでしょうか。 また何れか、もしくはその他よい方法等がございましたら、 ご教授いただきたいと存じます。 よろしくお願いいたします。

  • VBSでメール送信

    VBS初心者です。 以下のサイトを参考に,特定のフォルダにファイルが追加されたら, 指定のメールアドレスに添付して送信するVBSを作成してみました。 http://plaza.rakuten.co.jp/mscrtf/diary/201206260000/ ちなみに記述を少しだけ変えて, 送信したファイルを削除しないようにしています。 しかしこうしてしまうと,「送信フォルダ」にファイルが追加されると, その新しく追加されたファイルではなく, 前から置いてある別のファイルが送信されてしまいます。 「最新のファイルを添付して送信」することはできないでしょうか? またファイルを添付してメールを送信することはできるのですが, なぜか送信受信ともに,まったくおなじメールが2通作成されてしまいます。 (2通同時ではなく1通目が届いて30秒後くらいにもう1通届きます)。 あと,受信側メールアドレスをbbb@hotmail.co.jpにし, smtpserver:smtp.live.com smtpserverport:587 とすると 「転送においてサーバーに接続できませんでした」と出てしまいます。 ポート番号を,465や25にしてみましたがだめでした。 どこを直せばいいでしょうか? 以上の解決策をご教授ください! コードは以下です。 Dim Fs, strPath, Fl, F, NewFile, NewFileFP, OutF Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\FileSend\送信フォルダ\" NewFile = "" Set Fl = Fs.GetFolder(strPath) For Each F In Fl.Files If F.Name > NewFile Then NewFile = F.Name End If Next NewFileFP = Fl & "\" & NewFile Dim WshShell, BtnCode Set WshShell = WScript.CreateObject("WScript.Shell") Set objShell = CreateObject("Wscript.Shell") Set oMsg = CreateObject("CDO.Message") oMsg.From = "ファイル送信元 <aaa@gmail.com>" '送信元 oMsg.To = "bbb@hotmail.co.jp" '送信先 oMsg.Subject = "ファイルの送信test3" '件名 oMsg.TextBody = "ファイルをお送りします。" 'メール本文 oMsg.AddAttachment NewFileFP '添付 oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.googlemail.com" oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "aaa@gmail.com" oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "******" oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 oMsg.Configuration.Fields.Update oMsg.Send oMsg.Configuration.Fields.Update oMsg.Send Set OutF = Fs.OpenTextFile("C:\FileSend\test.txt",8) OutF.WriteLine "Date[" & date & "] Time[" & time & "] File[" & NewFile & "]" OutF.Close objShell.Popup "メール送信しました。", 0, "送信完了", 0 Set Fs = Nothing Set Fl = Nothing Set OutF = Nothing 使用しているパソコンは Win7Professional 32bit です。 よろしくお願いいたします!

  • display.vbsというファイルがstartupフォルダにあるので

    display.vbsというファイルがstartupフォルダにあるのですが? display.vbsというファイルがすべてのプログラムのstartupフォルダにあるのですが、これは何でしょうか?名前からして気持ち悪いので正体を知っている人がいたら教えて欲しいです。 メモ帳で開いたら下記のようなソースになっていました。 よろしくお願いします。 -------------------------------------------- ' Self destructive VBScript for changing optimal resolution ' Set optimal resolution Set objShell = Wscript.CreateObject("Wscript.Shell") objShell.Run "c:\windows\options\cfgdisp.exe /optimum", 7, True ' Now destroy itself Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile("C:\Documents and Settings\All Users\Start Menu\Programs\Startup\display.vbs") --------------------------------------------

専門家に質問してみよう