2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

自動化ツール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