特定のディレクトリに移動しつつ、
コマンドプロントを待機状態にします。
@echo off echo 下記のコマンドを実行してください。 echo db2cmd test.bat cd C:/ cmd /k
特定のディレクトリに移動しつつ、
コマンドプロントを待機状態にします。
@echo off echo 下記のコマンドを実行してください。 echo db2cmd test.bat cd C:/ cmd /k
Windows上でJScriptを実行するには
コマンドプロントから実行するのが便利です。
CScript ファイル名
CScript.exeは「C:/Windows/System32」と「C:/Windows/SysWOW64」に存在しています。
環境変数の設定によりどちらかが優位性が高い設定になっています。
サクラエディタのマクロをショートカットに登録します。
サクラエディタの日付を決まった値に置換。(JScript版)
置換後の日付はDB2のTimeStamp型に登録可能。
キーマクロの記録はできませんが、
JScript版なので演算や変数も利用可。
// 変数宣言
var FileName;
// すべて置換
// [0-9]{n}:0~9の数字をn回繰り返すの意味
Editor.ReplaceAll('[0-9]{4}-[0-9]{2}-[0-9]{2}-00[.]00[.]00[.]000000','2015-12-31-00.00.00.000000', 60)
// 再描画
Editor.ReDraw(0)
// すべて選択
Editor.SelectAll(0)
// 選択行の昇順ソート
Editor.SortAsc(0)
// ファイル名をフルパスで取得
FileName = GetFilename();
// ファイル名を変更
FileName = FileName.replace(".txt", "_比較用.txt");
// ファイルを保存
// 第1引数:ファイル名フルパス
// 第2引数:0はSJIS保存
// 第3引数:0は改行コードは変更しない
Editor.FileSaveAs(FileName, 0, 0);
JScriptはJavaScriptとは異なります。
JScript:Microsoftが開発したJavaScript互換のスクリプト言語
JavaScript:NetscapeとSunが共同開発したスクリプト言語
昔は利権の絡みとか色々あったんでしょうが、
今は標準仕様に準拠しているようで、書き方は同一といってもいいようです。
とはいえ、JSCriptを正式にサポートしているのはMicrosoftのみであり、
Web上でFireFoxやChromeで動作させるといった場合を考えると、
通常はJavaScriptで定義した方が良いようです。
サクラエディタのマクロはJScriptになります。
サクラエディタのキーマクロで日付を決まった値に置換。
置換後の日付はDB2のTimeStamp型に登録可能。
ツールバーの「ツール」-「キーマクロの記録開始」で記録できます。
キーマクロ版なので演算や変数は利用不可。
// すべて置換
// [0-9]{n}:0~9の数字をn回繰り返すの意味
S_ReplaceAll('[0-9]{4}-[0-9]{2}-[0-9]{2}-00[.]00[.]00[.]000000','2015-12-31-00.00.00.000000', 60)
// 再描画
S_ReDraw(0)
// すべて選択
S_SelectAll(0)
// 選択行の昇順ソート
S_SortAsc(0)
Dir関数を用いるため、ネットワーク上の長いファイルパスには未対応です。
Sub Test()
' 検索速度向上のポイント
' 何度も登場するブックやセルは変数に格納し、メモリを参照する。
' 画面チラつきを防止する。
' 画面チラつきを防止する。
Application.ScreenUpdating = False
' フォルダパスとファイル名を宣言する。
Dim strFilePath As String
Dim strFileNmae As String
' テキストボックスかセル入力でフォルダを指定させる。
strFilePath = "C:\Users\test\Desktop\テストディレクトリ"
' 末尾が\ではない場合、\を追加する。(未実装)
strFilePath = strFilePath & "\"
' 指定フォルダ内のファイル名を取得する。
strFileName = Dir(strFilePath, vbNormal)
' 結果シートを変数に設定する。
Dim resultBookSheet As Worksheet
Set resultBookSheet = Worksheets("sheet1")
' 結果シートの行数を宣言する。
Dim longGyo As Long
longGyo = 1
' 指定フォルダ内のファイルがなくなるまで繰り返す。
Do While strFileName <> ""
Dim result As Range
Dim firstAddress As String
' ファイルを開く。
With Workbooks.Open(Filename:=strFilePath & strFileName)
' ファイル内のシート数を取得する。
Dim sheetCnt As Long
sheetCnt = .Worksheets.Count
' 1シート目からnシート目まで繰り返す。
Dim i As Long
For i = 1 To sheetCnt
' What:=検索するデータを指定
' After:=検索を開始するセルを指定
' LookIn:=値を検索
' LookAt:=一部が一致するセルを検索
' SearchOrder:=列単位で検索(行単位のxlByColumnsを指定しているとセル結合が検索されない)
' SearchDirection:=順方向に検索
' MatchCase:=大文字と小文字を区別しない
' MatchByte:=半角と全角を区別しない
' SearchFormat:=セル書式は検索条件に指定しない
Set result = .Worksheets(i).Cells.Find(What:="APS" _
, After:=ActiveCell _
, LookIn:=xlValues _
, LookAt:=xlPart _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, MatchByte:=False _
, SearchFormat:=False)
If Not result Is Nothing Then
firstAddress = result.Address
Do
resultBookSheet.Cells(longGyo, 1).Value = strFilePath & strFileName
resultBookSheet.Cells(longGyo, 2).Value = .Worksheets(i).Name
' resultBookSheet.Cells(longGyo, 3).Value = "セル(" & result.Row & ", " & result.Column & ")"
resultBookSheet.Cells(longGyo, 3).Value = "セル(" & result.Address & ")"
resultBookSheet.Cells(longGyo, 4).Value = .Worksheets(i).Cells(result.Row, result.Column).Value
longGyo = longGyo + 1
Set result = .Worksheets(i).Cells.FindNext(result)
If result Is Nothing Then
Exit Do
End If
If result.Address = firstAddress Then
Exit Do
End If
Loop
End If
Next i
' 保存せずファイルを閉じる。
.Close SaveChanges:=False
End With
' 次のファイルを取得する。
strFileName = Dir()
Loop
' 画面チラつき防止を解除する。
Application.ScreenUpdating = True
End Sub
Wordで画像を挿入後に印刷するとやけに画質が悪いと思い、
調べてみると、Word側で解像度を自動で補正しているためでした。
「ファイル」-「オプション」-「詳細設定」を選択します。
「イメージのサイズと画質」の「ファイル内のイメージを圧縮しない」をチェックします。
こうすることで、画質が劣化することがなくなります。
ファイルサイズは重くなるため、注意。
Wordで画像を挿入した際、
画像の下側だけが表示される現象に遭遇し、その解決方法のメモ。
「ファイル」-「オプション」-「詳細設定」を選択します。
「切り取り、コピー、貼り付け」項目の
「図を挿入/貼り付ける形式」で「背面」を選択します。
ここが「行内」になっていると画像を行内に収めようと
画像の下側だけが表示されるようです。
Photshopの代わりとして有名な画像フリーソフトのGIMPを利用しました。
少しでもエビデンスの取得を効率化するために、
下記手順でテストを行うことを想定。
今回は全ケースを一括実行します。
DBはDB2としています。
@ECHO OFF
REM ケースごとのフォルダは作成済とします。
REM コマンドプロンプトを立ち上げ、「db2cmd 01_BAFORE_UT.bat」で実行します。
REM *************************************************************
REM DB設定(各自の設定に変更してください。)
REM *************************************************************
SET SERVER_I=XXXXX
SET USER_ID=YYYYY
SET USER_PASS=ZZZZZ
REM *************************************************************
REM DB2接続
REM -t:SQLファイル内のセミコロンをステートメント終了文字とする。
REM -v:コマンドテキストを標準出力にエコーする。
REM *************************************************************
db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%;
REM *************************************************************
REM エビデンスフォルダ設定
REM /b:フルパスを表示しない。
REM /ad:フォルダー名のみ表示する。
REM *************************************************************
DIR /b /ad > file_list.txt
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f %%a IN (file_list.txt) DO (
SET EVI_DIR=%%a
SET SQL_OUTPUT=!EVI_DIR!\10_SQL_LOG_Before
MKDIR !SQL_OUTPUT!
ECHO !SQL_OUTPUT!
REM *************************************************************
REM SQL実行
REM -t:SQLファイル内のセミコロンをステートメント終了文字とする。
REM -v:コマンドテキストを標準出力にエコーする。
REM -f:ファイル名を指定する。SQL文をファイルから読み込む。
REM *************************************************************
db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log
)
ENDLOCAL
DEL file_list.txt
REM *************************************************************
REM DB2切断
REM *************************************************************
db2 connect reset