■ このスレッドは過去ログ倉庫に格納されています
自動化ツールUWSC使いよ集まれ14
- 1 :名無しさん@お腹いっぱい。:2015/03/08(日) 00:18:57.40 ID:itdOhEn30.net
- Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html
●UWSC 掲示板(※作成依頼掲示版ではありません)
質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること
上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi
ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past
●UWSC - Wikipedia
ttp://ja.wikipedia.org/wiki/UWSC
●使い方・基礎解説学習サイト
ttp://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
ttp://www.confrage.com/uwsc/
ttp://necro.jp/dev/uwsc/
ttp://park14.wakwak.com/~simizu/uwsc/fruwsc.html
ttp://canal22.org/
ttp://big.tm.land.to/handbook/uwsc.htm
ttp://www.game-rev.com/review/gameut/uwsc.html
●スクリプトテンプレサイト
ttp://izagne.com/uwsc/
ttp://scripts.web.fc2.com/
ttp://www.nagomi-jp.net/~liners/
ttp://nem.symphonic-net.com/uwsct/0610uwsct.html
ttp://siromasa.digi2.jp/uwsc/
ttp://iriyak.adam.ne.jp/uwsc.html
- 369 :名無しさん@お腹いっぱい。:2015/04/27(月) 10:52:58.29 ID:ONdrkes30.net
- >>367
ソース取得って出来るん?
- 370 :名無しさん@お腹いっぱい。:2015/04/27(月) 10:53:23.93 ID:YPPU9HGD0.net
- そもそもサイズが違ってくるとは思えないのだけど
- 371 :名無しさん@お腹いっぱい。:2015/04/27(月) 11:05:28.84 ID:YPPU9HGD0.net
- >>370事故レス
bmp以外のpngやjpgで保存すれば違ってくるかもしれないんだね
- 372 :名無しさん@お腹いっぱい。:2015/04/27(月) 11:20:05.80 ID:4FCKudIE0.net
- レスありがとうございます。
想定するケースとしては、Yahooのニューストピックの更新チェックのようなイメージでした。
ですのでAPIや内部要素、chkimgなどでは難しい?のかなと思い、実現するにはサイズ比較が比較的簡単なのかなと思い
そのような内容で質問をさせて頂いておりました。もし、それらの方法でも実現できるようでしたらすみません。
http://minus-k.com/nejitsu/loader/up14285.png
ハッシュとのレスを頂いたので探したところ、バイナリ比較するソフトがありましたので、
UWSCのchkimgでソフトウェア画面の「異なるファイルです」の表示をフラグとして、画面の監視を実現しようと思いました。
http://minus-k.com/nejitsu/loader/up14286.png
仰っていたハッシュの取り方とはなんだか違う感じもして、また、スマートなやり方ではないかもしれませんが・・・。
もっとスマートなやり方はあったりするでしょうか?
- 373 :名無しさん@お腹いっぱい。:2015/04/27(月) 12:25:06.40 ID:UJWo+DEc0.net
- >>372
htmlのTEXTが変化してると思うけど?
- 374 :名無しさん@お腹いっぱい。:2015/04/27(月) 12:25:58.66 ID:c7Lv5adA0.net
- やっぱり要素取得して前回と今回の文字列比較のほうが簡単だと思うけど
- 375 :名無しさん@お腹いっぱい。:2015/04/27(月) 12:37:25.54 ID:KOWxqShr0.net
- >>372
一番手軽にやるならsaveimgでクリップボードにコピって
chkimgでクリップボードと比較するかな
- 376 :名無しさん@お腹いっぱい。:2015/04/27(月) 13:17:58.51 ID:4FCKudIE0.net
- レスありがとうございます。
なるほど、saveimgでクリップボードコピーや画像保存したデータをchkimgに渡せば画像を比較することができるのですね。
saveimgしたものをchkimgに渡すのを思いつきませんでした。。
また、
htmlのソースファイルから変化した部分を探すのは難しいのでは、とそればっかり考えていましたが、
ソースではなくWebページの指定した部分の文字列比較でも実現できそうですね。
どちらも考えが及びませんでした。。
頂いたご意見を参考にしてもっと良いやり方でスクリプトが作れそうです。
これらで作ってみようと思います、アドバイス頂いてどうもありがとうございます。
- 377 :名無しさん@お腹いっぱい。:2015/04/27(月) 20:15:37.04 ID:Eo+zqvFe0.net
- genymotionというandroidエミュレーターをuwscを用いバックグラウンドで操作させたいのですが、free版ではできませんでした
uwscShare版でexe化しbatファイル等でキックすることにより解決するのでしょうか
それともやはりshare版にしたところでfree版でバックグラウンド動作させられないものはさせられませんか?
- 378 :名無しさん@お腹いっぱい。:2015/04/27(月) 21:12:59.49 ID:LEmMXEzJ0.net
- トライアルで試してみれば?
- 379 :名無しさん@お腹いっぱい。:2015/04/27(月) 21:16:53.47 ID:RNEIX/K50.net
- テンプレレベルの話として裏に拘るなら仮想化
- 380 :名無しさん@お腹いっぱい。:2015/04/27(月) 21:21:13.48 ID:4SSUH+1G0.net
- 何も解決にならんと思うけど
>uwsc.exe スクリプト.uws
をバッチで投げるだけ
UWSC自体はもともとバックグラウンド可能だけど
genymotionとかいうのがバックグラウンド起動に対応してなければコンソールなりウインドウが上がってくるでしょ
起動しっぱなしで特に設定が不要 or CUIなりWEBなり他のアタッチができる状態なら
システムアカウントから立ち上げればウインドウ自体出てこないよ
厳密にはシステムアカウントのデスクトップに上がってくるけど
それもサービスとしてあげればAPI経由しなくて済むから完全にサイレントになる
- 381 :名無しさん@お腹いっぱい。:2015/04/27(月) 21:32:51.42 ID:RNEIX/K50.net
- Androidエミュって時点でゲームなんだろうけれどね
- 382 :名無しさん@お腹いっぱい。:2015/04/28(火) 10:42:28.50 ID:BUmkg9z00.net
- バックグラウンドで画像認識込みはあきらめる
仮想化環境でgenymotionはあきらめる
以前に雑魚の俺が2時間無駄にしてこれに辿り着いた
- 383 :名無しさん@お腹いっぱい。:2015/04/29(水) 07:36:12.75 ID:D7BNJyP40.net
- >>334
>>337
そうですね
>>330>>332さんありがとう
- 384 :名無しさん@お腹いっぱい。:2015/04/29(水) 07:45:04.54 ID:D7BNJyP40.net
- それと俺の場合はwin7ですけどヘルプは特に何もしてないんですが読めました
- 385 :名無しさん@お腹いっぱい。:2015/04/29(水) 08:32:37.80 ID:xDAJ7stc0.net
- 俺の場合も何も変更せず読めたけど、あれってPCのどのセキュリティ設定を参照されるんだろうな
- 386 :名無しさん@お腹いっぱい。:2015/04/29(水) 10:16:43.17 ID:LQJ9309Q0.net
- >>385
IEのセキュリティ設定をわざわざ インターネット:高 に変える
これやるとほとんどのアクティブコンテンツが見れなくなるからふつうはしない
その状態でもヘルプが見たいという人のためのWinHlp32というアップデートモジュールがあるんだが
これもデフォルトなら勝手に入ってくるし
わざわざがちがちに固めなければ見れなくなることなんてないはずなんだが
- 387 :名無しさん@お腹いっぱい。:2015/04/29(水) 19:41:50.55 ID:O66CU1E70.net
- 最近使い始めて画像認識とか便利だけど
サイトの読み込みまちの調整が難しいな…
十分に時間とると効率悪くなっちゃうし
- 388 :名無しさん@お腹いっぱい。:2015/04/29(水) 19:45:54.78 ID:jCE5jBuY0.net
- IE制限は痛いしなぁ
- 389 :名無しさん@お腹いっぱい。:2015/04/29(水) 21:26:21.49 ID:AmN3CDh6G
- >>387
busywait()
じゃあかんの?噛み合ってなかったらすまん
- 390 :名無しさん@お腹いっぱい。:2015/04/29(水) 22:00:57.03 ID:LQJ9309Q0.net
- >>387
htmlにOnLoad()投げいれて読み込み完了をフックしたら?
- 391 :名無しさん@お腹いっぱい。:2015/04/29(水) 22:07:37.97 ID:glG4jNOE0.net
- BusyIE()でずっと待ちになって進まない時があるんだが、どうやって対処してる?
- 392 :名無しさん@お腹いっぱい。:2015/04/29(水) 22:12:36.16 ID:TX9JzT/s0.net
- タイムアウト処理付ければいいだけだろ
- 393 :名無しさん@お腹いっぱい。:2015/04/29(水) 22:15:36.94 ID:glG4jNOE0.net
- >>392
これがアスペか
- 394 :名無しさん@お腹いっぱい。:2015/04/29(水) 22:23:35.35 ID:NCIxQn750.net
- 普通は
DownloadComplete
NavigateComplete2
DocumentComplete
の順でイベントが発生するんだけど
ナビ先がキャッシュ済みとして扱われると
DownloadComplete
しか発生しないっぽいのでそれを検知してるなぁ
- 395 :名無しさん@お腹いっぱい。:2015/04/29(水) 22:26:16.00 ID:LQJ9309Q0.net
- >387
あとはIEコンポーネントを利用したスキンブラウザなら
IEと同じコントロール方法で行ける上に、タスクバーに読み込み中や完了表示が出るものがあるから
いろいろ試してみたら?
自分の環境ではDonutRAPTがタスクバーにプログレスバーと完了メッセージが出るけど
残念ながらレイアウトがIE9だから最新のブラウザに合わせたサイトだと動かないこともあったり
LunaやFoxとかはどうなんだろうね
- 396 :名無しさん@お腹いっぱい。:2015/04/29(水) 23:15:08.83 ID:hwf+gCEd0.net
- 手詰まりだからちょっと聞きたい
OS再インスコしてからuwscを再インストールしたんだけど画像認識の部分がうまく動いてくれねえ
uwscとかのバージョンは前と変えてないしスクリプトも変えてないから動くはずなんだけどuwscって導入に前提あるんだっけ?
管理者権限と互換性は試した ググってもわからないしお願いします・・・
- 397 :名無しさん@お腹いっぱい。:2015/04/29(水) 23:19:02.36 ID:mbxknYry0.net
- >>396
ディスプレイの設定が少し違うだけで、同じ画像ではなくなる可能性がある
設定をあわせるか、画像を作り直す
- 398 :名無しさん@お腹いっぱい。:2015/04/29(水) 23:20:13.70 ID:NCIxQn750.net
- 厳密にはディスプレイドライバのバージョンが違うだけでも駄目になる可能性がある
- 399 :名無しさん@お腹いっぱい。:2015/04/30(木) 00:24:31.66 ID:Yl6whR7h0.net
- 色々ありがと
一応画像作りなおしたんだけどねえ・・・
前までだとuwscの本体が一瞬消えて画像を認識してたっぽいけど消えることなくループしてるから画像認識自体が行われてない感じもする・・・?
- 400 :名無しさん@お腹いっぱい。:2015/04/30(木) 06:22:42.96 ID:z9KaCBhe0.net
- dekita = faulse
while !dekita
dekita = CHKIMG( a.bmp )
print "chkimg: " + dekita
wend
- 401 :名無しさん@お腹いっぱい。:2015/04/30(木) 06:52:56.67 ID:pDR2lo4N0.net
- >>399
uwscの操作ウインドウはchkimgの時消えなくても
問題ないように仕様変更されたはず
print chkimg("xxx")
のみ書いて動作確認くらいしたら?
- 402 :名無しさん@お腹いっぱい。:2015/05/01(金) 15:45:24.69 ID:Sbcjmgv80.net
- 前スレに似てる画像を判定してくれるってやつ上げてくれた人いたからそれ使えばいいかと
- 403 :名無しさん@お腹いっぱい。:2015/05/02(土) 02:17:10.41 ID:4zU0do9h0.net
- 昨日今日手を出したような本当の初心者のような質問ですみません。
ifb CHKIMG("ファイル名.拡張子")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x , y , 100)
endif
これで対象のファイルをクリックどころかカーソルが対象のファイルへ移動もしません。
何が間違っているかご教授願えませんか?
もう一つ
画像からの作業を断念して手動で記録して再生させようとしたのですがそれもうまくいきませんでした。
カーソルは移動するのですが最初のクリックの時点で止まってしまいます。
その最初のクリックすら機能していません。
一応ググってから来たのですが自分では解決できませんでした。
どうかよろしくお願いします。
- 404 :名無しさん@お腹いっぱい。:2015/05/02(土) 02:26:29.55 ID:N14lG4qZ0.net
- >>403
まず、ペイントを全画面にして、クリックしたら点を描けるようにして
BTN(LEFT, CLICK, x , y , 100)
が動作しているか確認
次に、
ifb CHKIMG("ファイル名.拡張子")
print "見つけた"
endif
で、CHKIMG("ファイル名.拡張子")が動作しているか確認
- 405 :名無しさん@お腹いっぱい。:2015/05/02(土) 05:18:48.08 ID:sb1MdTom0.net
- >>403
エスパー的指摘なので間違ってたらすまん
画像はBmp形式しか認識しません
その点は大丈夫ですか?
- 406 :名無しさん@お腹いっぱい。:2015/05/02(土) 06:53:30.42 ID:4FNBTSJm0.net
- >>404
今出先で試せませんが帰ったら試してみます。
2つめも原因がわかるならお願いします。
>>405
そこは問題無いです。
- 407 :名無しさん@お腹いっぱい。:2015/05/02(土) 08:06:44.24 ID:ZnxdJHaC0.net
- 画像認識が正しく動作しているか確認するなら
ELSE つかってどっちに流れているか確認した方がいい
後、クリックは相手次第な所があるから
相手の反応が悪い場合はDOWNして一定時間ウェイトを入れてからUPする必要があるケースもあるし
更に相手に対自動操作が施されている場合は
その座標までマウスを連続的に移動させないといけないケースもある
2つめは高レベルでは記録できないケースなんでしょう
低レベルで記録してみる
標準コントロールを使用していない対自動操作されている可能性・・・ゲームかな
- 408 :名無しさん@お腹いっぱい。:2015/05/02(土) 09:05:43.01 ID:onf4uhRI0.net
- >>406
後半
記録したスクリプトをセーブして、中身のテキストをうp
- 409 :名無しさん@お腹いっぱい。:2015/05/02(土) 10:30:01.10 ID:s0fv0qrW0.net
- どうせ対策されてるゲームとかでしょ
- 410 :名無しさん@お腹いっぱい。:2015/05/03(日) 16:41:08.84 ID:zcejMfJO0.net
- 質問
GetKeyState( VK_0〜VK_9 )がテンキーに反応しない。
テンキーを認識させる方法を教えてください。
- 411 :名無しさん@お腹いっぱい。:2015/05/03(日) 16:45:44.46 ID:JFWRxiYM0.net
- 予約語一覧にある
- 412 :名無しさん@お腹いっぱい。:2015/05/03(日) 17:11:23.49 ID:zcejMfJO0.net
- >>411
テンキュー!VK_NUMPADか。見落としてた。
- 413 :名無しさん@お腹いっぱい。:2015/05/03(日) 21:54:59.51 ID:ldDtFoYp1
- ファイル名を変更するものを作っています
それをもっと楽にしたいです
ファイルマネージャーでjpgファイルが並んでいます
例)
20150100001.jpg
20150100002.jpg
20150100003.jpg
20150100004.jpg
20150100005.jpg
…
それをある番号から番号まで3つ区切りで1つずつリネームします
20150100001.jpg→A00639_1.jpg
20150100002.jpg→A00639_2.jpg
20150100003.jpg→A00639_3.jpg
20150100004.jpg→A00639_1.jpg
20150100005.jpg→A00639_2.jpg
…
リネーム後は最後尾に移動するため再びリネームはしません
- 414 :名無しさん@お腹いっぱい。:2015/05/03(日) 21:55:36.70 ID:ldDtFoYp1
- 例) 作ったもの
sleep(1)
ACW(GETID("D:\","CabinetWClass"),0,0,960,1160,0)
BTN(LEFT,CLICK,262,14,10)
ACW(GETID("D:\","CabinetWClass"),0,0,960,1160,0)
BTN(LEFT,CLICK,119,139,100)
//F2→バックスペース→A
KBD(VK_F2,CLICK,100)
KBD(VK_BACK,CLICK,100)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)
//リネーム部 639 にリネーム
KBD(VK_NUMPAD0,CLICK,100)
KBD(VK_NUMPAD0,CLICK,100)
KBD(VK_NUMPAD6,CLICK,100)
KBD(VK_NUMPAD3,CLICK,100)
KBD(VK_NUMPAD9,CLICK,100)
//
KBD(VK_RSHIFT,DOWN,100)
KBD(VK_OEM_102,DOWN,100)
KBD(VK_RSHIFT,UP,100)
KBD(VK_OEM_102,UP,100)
//_1
KBD(VK_1,CLICK,100)
//
KBD(VK_RETURN,CLICK,100)
- 415 :名無しさん@お腹いっぱい。:2015/05/03(日) 21:59:19.69 ID:ldDtFoYp1
- 間違えました
よろしくお願いします
それをある番号から番号まで3つ区切りで1つずつリネームします
20150100001.jpg→A00639_1.jpg
20150100002.jpg→A00639_2.jpg
20150100003.jpg→A00639_3.jpg
20150100004.jpg→A00640_1.jpg
20150100005.jpg→A00640_2.jpg
- 416 :名無しさん@お腹いっぱい。:2015/05/03(日) 23:09:05.89 ID:iNx5MiAD0.net
- ソートと配列について教えて下さい。ヘルプで配列を検索しても理解できませんでした。
testフォルダには
「赤-青-20150503_195501.txt」 「薄紅-白桃-20150503_200144.txt」
のようなテキストファイルが大量にあり、
それらのファイル名をいくつかの方法で
list.txtに列挙したいと考えております。
まず試行錯誤して以下のように書いてみました。
- 417 :名無しさん@お腹いっぱい。:2015/05/03(日) 23:09:37.93 ID:iNx5MiAD0.net
- DIR =".\test"
URL ="http://localhost/"
file = "list.txt"
ID = FOPEN(file,F_WRITE8)
NUM = GETDIR(DIR)
for A = 0 to (NUM-1)
ファイル名 = GETDIR_FILES[A]
年 = COPY(ファイル名,POS("-",ファイル名,2)+1,4)//2015の部分
月 = COPY(ファイル名,POS("-",ファイル名,2)+5,2)//05の部分
日 = COPY(ファイル名,POS("-",ファイル名,2)+7,2)//03の部分 同様に時分秒も可
先攻 = COPY(ファイル名,1,POS("-",ファイル名,1)-1)//赤や薄紅の取得
後攻 = COPY(ファイル名,POS("-",ファイル名,1)+1,POS("-",ファイル名,2)-POS("-",ファイル名,1)-1)//青や白桃の取得
年月日 = 年+"/"+月+"/"+日
開始日 = "開始日は"+年月日
ファイル名=URL+GETDIR_FILES[A]
print 開始日
print ファイル名
print 先攻+後攻
//リストへの書き込み
FPUT(ID,開始日 )//
FPUT(ID,ファイル名 )//
NEXT
FCLOSE(ID)
sleep(19)
このスクリプトでとりあえずファイル名のあいうえお順(文字コード順??)で
列挙ができたのですが、列挙する際並び替えしたいのです。
ソート?の方法が理解できないので、教えてください。
色々な条件で並び替えする予定では有りますが、(”後攻”の文字コード順とか、或いはファイルの中身のX行目を参照したり)
まず基本的と思われる、年月日でのソートを教えていただけますでしょうか。
- 418 :名無しさん@お腹いっぱい。:2015/05/03(日) 23:32:19.74 ID:8eRUMEfQJ
- >>415
変なこだわりでプログラミングするより
コマンドプロンプトのRENコマンドでリネームしたほうが早い
Excelとかだと連番操作は簡単なのでリネーム前、リネーム後の文字列作って
それをもとにRENコマンドを流せばいい
- 419 :名無しさん@お腹いっぱい。:2015/05/04(月) 00:20:23.35 ID:WM9pP7Em0.net
- そこまでいくとUWSCでやる処理じゃないと思うけど
宣言時にHASH_SORTを指定した連想配列に、年月日をキーにしてファイル名を代入すればいいかと
年月日かぶりの時の処理は考えてね
- 420 :名無しさん@お腹いっぱい。:2015/05/04(月) 01:23:01.29 ID:CDFIlBMyk
- >>418
ありがとうございます
RENコマンドがくわしくないのもあるのですが
自分の知識ではうまいことできるかわからなかったのです
Excelとかの連携ですがそれなら私の技術的にも可能だと思います
D:\jpegファイルのあるフォルダ>dir > jpg ファイルのリスト.txt
これをExcelに流してやるところがちょっと難しいですが
それと説明不足ですいませんjpgファイルはこんな感じで規則性がありません
例)
20150501_ランダムな数字1.jpg
20150501_ランダムな数字2.jpg
20150501_ランダムな数字3.jpg
20150501_ランダムな数字4.jpg
20150501_ランダムな数字5.jpg
…
- 421 :名無しさん@お腹いっぱい。:2015/05/04(月) 01:21:07.50 ID:POSm0sDu0.net
- よくわからんけどこんでいいの?
Dim DIR = "D:\MyDoc\Desktop\新しいフォルダー"
Dim File = "list.txt"
Dim 年[0]; Dim 月[0]; Dim 日[0]; Dim 時[0]
Dim 分[0]; Dim 秒[0]; Dim 先[0]; Dim 後[0]
NUM = GETDIR(DIR)
ReSize(年, NUM); ReSize(月, NUM); ReSize(日, NUM); ReSize(時, NUM)
ReSize(分, NUM); ReSize(秒, NUM); ReSize(先, NUM); ReSize(後, NUM)
For A = 0 to NUM -1
Dim ファイル = GETDIR_FILES[A]
年[A] = COPY(ファイル, POS("-",ファイル,2)+1, 4)
月[A] = COPY(ファイル, POS("-",ファイル,2)+5, 2)
日[A] = COPY(ファイル, POS("-",ファイル,2)+7, 2)
時[A] = COPY(ファイル, POS("_",ファイル,1)+1, 2)
分[A] = COPY(ファイル, POS("_",ファイル,1)+3, 2)
秒[A] = COPY(ファイル, POS("_",ファイル,1)+5, 2)
先[A] = COPY(ファイル, 1, POS("-",ファイル,1) -1)
後[A] = COPY(ファイル, POS("-",ファイル,1)+1, POS("-",ファイル,2)-POS("-",ファイル,1)-1)
Next
//続く
- 422 :名無しさん@お腹いっぱい。:2015/05/04(月) 01:21:38.10 ID:POSm0sDu0.net
- //続いた
Fukidasi("ソート順 [N]年 [G]月 [H]日 [J]時 [F]分 [B]秒 [P]先 [S]後 [ESC]終了")
Repeat
Ifb GetKeyState(VK_N)
QSORT(年, QSRT_A, 月,日,時,分,秒,先,後); Break
ElseIf GetKeyState(VK_G)
QSORT(月, QSRT_A, 年,日,時,分,秒,先,後); Break
ElseIf GetKeyState(VK_H)
QSORT(日, QSRT_A, 年,月,時,分,秒,先,後); Break
ElseIf GetKeyState(VK_J)
QSORT(時, QSRT_A, 年,月,日,分,秒,先,後); Break
ElseIf GetKeyState(VK_F)
QSORT(分, QSRT_A, 年,月,日,時,秒,先,後); Break
ElseIf GetKeyState(VK_B)
QSORT(秒, QSRT_A, 年,月,日,時,分,先,後); Break
ElseIf GetKeyState(VK_P)
QSORT(先, QSRT_A, 年,月,日,時,分,秒,後); Break
ElseIf GetKeyState(VK_S)
QSORT(後, QSRT_A, 年,月,日,時,分,秒,先); Break
EndIf
Sleep(0.1)
Until GetKeyState(VK_ESC)
FID = FOpen(File, F_WRITE8)
For A = 0 to NUM -1
FPut(FID, 先[A]+"-"+後[A]+"-"+年[A]+月[A]+日[A]+"_"+時[A]+分[A]+秒[A]+".txt")
Next
FClose(FID)
- 423 :名無しさん@お腹いっぱい。:2015/05/04(月) 12:30:24.94 ID:fl9/B3+b/
- >>420
詳しく知らなければネットで調べて実際に試してみればいい
ren aaa.jpg bbb.jpg
とすればaaa.jpgというファイルをbbb.jpgにリネームする
という事は
ExcelのA列に
20150501_ランダムな数字1.jpg
20150501_ランダムな数字2.jpg
20150501_ランダムな数字3.jpg
20150501_ランダムな数字4.jpg
20150501_ランダムな数字5.jpg
を入れる(ファイルのリストとやらを貼り付ける)
B列に
A00639_1.jpg
A00639_2.jpg
A00639_3.jpg
A00640_1.jpg
A00640_2.jpg
となるような数式を作る
C1に
="ren " & A1 & " " & B1
とすれば
ren 20150501_ランダムな数字1.jpg A00639_1.jpg
出来たコマンドをコマンドプロンプトに貼り付けるだけ
- 424 :名無しさん@お腹いっぱい。:2015/05/04(月) 16:59:29.42 ID:1tvpD3kK0.net
- バッチファイルでファイル名一覧をテキストで取得して、Excelで並び替えた方が汎用的なような…
- 425 :名無しさん@お腹いっぱい。:2015/05/04(月) 17:09:45.24 ID:NHByfOcj0.net
- 次の処理に使う為にテキストファイルの方が都合がいいケースも有るだろうし
その辺は本人次第による
- 426 :名無しさん@お腹いっぱい。:2015/05/04(月) 19:04:39.82 ID:f8nhMwc80.net
- あたしならバッチのFor文のヘルプをじっくり読むね
- 427 :名無しさん@お腹いっぱい。:2015/05/04(月) 22:16:59.97 ID:n2ZrU9UHx
- //他の方法でやってみたのですが、
//もう少しでできそうですがSendStrの使い方が難しいです
//これだとA030_1.jpgというファイルになってしまいます。
//A00630_1.jpgにしたいのですが
FOR A = 630 TO 630
//マウスでアクティブにする
BTN(LEFT,CLICK,1100,20,1000)
//HOME で先頭に持ってくる
KBD(VK_END,CLICK,1000)
KBD(VK_HOME,CLICK,1000)
//ファイル名を変更する
KBD(VK_F2,CLICK,1000)
//ファイル名を消す
//
KBD(VK_BACK,CLICK,1000)
- 428 :名無しさん@お腹いっぱい。:2015/05/04(月) 22:17:25.10 ID:n2ZrU9UHx
- //キー入力を開始する
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)
KBD(VK_NUMPAD0,CLICK,1000)
KBD(VK_NUMPAD0,CLICK,1000)
//変数の入力
SendStr(GetId(GET_ACTIVE_WIN),Copy("0"+A,Length(A),2))
//_1 の入力
KBD(VK_RSHIFT,DOWN,1000)
KBD(VK_OEM_102,DOWN,1000)
KBD(VK_RSHIFT,UP,1000)
KBD(VK_OEM_102,UP,1000)
KBD(VK_1,CLICK,1000)
NEXT
- 429 :名無しさん@お腹いっぱい。:2015/05/04(月) 22:40:53.33 ID:fl9/B3+b/
- ヒント
a=1
replace(format(a,3)," ","0")
msgbox(replace(format(a,3)," ","0"))
a=10
msgbox(replace(format(a,3)," ","0"))
a=100
msgbox(replace(format(a,3)," ","0"))
何がやりたいか知らないけど
もう少し整理して考えたほうがいい
KBD関数を多用しているけど本当にそれ以外方法がないの?
- 430 :名無しさん@お腹いっぱい。:2015/05/04(月) 23:20:33.72 ID:nY4sIpEz0.net
- 質問です。
001.bmpか002.bmpが一致した場合クリックとしたいのですが、以下の処理にした場合、
002.bmpが一致した場合は正常にクリックされる(正常に座標が取得できる)のですが、
001.bmpが一致した場合は座標が
X座標:-999999
Y座標:-999999(print出力のログファイルより)
となってしまいます。
また、001.bmpと002.bmpを逆で書いた場合は、002.bmpの座標がそれぞれ-999999となってしまいます。
*****
IF CHKIMG("001.bmp") OR CHKIMG("002.bmp") THEN //画像一致で実行
print G_IMG_X
print G_IMG_Y
BTN(LEFT)
ELSE
print "no"
ENDIF
*****
- 431 :名無しさん@お腹いっぱい。:2015/05/04(月) 23:21:12.27 ID:nY4sIpEz0.net
- (続き)
or条件の前半に書いたCHKIMGの座標が取得できないようですが、
うまく座標を取得する方法はあるでしょうか。
↓のようにELSEIFで処理を分ければ動くのですが、出来れば1行で書きたいと思った次第です。
使用バージョンは Ver5.1.1 Pro です。
*****
IFB (CHKIMG("choose_001.bmp")=TRUE) THEN //画像一致で実行
BTN(LEFT)
ELSEIF (CHKIMG("choose_002.bmp")=TRUE) THEN //画像一致で実行
BTN(LEFT)
ELSE
print "no"
ENDIF
*****
- 432 :名無しさん@お腹いっぱい。:2015/05/04(月) 23:50:40.80 ID:NHByfOcj0.net
- 特殊変数を共有しているので無理
素直に分けなさい
- 433 :名無しさん@お腹いっぱい。:2015/05/05(火) 00:22:59.32 ID:VvVhJAr50.net
- option shortcircuit
これいれてないだけじゃないの?
- 434 :名無しさん@お腹いっぱい。:2015/05/05(火) 00:49:12.39 ID:4fpjdasx0.net
- >>432-433
レスありがとうございます。
短縮評価というのがあるのですね、勉強になりました。
おかげさまで実現することができました、どうもありがとうございます!
- 435 :名無しさん@お腹いっぱい。:2015/05/05(火) 09:48:03.69 ID:t379n4Zi0.net
- >>433
いいこと教えてもらった
言語仕様かと思って諦めてたわ
むしろ短縮評価をデフォにして欲しいくらいだな
- 436 :名無しさん@お腹いっぱい。:2015/05/05(火) 12:15:50.95 ID:qn/kIA8j0.net
- そんな紛らわしいコードは書かないほうがいいと思うのだが・・・
- 437 :名無しさん@お腹いっぱい。:2015/05/05(火) 16:56:57.37 ID:d+/e+6EX0.net
- じゃぁどんなのが紛らわしくないってんだYO(・3・)
その辺優しく教えろYO
- 438 :名無しさん@お腹いっぱい。:2015/05/05(火) 19:40:24.06 ID:iRlC9s5c0.net
- resObj = chkimg("a.bmp")
if resObj.exists()
x = resObj.getX()
y = resObj.getY()
こんな感じで使えれば余計なこと考えなくて自然なんだけどな
- 439 :383:2015/05/05(火) 22:54:10.53 ID:TCyoWXwj0.net
- 383と384で質問したものです。皆様レスありがとうございます。
>>419
UWSCでなければPHPとかRUBYとか?
あとの方もレスくれましたが、バッチ処理を途中かますのがスマートなのでしょうか。
どちらにせよ配列の概念をしっかり理解できないとだめですね。
>>421
ありがとうございます。
後ほど試してみて、弄くりまわしてみます!ForNext文でファイル名の構成をすべて配列に代入し…
>>422
RepeatUntil文のところでキー待ち処理でソートしてるのですね…
しかし配列の概念が理解できないからか、なぜこのスクリプトですべての配列(キー配列以外の配列)が同時にソートされるのかわかりません(配列が判る人からすると 何言ってんだこいつ状態…?)
これをヒントに色々やってみます。
>>424
CSVにして、excelのテーブル機能とか使えばいろんなことができますね…。
ファイルのX行目を参照して、なんてのも別途>>421の方法で配列として取得しておけばいいことですし(ファイル名には入れないとしても)。
>>425
おっしゃるとおりテキストファイルでやりたいことがありました。
>>426
バッチ処理も配列も自分にとってはなかなか難しいですね。
今後勉強していきたいと思います。
- 440 :名無しさん@お腹いっぱい。:2015/05/05(火) 23:10:23.24 ID:STTevHR60.net
- 内部的にEXCELな感じでしょうかね
配列A、配列B、配列C、配列D があって、データ部はそれぞれ縦列で
A B C D
11 aa あ rte
12 vb え u5f
13 hd え 4ds
15 ke ん g5d
16 og う ew3
となってて
こんな感じのEXCELでソートをBで行うとまとめてACDも追従しますよね
この場合の関数が QSORT(配列B, QSRT_A, 配列A, 配列C, 配列D) となる訳です
- 441 :名無しさん@お腹いっぱい。:2015/05/06(水) 06:03:33.06 ID:A1LDEOba0.net
- str_n = 2500
gettime()
str = "" + G_TIME_HH + G_TIME_NN
if str >= str_n
print str_n
endif
○○時まで動作させるというものを組みましたが、うまく動作しなかったので上記のようにしてテストをしていました
strは0000~2359の範囲までにしかならないはずなのになぜか上記のまま動作させるとprintされてしまいました
次にstr = "" + G_TIME_HH2 + G_TIME_NN2とすると思ったように動作しました
例えば6時10分を表す場合には610と0610の表し方の違いになりますが、前者だと2500より大きいと判定され後者だと小さいと判定されたようです
これはどういうことなのでしょうか
- 442 :名無しさん@お腹いっぱい。:2015/05/06(水) 08:14:04.52 ID:zFCy2m+P0.net
- >>441
文字列の比較になって先頭から比べて2より6のが大きいから
- 443 :名無しさん@お腹いっぱい。:2015/05/06(水) 08:19:22.33 ID:kulMuT5p0.net
- 変数が文字列型になのか数値型なのか
- 444 :名無しさん@お腹いっぱい。:2015/05/06(水) 08:35:39.31 ID:A1LDEOba0.net
- >>442
なるほどありがとうございます
下一桁から読まれるんじゃないんですね
- 445 :名無しさん@お腹いっぱい。:2015/05/06(水) 08:55:49.69 ID:jQbs1+K90.net
- 数値として大小比較をしたいのならval関数な
if val("2500") > val("610") then
msgbox("2500が大きい") //こっち通る
else
msgbox("610が大きい")
endif
if "2500" > "610" then
msgbox("2500が大きい")
else
msgbox("610が大きい") //こっち通る
endif
- 446 :名無しさん@お腹いっぱい。:2015/05/06(水) 12:25:21.85 ID:I/ZvQy1N0.net
- ファイル名を自在に変更したいなら Flexible Renamer
これ「こんなソフトありませんか」の常連。
正規表現と合わせて使うと真の最強だから困る。
- 447 :名無しさん@お腹いっぱい。:2015/05/06(水) 12:32:43.76 ID:I/ZvQy1N0.net
- >432
特殊変数に触るときは目的に応じた関数名の自作関数でラッピングして使うといいよ
PROCEDURE getImgXY(imgBmpName, VAR X, VAR Y)
画像をクリックしたいなら clickImg を自作するのが定番
関数化すれば、TRYでエラー処理して自動操作中断しないようにしたり、
フォルダ名を関数側に持たせて記述を短くしたり、
便利で読みやすいことが沢山出てくるし
- 448 :名無しさん@お腹いっぱい。:2015/05/06(水) 16:09:53.31 ID:72Vanucp0.net
- chkimgの色幅の指定について質問させてください。
24ビットカラーのbmpで保存した文字の画像を、あらゆる文字色において探索させたいのですが(#000000〜#FFFFFF)、持たせる色幅は「RGB各色に対して8bit」で正しいのでしょうか?
また、その時1pxの透過色を指定していた場合、どうなるんでしょうか?
- 449 :名無しさん@お腹いっぱい。:2015/05/07(木) 02:08:08.49 ID:ybua1Qzf0.net
- >>445
今更だけどありがとう
- 450 :名無しさん@お腹いっぱい。:2015/05/07(木) 18:14:43.24 ID:36ngVs2G0.net
- 前スレで配列サイズ取得にRESIZEとLENGTHどちらを使うべきかという話が出ていた。
俺はLENGTHで配列が取得できるようになる前からUWSC使っていたのでRESIZEでも
いいじゃないかと考えていたが、可読性などとは全く異なる理由で、RESIZEによる
配列サイズ取得を今後辞めることにした。
ついでに関数の戻り値にSAFEARRAYを使うことも辞めた。
その考えに至ったテストコードを載せておく。
- 451 :名無しさん@お腹いっぱい。:2015/05/07(木) 18:17:18.48 ID:36ngVs2G0.net
- testCsv1="100,101,102,104,108"
testCsv2=123; testCsv3=EMPTY; testCsv4=NULL; testCsv4=NOTHING
testCsv5=CreateOLEObj("InternetExplorer.Application")
DIM testCsv6
testCsv7=SAFEARRAY(0, 2)
FOR vidx=1 TO 7; PRINT; PRINT "TEST No."+vidx; testSplit(EVAL("testCsv"+vidx)); NEXT
PROCEDURE testSplit(testCsv)
TRY
PRINT "test data : " + testCSV
EXCEPT
PRINT "test data is not printable."
ENDTRY
TRY
testArray =SPLIT(testCsv, ",")
EXCEPT
PRINT "SPLIT NG"; testArray =SPLIT(testCsv, ","); EXIT
ENDTRY
PRINT "SPLIT o.k. Array length result="+LENGTH(testArray)+" ( RESIZE result="+RESIZE(testArray)+" )"
IFB LENGTH(testArray) < 1 THEN
PRINT "SPLIT result is not array."; EXIT
ELSE
FOR idx=0 TO RESIZE(testArray)
PRINT " array["+idx+"]="+testArray[idx]
NEXT
ENDIF
PRINT "test end."
FEND
- 452 :名無しさん@お腹いっぱい。:2015/05/07(木) 18:40:45.43 ID:0B5tP8ol0.net
- で、何が問題なの?
SAFEARRAYは構造体みたいに使ってポリモーフィズムを実現できる型として重宝してるよ
- 453 :名無しさん@お腹いっぱい。:2015/05/07(木) 19:05:53.09 ID:kOFrsE6M0.net
- SPLITは文字列を配列にする関数だからJOINしろと思う
色々な値が入る可能性のある関数なら最初に引数チェックしろと思う
配列じゃないなら-1なんでそれで判断してJOINしてやれば全て動くしなぁ
- 454 :名無しさん@お腹いっぱい。:2015/05/07(木) 19:06:54.36 ID:kOFrsE6M0.net
- あ、-1なのはRESIZEの戻り値ね
そういう意味ではこういった用途の場合はLENGTHだと文字数になるので使えない
- 455 :名無しさん@お腹いっぱい。:2015/05/07(木) 19:19:19.12 ID:kOFrsE6M0.net
- あー、でも途中のデフォルト参照するケースが駄目になるね
ちゃんとVARTYPEした対処した方がいい
これもコーディング論になってしまうけれど
例外はエラーからの復帰処理で正常系の判断処理には使わない方が良いかなと
- 456 :名無しさん@お腹いっぱい。:2015/05/07(木) 19:44:34.12 ID:oIqnKeh+0.net
- Resizeの何がダメなのかわからん
SafeArray押しなのもまるで分らん
使い勝手というかデータ渡し合いするならSafeArrayだけど
処理速度ならResizeや単純な宣言配列のがうんと早い
Resize > Length だし
Dim Array[] >>>>>>> SafeSrray(0,0) だわ
上にあるようなファイル名取り込んでソートしなおすとかは絶対宣言した方が早い
- 457 :sage:2015/05/07(木) 21:17:42.38 ID:j+BelTnl0.net
- すいません初心者です
While True
KBDA()
KBDB()
Wend
Procedure KBDA()
KBD(VK_A,CLICK)
SLEEP(5)
Fend
Procedure KBDB()
KBD(VK_B,CLICK)
SLEEP(10)
Fend
KBDA()が実行されたあとKBDB()が開始されるのですが
これを、KBDA()とKBDB()を同時にスタートさせるにはどうすればよいのでしょうか?
for-nextを使ってやっていたんですが、ボタンの数が多くなってくると出来ません
- 458 :名無しさん@お腹いっぱい。:2015/05/07(木) 21:30:45.17 ID:kOFrsE6M0.net
- 本当の意味で同時に処理するのはイベント駆動のWindowsでは無理
CLICKでやろうとするから無理が出る
DOWNとUPに分けてABが同時にDOWNになるタイミングを作った後でUPしたら良い
- 459 :名無しさん@お腹いっぱい。:2015/05/07(木) 22:13:39.16 ID:j+BelTnl0.net
- >>458
それでやってみます
アドバイスありがとうございました
- 460 :名無しさん@お腹いっぱい。:2015/05/07(木) 22:36:41.79 ID:f3z72UPoG
- > ボタンの数が多くなってくると出来ません
ボタンを同時に押し下げた状態にできるのは確か3つまでだから
4つ目は先にクリックしたキーのUPが完了するまでDOWNやCLICKはできない。
- 461 :名無しさん@お腹いっぱい。:2015/05/07(木) 23:09:44.89 ID:iddjenAQ0
- >>451
これ実行してみた?
要素数1の時、LENGTHは1,RESIZEの戻り値は0
非配列の時、LENGTHは0になるのに、RESIZEの戻り値は0
要素数1なのか非配列なのかRESIZEの戻り値では判断できないってことでしょ。
あと予期せず文字列を想定した処理にSAFEARRAYが混ざってくると、
TRYでトラップ不可能なSyntaxErrorが出てキモい。
- 462 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:14:41.27 ID:aCA8XdTmI
- ちょっと質問です
<確認用.uws>
call test.uws
Dim A,B
pic("D:\images\","test.jpg",A,B)//画像の縦横を取得(例:300×200→A=300,B=200)
sfh(100,200,A,B)
<test.uws>
Procedure pic(a_path,a_name,Var a_Width,Var a_Height)
Dim Path_Dir = a_path
Dim FileName = a_name
Dim Shell = CreateOleObj("Shell.Application")
Dim NS = Shell.NameSpace(Path_Dir)
Dim NS_Items = NS.Items
Dim NS_Item = NS_Items.Item(FileName)
Dim a_Str = NS.GetDetailsOf(NS_Item, 31)
a_Width = Trim(Token("x", a_Str))
a_Height = Trim(Token("x", a_Str))
Fend
procedure sfh(x,y,i,j)
x = x + random(i)
y = y + random(j)
print x
print y
fend
確認用.uwsを実行すると、
1274:定義が間違っています
test.uws: 19行目: X = X + RANDOM(I)
というエラーが出てしまいます、どうしたらいいですか?
やりたいことは、画像の縦横のピクセル数から乱数をそれぞれ得て、ある値に足すことです。上に書いたサンプルでは、100〜499の値と、200〜499の値です。画像の大きさは一定にできないので変数で扱いたいです。
よろしくお願いします。
- 463 :名無しさん@お腹いっぱい。:2015/05/07(木) 23:59:53.31 ID:gEl3Corv0.net
- >testCsv4=NULL; testCsv4=NOTHING
まぎらわしい書き方をするから、こんな事やっちゃうんだろ
無意味な;は糞
- 464 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:07:33.89 ID:jcQWG3E10.net
- >>456
safearray押しではないけど、uwscに速度を求めるのは間違っていると思う
- 465 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:50:15.30 ID:B65QIiuAJ
- >>462
iやjは普通の文字列じゃなくUNICODE文字列なのが原因
バグか仕様かは知らないがrandom関数は数値かANSI文字列しか受け付けない
val関数はUNICODEでも数値に変換できるので
x = x + random(val(i))
とでもすればいけるだろう
- 466 :名無しさん@お腹いっぱい。:2015/05/08(金) 01:18:30.50 ID:B65QIiuAJ
- あ、ごめん嘘ついた
iの先頭とjの末尾に見えない制御文字的なものがついてる
Dim a_Str = NS.GetDetailsOf(NS_Item, 31)
msgbox(vartype(a_Str, var_astr))
この制御文字はANSIに変換できないので?になって見えるようになる
msgbox(length(a_Str))
length関数でも文字数が合わないので分かるはず
どちらにしろval関数で削られるのでval関数を使えばいい
- 467 :名無しさん@お腹いっぱい。:2015/05/08(金) 05:46:16.80 ID:UKJMttxu0.net
- 求めてなくても、同じ効果で速度の差がはっきりしてるなら早い方選ぶのが普通じゃないの?
- 468 :名無しさん@お腹いっぱい。:2015/05/08(金) 06:09:34.64 ID:Vy8D3J360.net
- 求めてないのなら、安全性とかソースの可読性とかそういうのを優先するよ。
- 469 :名無しさん@お腹いっぱい。:2015/05/08(金) 06:36:18.86 ID:UKJMttxu0.net
- resizeって危険なの?
総レス数 1144
361 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200