100ぐらいのファイルが適宜保存されますが、
保存と同時にプリント出力を行いたいです。
よくプリンターについているホットフォルダのようなイメージです。
どうぞよろしくお願いいたします。
フォルダ監視&印刷を行う VBScript を書いてみました。
印刷処理は、mspaint.exe(MSペイント)を「/p」オプションを付け実行することで実現しています。(印刷の出力先は、「通常使うプリンタ」に出力されます。)
以下の「監視対象フォルダ」「移動先フォルダ」を環境に合わせて変更の上、コマンドラインにて「CScript FileWatch.vbs」を実行お願いします。
処理を終了させる場合は [Ctrl]+[C] を押してください。
なお、印刷後、処理済みファイルを「移動先フォルダ」に移動(「上書き」コピーならびに削除)していますが、特段、エラー処理を行っていない為、場合によっては、ファイルが消える可能性がありますので、十分テストの上、実行お願いします。
' File : FileWatch.vbs ' Usage : CScript FileWatch.vbs Option Explicit Const g_strWatchFolder = "C:\home\edu\hatena\ohtsu6\1364222104\watch" ' 監視対象フォルダ Const g_strBackupFolder = "C:\home\edu\hatena\ohtsu6\1364222104\backup" ' 移動先フォルダ Dim fso Set fso = CreateObject("Scripting.FileSystemObject") Call Main() Sub Main() Dim strFolder Dim strWatchFileName Dim strComputer Dim objWMIService Dim colMonitoredEvents Dim objLatestEvent strFolder = Replace( g_strWatchFolder, "\", "\\\\" ) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceCreationEvent WITHIN 3 WHERE " _ & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ & "TargetInstance.GroupComponent= " _ & "'Win32_Directory.Name=""" & strFolder & """'") Do Set objLatestEvent = colMonitoredEvents.NextEvent strWatchFileName = objLatestEvent.TargetInstance.PartComponent strWatchFileName = GetValue( strWatchFileName ) strWatchFileName = Replace( strWatchFileName, "\\", "\" ) PrintFile strWatchFileName MoveFile strWatchFileName, g_strBackupFolder Loop End Sub Function GetValue( strKeyValue ) Dim strResult Dim strArray strArray = Split(strKeyValue, "=") strResult = strArray(1) GetValue = strResult End Function Sub PrintFile( strFileName ) Dim strCommand strCommand = "mspaint.exe " & strFileName & " /p" Dim objShell Set objShell = CreateObject("Wscript.Shell") WScript.Echo "[" & strCommand & "] を実行しています。" objShell.Run strCommand, 1, True End Sub Sub MoveFile( strFileName, strBackupFolder ) ' 二重引用符除去 strFileName = Replace( strFileName, Chr(34), "" ) ' フォルダの最後に「¥」を追加 If Right(strBackupFolder, 1 ) <> "\" Then strBackupFolder = strBackupFolder + "\" End If WScript.Echo "[" & strFileName & "] を [" & strBackupFolder & "] に移動しています。" fso.CopyFile strFileName, strBackupFolder , True ' 上書きコピー fso.DeleteFile strFileName End Sub
実行結果
C:\home\edu\hatena\ohtsu6\1364222104> CScript FileWatch.vbs Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. [mspaint.exe "C:\home\edu\hatena\ohtsu6\1364222104\watch\test.gif" /p] を実行しています。 [C:\home\edu\hatena\ohtsu6\1364222104\watch\test.gif] を [C:\home\edu\hatena\ohtsu6\1364222104\backup\] に移動しています。
参考情報
■ Hey, Scripting Guy! : フォルダにファイルが追加されたときに自動的にスクリプトを実行することはできますか
http://gallery.technet.microsoft.com/scriptcenter/fbc46ecd-04b3-40e1-85b6-905b3545fc74
■ Hey, Scripting Guy! フォルダに追加された新しいファイルを自動的に開く方法はありますか
http://gallery.technet.microsoft.com/scriptcenter/9726505e-b186-4f23-b7c3-a5d61c1efff1
cx20さま
2013/03/26 12:35:39ご回答ありがとうございます。
無事にできました。
ちなみに、「windows フォトビューアー」で開いて
印刷をするこもできますでしょうか?
よろしくお願いいたします。
一応、可能なようです。
プログラムの変更箇所は以下になります。
以下、対応版です。
参考情報
2013/03/26 22:53:16