sikulixインストール

javaが入ってないときは、ここからダウンロードして実行します。

sikulixは、画像をクリックして操作を自動化するソフト。
こちらから3つのダウンロードする。

https://raiman.github.io/SikuliX1/downloads.html

sikulixide-2.0.5.jarからJythonは組み込まれているようで、Jython interpreterは必要ないようです。

ダウンロードしたら、コマンドプロンプトでjava -jar ファイル名を3つ分実行する。-verboseも付けると経過が見える。

順番は、以下の順。

java -jar  jython-standalone-????.jar

このjython-standalone-????.jarファイルは、javaコマンド実行でC:\Users\ここはログインユーザー名\AppData\Roaming\Sikulix\Extensionsに移動する。だからc:\sikulixフォルダから無くなるが気にしない。

java -jar   sikulixapi.jar

java -jar  sikulix-????.jar

最後のコマンドでIEDが起動します。???.jarをマウスでダブルクリックでも実行します。

以後は、batファイルのショートカットをディスクトップかメニューに追加して実行する。ここではバージョン2.04でファイル名はjava -jar sikulixide-2.0.4.jarです。batの内容は以下。ショートカットファイルの作成は、このbatファイルを右クリックメニュー。

cd c:\sikulix
java -jar sikulixide-2.0.4.jar

以下はbatファイルを実行した状態。これでIEDが開く。

C:\sikulixフォルダができ、sikulix.batを実行した状態

ハローワークの検索結果の一覧から、印刷形式にして順番に印刷するコード。pngの拡張子は実際は画像が入る。コードは、Python。


   L=[]
#令和元を探し、座標を登録 。Lの配列に保存する
for i in findAll("reiwa1.png"):
    L1=i.getCenter()
 #   L1.highlight(MARKTIME)
    L2=Location(L1.getX()-680,L1.getY()+20)
    mouseMove(L2)
    wait(0.1)
    L.append(L2)
#並び替え
LL=sorted(L, key=lambda m:m.y)
for i in  LL:
     print i

#登録した座標を順番に印刷
for i in  LL:
    click(i)
    wait(2)
    wheel(WHEEL_DOWN,26)
    wait(1)
    click("1558577706484.png")
    click("ten3tu.png")
    click("ten3tu2print.png")
    #wait(5)
    exists("1558577801825.png",5)#画層が現れるまで待つ。最大5秒
    wait(1)#印刷のイメージ待ち
    click("1558577801825.png")
    click(Location(14, 19))
    wait(1)

findallは、ある画像を見える範囲で全部を検索する。
existsは、ある画像が現れるまで待つ。
#はPythonのコメント

ハローワークの検索の印刷コードは、ハローワークのサイトが大きく変わって使えません。

バッファローのブロードバンドルーターを操作するコードの例はこちら

C言語は無くなった?

Pythonがトップ。C/C++は6%。機械に近いC言語とPythonを比べたらあかんわな。

Javaも抜くし、プログラミングが一般化、Excelのように一般化したということ。サイトは違うが2000年頃はPythonはRubyの倍程度。VBA程度?。Phyhonすご。プログラムのコードの見た目を統一したのがすごい。空白文字やインデントの統一。

WindowsのBATでバックアップ

コピー元とコピー先。これを略して元と先と書く。世代管理は、世代。

robocopy 元 先 /mirでバックアップはできる。

さて、世代管理は、
コピーする前に先の変更ファイルを世代用のフォルダにコピーしないといけない。
1,削除されているファイル:比較して、古い方を世代にコピー
2,ファイルやフォルダはあるが日付が新しい:古い日付の方を世代にコピー
3,フォルダ名やファイル名が変わった:比較して、無いフォルダとファイルを世代にコピー

かな?

linuxで使うこれか。windowsでも

 

setを使って変数にデータを入れる。Windowsのbatファイル

C:\Users\username>set aa=123

C:\Users\username>echo %aa%
123

変数aaに123を入れる例。Setコマンドを使う。
Echoコマンドは出力。Printね。
%aa%の%と%で囲むと変数として扱う。
変数(コマンドプロンプトの環境変数)を見る。ほとんどがWindowsの環境変数。Setコマンドで全部が見れる。

C:\Users\username>set
一覧。
一行一行に
変数名=値の書式で見える。

aa変数を見たい場合は、
Setコマンドの出力結果をフィルタ(Findコマンド)に通す。
|はパイプ。Setコマンドの出力結果をFindコマンドの入力にする。

C:\Users\username>set | find “aa”
aa=123

さて本題。
次は、変数の値(コマンドプロンプトに表示するので基本、文字列)の一部を取り出す。

C:\Users\username>set aa=12345

C:\Users\username>set aa=%aa:~2,2%

C:\Users\username>echo %aa%
34

%aa:~2,2%は、aa変数の2文字から2文字分取り出す。
使い方というか書式は、
変数:%処理内容%。
変数がaa、処理内容が~2,2。
次は置換の例。

C:\Users\username>set aa=12345   前にaaに12345を入れていたらいらない。

