プロが教えるわが家の防犯対策術!

media player classic 画像キャプチャ機能で静止画を保存します
保存されるファイル名の形式を変更したいのですが、設定などで変更できますか?
キャプチャした日付までファイル名につくので、ファイル名が長くて困っています

A 回答 (1件)

設定やWEB情報を確認しましたが、恐らく出来ない気がしますので、VBScriptで定期的にリネームするのが良いかなと思います。



以下がその方法です。

Windows付属のメモ帳を起動し、以下の破線内の文章をコピー&ペーストします。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

'――――――――――――――――――

'■ 設定 ■

'◆ 対象フォルダ (半角「"」で囲んで記述します。)
strTargetFolder = "C:\xxxxxxx\xxxxxxx"

'◆ フォルダチェック間隔の秒数 (短くし過ぎるとリネーム漏れが発生しやすくなります。半角で数値を入力します。)
intCheckInterval = 5

'◆ このフォルダチェック回数に1回は必ずリネームをする (リネーム漏れ対策。半角で数値を入力します。)
intMaxDoCount = 100

'◆ 同名ファイルの連番の上限 (これ以上は処理されません。半角で数値を入力します。)
intMaxFileNumber = 9999

'◆ 置換前ファイル名パターン (半角「"」で囲んで記述します。)
strBeforeFileNamePattern = "^(.*)_snapshot_.*(\.[0-9a-zA-Z]+)$"

'◆ 連番前の文字列 (半角「"」で囲んで記述します。)
strConnectionString = "_"

'――――――――――――――――――

'■ 処理 ■
strAfterFileNamePattern = "$1"
strAfterFileExtPattern = "$2"
intCheckInterval = intCheckInterval * 1000
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set folder = objFSO.GetFolder( strTargetFolder )
Set objRegExp = New RegExp
objRegExp.IgnoreCase = False
objRegExp.Global = True
objRegExp.Pattern = strBeforeFileNamePattern
Set objShell = Wscript.CreateObject("WScript.shell")
objShell.CurrentDirectory = strTargetFolder
intDoCount = 0
Do
intDoCount = intDoCount + 1
ThisTime = folder.DateLastModified
If ( ThisTime <> LastTime ) Or ( intDoCount >= intMaxDoCount ) Then
intDoCount = 0
For Each file In folder.Files
intFileNumber = 0
if file.Name <> objRegExp.Replace( file.Name, strAfterFileNamePattern ) Then
strNextFileName = objRegExp.Replace( file.Name, strAfterFileNamePattern ) & objRegExp.Replace( file.Name, strAfterFileExtPattern )
If objFSO.FileExists( strNextFileName ) Then
For a = 1 To intMaxFileNumber
intFileNumber = intFileNumber + 1
strNextFileName = objRegExp.Replace( file.Name, strAfterFileNamePattern ) & strConnectionString & intFileNumber & objRegExp.Replace( file.Name, strAfterFileExtPattern )
If objFSO.FileExists( strNextFileName ) Then
Else
Exit For
End If
Next
End If
On Error Resume Next
file.Name = strNextFileName
End If
Next
End If
LastTime = ThisTime
WScript.Sleep intCheckInterval
Loop While True

'――――――――――――――――――

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

貼り付けたら、「対象フォルダ」の所の、「C:\xxxxxxx\xxxxxxx」部分を、テスト用のフォルダのパス(「C:\テスト」等)に書き換えます。
(「パス」は、「\」区切りで表した場所の事で、フォルダをShiftキーを押しながら右クリックして、「パスのコピー」等をクリックするとコピー出来、貼り付けられる状態になります。「"」で囲まれていますので、貼り付ける際は二重にならないようにご注意ください。)

メモ帳の上部メニューの「ファイル」→「名前を付けて保存」の順にクリックし、「文字コード」を「ANSI」にし、「ファイル名」に任意のファイル名を付け、末尾は「.vbs」(「リネーム.vbs」等)にし、デスクトップ等の場所を選び、「保存」をクリックします。

上記ファイルに記述したテスト用フォルダを実際に作成し、その中にキャプチャした画像ファイルをコピーします。

保存したVBSファイルを実行します。(起動しても何もウィンドウは表示されませんので、複数回実行はしないでください。)

これで対象フォルダのチェックが開始され、対象ファイルがあればリネームされます。

テストフォルダ内の対象ファイルが正常にリネームされたら、更に、画像キャプチャしたファイルをコピーしてみて、それも正常にリネームされるか確認します。

正常にリネームされたら、VBSに停止ボタン等はありませんので、タスクマネージャーから「Microsoft ® Windows Based Script Host」(wscript.exe)停止させるか、以下の破線内の文章を、上記と同じ要領で「VBSの終了.vbs」等として保存して実行すると、実行中の全てのVBSファイルを終了させる事が出来ますので、いずれかの方法でVBSを停止させます。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "taskkill /im wscript.exe /f", 0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

当該のVBSファイルを右クリックし、「編集」をクリックします。

テスト用フォルダのパスを、実際の画像キャプチャの保存先フォルダのパスに変更し、上書き保存して閉じます。

VBSを実行し、正常にリネームされる事を確認します。

正常にリネームされたら、VBSを終了させます。

Windowsロゴのキーを押しながら「R」キーを押します。

出た小窓に「shell:startup」と半角で入力し、Enterキーを押します。

スタートアップフォルダが開くので、そこに先程作成したVBSファイルを入れます。

これで、PC起動時にファイルチェックが開始され、自動でリネームされます。


又、「対象フォルダ」以外の設定も、必要なら変更しても構いません。

「処理」部分は、VBSが分からない場合は書き換えないでください。想定外の動作になる危険性があります。

ちなみに、「置換前ファイル名パターン」の「^(.*)_snapshot_.*(\.[0-9a-zA-Z]+)$」部分を、例えば、「^(.{15}).*_snapshot_.*(\.[0-9a-zA-Z]+)$」に変更すると、ファイル名先頭の「15文字」(+連番)だけに出来ますので、かなり短く出来るかと思います。

試す場合は、テストフォルダで試してみてください。
    • good
    • 0
この回答へのお礼

本当に詳しく教えていただきありがとうございます。
VBSは触ったことがないので、時間はかかるかもしれませんが、
自分で試してみて使えるようにします

お礼日時:2022/04/16 19:42

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