背景
複数のpythonプログラムを自動で実行したく、古くから無料RPAツールとして知られているUWSCを使ってみました。
有償のRPAツールはローコードのものが主流ですが、このUWSCはスクリプトベースでWindows上で行う処理を自動化するというものです。
プログラミング初心者ですが、簡単にできましたので紹介させていただきます。
UWSCをダウンロード⇒起動
以下のサイトからUWSCをダウンロードします。
https://www.vector.co.jp/download/file/winnt/util/fh688296.html
ダウンロードしたらフォルダを解凍し、”UWSC.exe”をダブルクリックします。
このようなウィンドウが立ち上がります。
既にスクリプトを選択しているため、スクリプト名が表示されていますが、初めて立ち上げる方はまずスクリプトを読み込まないといけません。
次に、自動実行するためにスクリプトを組みます。
UWSCのスクリプト(2つのpythonプログラムを自動で実行)
//Get Window ID
DIM ID = GETID("cmd")
//Activate WIndow
CTRLWIN(ID,ACTIVATE)
//----------program1----------
//p
KBD(80,CLICK,10)
//y
KBD(89,CLICK,10)
//t
KBD(84,CLICK,10)
//h
KBD(72,CLICK,10)
//o
KBD(79,CLICK,10)
//n
KBD(78,CLICK,10)
//space
KBD(32,CLICK,10)
//a
KBD(65,CLICK,10)
//b
KBD(66,CLICK,10)
//c
KBD(67,CLICK,10)
//d
KBD(68,CLICK,10)
//e
KBD(69,CLICK,10)
//f
KBD(70,CLICK,10)
//g
KBD(71,CLICK,10)
//-
KBD(189,CLICK,10)
//h
KBD(72,CLICK,10)
//i
KBD(73,CLICK,10)
//.
KBD(190,CLICK,10)
//p
KBD(80,CLICK,10)
//y
KBD(89,CLICK,10)
//enter
KBD(13,CLICK,10)
//----------program2----------
//p
KBD(80,CLICK,1000)
//y
KBD(89,CLICK,10)
//t
KBD(84,CLICK,10)
//h
KBD(72,CLICK,10)
//o
KBD(79,CLICK,10)
//n
KBD(78,CLICK,10)
//space
KBD(32,CLICK,10)
//j
KBD(74,CLICK,10)
//k
KBD(75,CLICK,10)
//l
KBD(76,CLICK,10)
//m
KBD(77,CLICK,10)
//n
KBD(78,CLICK,10)
//o
KBD(79,CLICK,10)
//p
KBD(80,CLICK,10)
//-
KBD(189,CLICK,10)
//q
KBD(81,CLICK,10)
//r
KBD(82,CLICK,10)
//s
KBD(83,CLICK,10)
//t
KBD(84,CLICK,10)
//u
KBD(85,CLICK,10)
//.
KBD(190,CLICK,10)
//p
KBD(80,CLICK,10)
//y
KBD(89,CLICK,10)
//enter
KBD(13,CLICK,10)
スクリプトの内容
“abcdefg-hi.py”、”jklmnop-qrstu.py”という2つのpythonプログラムを自動で実行します。
流れは以下です。
- コマンドプロンプトの画面IDを取得
- コマンドプロンプトをアクティブにする
- KBD関数で文字を打ち込んでいく
SENDSTR関数を使えば文字列をいっぺんに送信できるはずなのですが、何故か動作しなかったので、KBD関数で地道に打ち込みました。
実行結果
UWSCスクリプトを実行してみました。
C:\work\uwsc>python abcdefg-hi.py
program1
C:\work\uwsc>python jklmnop-qrstu.py
program2
pythonプログラム自体は文字列を表示するだけの簡単なもので試行しています。
次に、これを繰り返しできるようにしたいと思います。
繰り返しの処理を入れる
// setting repeat count
DIM repeat_count = 3
//Get Window ID
DIM ID = GETID("cmd")
//Activate Window
CTRLWIN(ID, ACTIVATE)
SLEEP(5)
FOR i = 1 TO repeat_count
//----------program1----------
// p
KBD(80, CLICK, 10)
// y
KBD(89, CLICK, 10)
// t
KBD(84, CLICK, 10)
// h
KBD(72, CLICK, 10)
// o
KBD(79, CLICK, 10)
// n
KBD(78, CLICK, 10)
// space
KBD(32, CLICK, 10)
// a
KBD(65, CLICK, 10)
// b
KBD(66, CLICK, 10)
// c
KBD(67, CLICK, 10)
// d
KBD(68, CLICK, 10)
// e
KBD(69, CLICK, 10)
// f
KBD(70, CLICK, 10)
// g
KBD(71, CLICK, 10)
// -
KBD(189, CLICK, 10)
// h
KBD(72, CLICK, 10)
// i
KBD(73, CLICK, 10)
// .
KBD(190, CLICK, 10)
// p
KBD(80, CLICK, 10)
// y
KBD(89, CLICK, 10)
// enter
KBD(13, CLICK, 10)
//----------program2----------
// p
KBD(80, CLICK, 1000)
// y
KBD(89, CLICK, 10)
// t
KBD(84, CLICK, 10)
// h
KBD(72, CLICK, 10)
// o
KBD(79, CLICK, 10)
// n
KBD(78, CLICK, 10)
// space
KBD(32, CLICK, 10)
// j
KBD(74, CLICK, 10)
// k
KBD(75, CLICK, 10)
// l
KBD(76, CLICK, 10)
// m
KBD(77, CLICK, 10)
// n
KBD(78, CLICK, 10)
// o
KBD(79, CLICK, 10)
// p
KBD(80, CLICK, 10)
// -
KBD(189, CLICK, 10)
// q
KBD(81, CLICK, 10)
// r
KBD(82, CLICK, 10)
// s
KBD(83, CLICK, 10)
// t
KBD(84, CLICK, 10)
// u
KBD(85, CLICK, 10)
// .
KBD(190, CLICK, 10)
// p
KBD(80, CLICK, 10)
// y
KBD(89, CLICK, 10)
// enter
KBD(13, CLICK, 10)
SLEEP(5) // 少し待機してから次の繰り返し
NEXT
スクリプト変更点
スクリプトに以下変更を加えました。
- 変数repeat_countで繰り返し回数を設定できるようにした
- FOR文でrepeat_countで指定した回数繰り返す処理を入れた
実行結果
C:\work\uwsc>python abcdefg-hi.py
program1
C:\work\uwsc>python jklmnop-qrstu.py
program2
C:\work\uwsc>python abcdefg-hi.py
program1
C:\work\uwsc>python jklmnop-qrstu.py
program2
C:\work\uwsc>python abcdefg-hi.py
program1
C:\work\uwsc>python jklmnop-qrstu.py
program2
あまり面白くはないですが、3回繰り返しできました。