エビデンス貼付の省力化(バッチファイルでワンタッチでEasyShotの保存先設定)

1  エビデンスを取るのにEasyShotを使うとき,ワンタッチで保存先フォルダを切替えながらとれるようにするのが目的.エビデンスを取り中にちょこっと分岐したエビデンスをとるときに,取ったエビデンスを後から見ると混乱するし,保存フォルダを切り替えるのが面倒なので作ってみた.

フォルダ構成は,メインのフォルダをフォルダAとしたとき,EasyShot.exeとEasyShot.ini,iniファイルをいじくるバッチファイル,「画面保存先」フォルダをいじくるバッチファイルをフォルダA内に置く.フォルダA内にさらに「画面保存先」フォルダを置く. 

フォルダA┳「画面保存先」フォルダ

      ┣ EasyShot.exe

      ┣ EasyShot.ini

      ┗ 今回作ったバッチファイル

GZ20さんによれば,設定ファイルは %USERPROFILE%\Application Data\GZ20\EasyShot フォルダにあるとのこと.EasyShot.exeを単独で使うとこのフォルダにiniファイルが作成される.exeファイルと同階層にiniファイルを置けば,同階層のiniを優先して読み込んでくれる.

 今回は,同階層に置いたiniを書き換えることでバッチファイル処理を実行している.

 

2 EasyShot保存先設定.bat

このバッチファイルを実行して,動作(Action)を「ファイルに保存する」(=1)を選択し,保存先をeasyshot.exeと同階層にある「画面保存先」フォルダ(相対パスで,「\画面保存先)にする設定を行う.

@echo off

:: 遅延展開
setlocal EnableDelayedExpansion

:: バックアップ作成
if exist easyshot.bak goto skip
copy easyshot.ini easyshot.bak
: Skip

:: 一時ファイル初期化
if exist easyshot.tmp del easyshot.tmp

::iniファイル書換(「画面保存先」フォルダへの保存設定)
::: for /f "tokens=1,2 delims==" %%a in (easyshot.ini) do ( set B=%%a if "!B:~0,1!"=="[" ( (echo %%a)>>easyshot.tmp ) else if "%%a"=="Action" ( (echo %%a=1)>>easyshot.tmp ) else if "%%a"=="Folder" ( (echo %%a=\画面保存先)>>easyshot.tmp ) else ( (echo %%a=%%b)>>easyshot.tmp ) ) :: 一時ファイルをiniファイルへ上書き move /y easyshot.tmp easyshot.ini :: 再起動 taskkill /im easyshot.exe Start easyshot.exe endlocal

3 保存フォルダ切替.bat

このバッチを実行して,従来の「画面保存先」フォルダを「画面保存先_yyyy㎜dd_hhnnss」にフォルダ名変更する.「原義」フォルダをコピーしてフォルダ名変更して「画面保存先」フォルダを新たに作る.これにより,画面ショットは「画面保存先」フォルダに対して引き続き行える.

 

@echo off
setLocal EnableDelayedExpansion

::----フォルダ名の変数設定エリア----
set originalFolderName=原義
set savingFolderName=画面保存先
::----フォルダ名の変数設定エリア----

::年月日
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%

::時刻
set hhmmss=%time: =0%
echo %hhmmss%
set hhmmss=%hhmmss::=%
set hhmmss=%hhmmss:~0,6%

::年月日時刻
set now=%yyyy%-%mm%%dd%-%hhmmss%

::保存用フォルダを切り出す(フォルダコピーしてフォルダ名を時刻付加して変更)
rename %savingFolderName% %savingFolderName%_%now%

::原義フォルダから保存用フォルダを再作成
xcopy %originalFolderName% 画面保存先 /e /i /d

endLocal

4 プリンタ出力に戻す.bat(おまけ)

EasyShotの動作(Action)を「印刷する」(=0)に戻す.単に,マウスを使ってプロパティやプロファイルから動作を「印刷する」にすればいいだけの話だが,バッチファイルから同じことをしただけ.

@echo off

::遅延展開
setlocal EnableDelayedExpansion

::バックアップ作成
if exist easyshot.bak goto skip
copy easyshot.ini easyshot.bak
:skip

::一時ファイル初期化
if exist easyshot.tmp del easyshot.tmp

::iniファイル書換(「画面保存先」フォルダへの保存設定)
for /f "tokens=1,2 delims==" %%a in (easyshot.ini) do (
	set B=%%a
	if "!B:~0,1!"=="[" (
	(echo %%a)>>easyshot.tmp 
	) else if "%%a"=="Action" (
	(echo %%a=0)>>easyshot.tmp
	) else if "%%a"=="Folder" ( 
	(echo %%a=\画面保存先)>>easyshot.tmp
	) else (
	(echo %%a=%%b)>>easyshot.tmp
	)
)

::一時ファイルをiniファイルへ上書き
move /y easyshot.tmp easyshot.ini

::再起動
taskkill /im easyshot.exe
start easyshot.exe

endlocal

 5 EasyShot終了.bat

単に終了するか,キャプチャを無効にすればいいだけ.おまけとして,バッチで終了させてみた.

@echo off
taskkill /im easyshot.exe


6 iniファイルの中身の雰囲気

 iniファイルの書換の概要.[]ってのは項目名だから触らない(1文字目が「[」だったらそのままにする).Action(動作)だったら,「ファイルに保存する」(=1)に設定する.「Folder」だったら,保存Folderとして「¥画面保存先」を設定する.[FTP]の「転送フォルダ」の設定まで変わってしまったが,FTPを使ってないので影響がないため無視した.

[General]
Enable=1
Action=0
SelectAction=1
BitCount=24
GrayScale=0
Threshold=128
Reverse=0
Stretch=100
Halftone=1
Cursor=1
Popup=1
OverlapOnly=1
Region=1
FillColor=16777215
LastRectangle=0
Delay=0
ActivePage=0
[Print]
PrintMode=0
Scale=0
Stretch=100
Reduction=1
Orientation=3
PrintDialog=0
Progress=1
MarginLeft=0
MarginTop=0
MarginRight=0
MarginBottom=0
AlignHorizontal=0
AlignVertical=0
TextPrint=0
TextFaceName=MS UI Gothic
TextBold=0
TextItalic=0
TextSize=9
TextUnderline=0
TextStrikeOut=0
TextColor=0
TextCharSet=128
TextFormat=
TextPosition=0
TextAlign=0
[Save]
Folder=\画面保存先
FileType=0
SelectFileType=0
AppEnable=0
App=
[Mail]
To=
Subject=
FileNameDialog=0
MailDialog=1
FileType=1
SelectFileType=0
[FTP]
Server=
Port=21
User=
Anonymous=0
Password=
SavePassword=0
Folder=\画面保存先
Passive=0
Progress=1
FileType=1
SelectFileType=0
[Schedule]
Enable=0
Target=0
Cycle=1
StartEnable=0
StartSeconds=0
EndEnable=0
EndSeconds=0
TimeEnable=0
TimeStart=0
TimeEnd=0
ScreenSaver=0
[HotKey]
Screen=44
Window=131116
Client=65580
Select=196652
Property=0
Display=0
[Wallpaper]
Enable=0
Count=0
Cycle=1
EndingEnable=0
EndingImage=,0
[Profile]
Current=0