C:\Users\username>set bb=%aa:3=8%

C:\Users\username>echo %bb%
12845

3を8に変えた。次は、削除の例。

C:\Users\username>set cc=%aa:3=%

C:\Users\username>echo %cc%
1245

3を削除した。

DateコマンドとTimeコマンドの実行例

C:\Users\usename>date
現在の日付: 2018/11/16
新しい日付を入力してください: (年-月-日)

C:\Users\usename>time
現在の時刻: 13:17:45.72
新しい時刻を入力してください:

変更を促されるが無視してエンターキーで終わる。
単にdateやtimeコマンドを実行すると、余計な文字列が見える。
現在の時間とか現在の時刻。
それに新しい日付。。。や新しい時刻。。。も。
実際は違う。
次は、DateコマンドとTimeコマンドの出力を変数に入れる例。

C:\Users\username>set aa=%date%

C:\Users\username>set bb=%time%

C:\Users\username>echo %aa%              %bb%
2018/11/18            14:31:42.24

Date、Timeコマンドは、純粋に日付と時間を出力している。

Dateコマンドの/を削除する。

C:\Users\usename>set aa=%date:/=%

C:\Users\usename>echo %aa%
20181118

Timeコマンドの空白を0にする。

C:\Users\usename>set tt=%time: =0%

C:\Users\usename>echo %tt%
13:18:29.73

Setコマンドの使い方は、ここが参考になる。

set 変数=%コマンド:変換元=変換先%

変換先が無いと消すことになる。aa=%date:/=%は、dateコマンドの出力の/を削除する。その結果を、aa変数に入れる。%time: =0%の場合は、timeコマンドの出力の空白文字を0にするという意味。

取説を読みますか?完璧はいらない

電気製品を買ってきて取扱説明書を網羅的に読む人はいないと思う。動かすとだいたいわかる。
一時期、日本製のテレビ、電話機にあったボタンの数に比べ機能が多く、階層的なメニューというか矢印キーを使うようなメニュー操作ではなく、特定のボタンに機能を割り当てるため、あるボタンには長押しなど取説無しには設定できないことがあった。
今の製品は、取説無しでも操作できるディスプレイがある。そして、シンプルなボタン。

六十歳近くになってるから思うのかもしれない。
いろんな知識をすでに持っている。
不要と判断できるだけの知識がある。
新しい分野を学習すると何でもかんでも記憶しようとするが。
それでも、
六十歳近いから、取捨選択できる。
知らないということへの心的なプレッシャーが無い。
「え!知らないの」に対してそれ使える?と考える。

ベースがあれば、
ほとんどの仕事は多くことを覚える必要はない。
・代用方法
・調べる方法
・簡易取説の配置
・シール貼り
使っていると操作上重要な点や、記憶する項目は決まってくる。
新しい機器を扱う時は、取説を読んだとしてもその時だけ、シンプルにすることを意識するようになった。本来の性格、「めんどくさい」を発揮するようになった。

On Errorの活用法 エラートラップ罠

トラップとは罠のこと。
「トラップ を 仕掛ける」とは、「罠を仕掛ける」。
On Errorでエラーになった時の処理を 仕掛ける。ということ。
「AppActivate “無題 – メモ帳”」は、新規にメモ帳が開いているかどうかでエラーになる。AppActivateが関数ならエラートラップは使わない。
r=AppActivate(“無題 – メモ帳”)で、大抵は戻り値rの値をチェックして繰り返せばいい。Do LoopでUntil r=Trueでいい。
あいにく、AppActivateステートメントは、関数じゃない。だからエラートラップを使う。以下は、新規メモ帳(タイトルが無題 – メモ帳)が起動しないと無限ループ。

Option Explicit

Sub ボタン1_Click()
    On Error GoTo myErr 'トラップを掛ける
    AppActivate "無題 - メモ帳" '-は半角、前後に半角空白
    SendKeys "%{F4}", True 'これはエラーになることない
    Exit Sub
myErr:
    Resume 'エラー処理をもう一度
End Sub

もし、複数の新規メモ帳があったら1つだけ閉じる。全部閉じるならDoLoopでAppActivateからSendKeysまでを囲み、Resumeを削除する。つまり新規のメモ帳が見つからないとエラーになってmyErrに飛んで終わる。

関数じゃないためとか、対象の引数や要素番号があるかチェックする機能が無い場合はOn Error。使えます。

ファイルの生の中身を見る バイナリ、テキストエディター

調査はいいこと。

バイナリエディター。30年前に日本語メッセージを変更したことがあった。ただ、文字数、位置を変えたらだめ。

今、どんなことが書いてあるか見るならメモ帳かな。ただし、保存しない!。バイナリファイルをテキストエディターで保存すると改変されて使えん、実行できなくなる。テキストエディターは、データを何とか文字コードに解釈して表示するため。

生のデータを見るのはバイナリエディター、ビューアの方がええ。文字だけなら、テキスト。

ファイルは二種類ある。