■ このスレッドは過去ログ倉庫に格納されています
自動化ツールUWSC使いよ集まれ18
- 1 :名無しさん@お腹いっぱい。:2016/07/30(土) 17:17:29.59 ID:EHKbGb0r0.net
- Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html
●UWSC 掲示板(※作成依頼掲示版ではありません)
質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること
上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past
●UWSC - Wikipedia
http://ja.wikipedia.org/wiki/UWSC
●使い方・基礎解説学習サイト
http://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
http://www.confrage.com/uwsc/
http://necro.jp/dev/uwsc/
http://park14.wakwak.com/~simizu/uwsc/fruwsc.html
http://canal22.org/
http://big.tm.land.to/handbook/uwsc.htm
http://www.game-rev.com/review/gameut/uwsc.html
●スクリプトテンプレサイト
http://izagne.com/uwsc/
http://scripts.web.fc2.com/
http://www.nagomi-jp.net/~liners/
http://nem.symphonic-net.com/uwsct/0610uwsct.html
http://siromasa.digi2.jp/uwsc/
http://iriyak.adam.ne.jp/uwsc.html
前スレ 自動化ツールUWSC使いよ集まれ17
http://potato.2ch.net/test/read.cgi/software/1458731603/
- 959 :名無しさん@お腹いっぱい。:2016/11/24(木) 18:12:01.04 ID:7tsZ7Cor0.net
- botやそれにまつわる質問は問答無用で叩かれてもしょうがない
それくらい覚悟しろ
- 960 :名無しさん@お腹いっぱい。:2016/11/24(木) 18:19:57.69 ID:XwmXXZtH0.net
- すまん、ちょっと聞きたんだけど
while true
if getkeystate(vk_esc) then exit
while chkimg("俺",1,,,,,,IMG_MSK_BGR6) = false
Print "お<#CR>ち<#CR>ん"
Sleep(0.5)
wend
wend
みたいな時って俺が見つかるまではエスケープしても止まれないじゃん?
if の一行を関数化して 俺を探す While のループ中に挿れるっきゃない?
- 961 :名無しさん@お腹いっぱい。:2016/11/24(木) 18:51:11.56 ID:W5JIpws20.net
- ESCを押していたらチェック始まる前に抜けたいんだろ?
で、チェック中もESCで抜けたいということであってるな?
そしたらループを抜ける条件を最後にチェックできるRepeatを使う
repeat
if getkeystate(vk_esc) then exit
Print "〜"
Sleep(0.5)
until chkimg("俺",1,,,,,,IMG_MSK_BGR6)
- 962 :名無しさん@お腹いっぱい。:2016/11/24(木) 19:33:17.41 ID:XwmXXZtH0.net
- >>961
あぁ、Repeatってそういう使い方だったのね
使いたての頃に意味ぷーで以来ずっと敬遠してたからマジ感謝だわ
d
- 963 :名無しさん@お腹いっぱい。:2016/11/24(木) 19:52:59.23 ID:Yyh24Eex0.net
- >>961
それじゃesc押さなくてもchkimgがtrueになったらスクリプト終了
esc押す以外で抜けられないループなんだからこんなんでいいんじゃね?
while getkeystate(vk_esc)=false
if chkimg("俺",1,,,,,,IMG_MSK_BGR6)=false
print "---"
sleep(0.5)
endif
wend
- 964 :名無しさん@お腹いっぱい。:2016/11/24(木) 20:12:43.44 ID:XwmXXZtH0.net
- >>963
いや、俺は俺がどれだけ探しても見つからなくどうしようも無い時にエスケープしたくてだな
俺だって果てのない自分探しにいつかは疲れるからな
- 965 :名無しさん@お腹いっぱい。:2016/11/24(木) 20:54:30.67 ID:9xN4ZYgP0.net
- >>964
俺でゲシュタルト崩壊しそいになるわ
- 966 :名無しさん@お腹いっぱい。:2016/11/25(金) 00:14:45.86 ID:Eh01rATB0.net
- >>964
タイムアウト処理をいれればいいじゃん
end=gettime()+10 // 10秒なら
while XXX
if GETTIME()>end then break
wend
タイムアウトの場合に何をするかはお前次第
- 967 :名無しさん@お腹いっぱい。:2016/11/25(金) 04:16:03.71 ID:+ZTSmRXc0.net
- ループ処理を抜ける方法
任意で抜ける
・ループ関数の条件式にキー入力の判別getkeystate(vk_esc)を入れ、否定文にする
WHILE !GETKEYSTATE(VK_ESC)
WHILE GETKEYSTATE(VK_ESC)=FALSE
・ループの中にキー入力を推した場合の条件式を入れbreakを使う
自動で抜ける
・時間を指定し抜ける
Timeout = GETTIME() + 10
WHILE !(GETTIME() > Timeout)
WEND
・カウント数を指定し抜ける
FOR i = 1 to 10
NEXT
ちぃおぼえた
- 968 :名無しさん@お腹いっぱい。:2016/11/25(金) 21:11:24.62 ID:r2uFaGow0.net
- >>959
だったら「説明出来ないから返事もらえない」とか
わけのわからん正当化をするなボケ
- 969 :名無しさん@お腹いっぱい。:2016/11/25(金) 21:54:58.35 ID:JS3/Q8FG0.net
- なんやなんや
- 970 :名無しさん@お腹いっぱい。:2016/11/25(金) 22:28:14.71 ID:6eBh1Tmt0.net
- 特定ディレクトリのフォルダ数、ファイル数、データサイズ(KB)を取得したいんだけど何か良い方法ないかな
dir /sの値じゃなくて、仮にD:\を開いてCTRL+A→右クリック→Rのプロパティに表示される値を取得したい
隠しフォルダも検索対象、対象ディレクトリは複数(マイドキュメント、お気に入り、デスクトップとか)
- 971 :名無しさん@お腹いっぱい。:2016/11/25(金) 22:39:43.93 ID:FyKl5SQ80.net
- >>970
スクリプトでフォルダのプロパティ取得した方が良いんじゃないか
UWSC(自動化ツール)でやるとすごい手間だと思う
- 972 :名無しさん@お腹いっぱい。:2016/11/25(金) 22:52:00.54 ID:6eBh1Tmt0.net
- >>971
やっぱりそうだよなぁ
出来れば全部UWSCだけで完結させたかったけど、別で作ってみるわ
- 973 :名無しさん@お腹いっぱい。:2016/11/26(土) 00:38:22.22 ID:3CoRVnNt0.net
- >>970
oFso =CreateOLEObj("Scripting.FileSystemObject")
oFolder =oFso.GetFolder("d:\tmp")
print "フォルダ数 : "+oFolder.SubFolders.Count
print "ファイル数 : "+oFolder.Files.Count
print "フォルダサイズ : "+oFolder.Size
希望に添えてるかどうかは判らないけど、こんな感じなら出来るよ
- 974 :名無しさん@お腹いっぱい。:2016/11/26(土) 03:10:01.99 ID:6+zLlKX90.net
- >>973
ありがとう
ただ、サブフォルダも含めて取得したいんだ
UserProfile = TRIM( DOSCMD("echo %USERPROFILE%"))
SetDir1 = UserProfile + "\Contacts"
SetDir2 = UserProfile + "\Favorites"
SetDir3 = UserProfile + "\Downloads"
SetDir4 = UserProfile + "\Desktop"
SetDir5 = "D:\"
DIM Target[] = "アドレス帳","お気に入り","ダウンロード","デスクトップ","Dドライブ"
DIM Dir[] = SetDir1, SetDir2, SetDir3, SetDir4, SetDir5
PsCmd = "(Get-ChildItem -Recurse <#DBL>"
PsCmd_Fi = "<#DBL> | Where-Object { ! $_.PsIsContainer }).Count"
PsCmd_Fo = "<#DBL> | Where-Object { $_.PsIsContainer }).Count"
for i = 0 to 4
File = POWERSHELL( PsCmd + Dir[i] + PsCmd_Fi, FALSE, FALSE)
Folder = POWERSHELL( PsCmd + Dir[i] + PsCmd_Fo, FALSE, FALSE)
Size = ""
print "Target" + FORMAT( (i+1), 2) + ": " + Target[i]
print "File : " + TRIM( File)
print "Folder : " + TRIM( Folder)
print "Size : " + TRIM( Size) + "KB"
print ""
next
PowerShellで途中まで作って挫折したよ
- 975 :名無しさん@お腹いっぱい。:2016/11/26(土) 04:00:43.26 ID:nYP5j9vp0.net
- >>974
フォルダ掘ればいいのでは?
http://canal22.org/tag/getdir/
- 976 :名無しさん@お腹いっぱい。:2016/11/26(土) 08:06:20.10 ID:6SBM6WCh0.net
- 1."りんご" "みかん" "バナナ"といった項目名を配列に格納
2.それをSLCT_CHKを使って表示する
3. 2.でチェックされたものを除外し、更にSLCT_CHKで表示する
という感じのものを作りたいんだけど、3番目はどうやったらできるのかよくわからない
配列から削除ってできるのかな?
- 977 :名無しさん@お腹いっぱい。:2016/11/26(土) 09:38:33.79 ID:1hoVfgjO0.net
- 連想配列で削除できない
- 978 :名無しさん@お腹いっぱい。:2016/11/26(土) 11:33:01.25 ID:3CoRVnNt0.net
- >>974
あぁ、数もか
ならこんな感じ?
// サイズは元から全部
Function FolderInfo(path, var cntFolder, var cntFile)
Result =""
oFso = CreateOLEObj("Scripting.FileSystemObject")
oFolder = oFso.GetFolder(path)
Result =oFolder.Size
FolderSearch(path, cntFolder, cntFile)
Fend
// subFolderが空になるまで再帰的に検索
Function FolderSearch(path, var cntFolder, var cntFile)
Result =""
oFso = CreateOLEObj("Scripting.FileSystemObject")
oFolder = oFso.GetFolder(path)
For folder In oFolder.SubFolders
FolderSearch(folder.Path, cntFolder, cntFile)
Next
cntFolder =cntFolder +oFolder.SubFolders.Count
cntFile =cntFile +oFolder.Files.Count
Fend
- 979 :名無しさん@お腹いっぱい。:2016/11/26(土) 11:34:25.21 ID:3CoRVnNt0.net
- そんで、こういう風に呼び出す
cntFolder=0
cntFile =0
size =FolderInfo("d:\tmp", cntFolder, cntFile)
print "フォルダ数 : "+cntFolder
print "ファイル数 : "+cntFile
print "フォルダサイズ : "+size
- 980 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:03:28.77 ID:vecnfNxm0.net
- >>976
これで意図通りに動くかな?
// 選択要素の配列
Dim Select_array[] =
- 981 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:07:31.54 ID:vecnfNxm0.net
- >>976
うわ。切れちゃうな。。
全角の ”を使ったらいけたけど、今度は改行が多すぎるって蹴られた。
このあと、2分割で投稿します。
- 982 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:10:43.26 ID:vecnfNxm0.net
- // 選択要素の配列
Dim Select_array[] = ”りんご”,”みかん”,”バナナ”,”パイン”,”スイカ”
// 一時保存用の最大枠のカラ配列
Dim temp_array[Length(Select_array)-1]
While true
ifb LENGTH(Select_array) > 0
tempA = SLCTBOX(SLCT_CHK or SLCT_NUM, 0, 10, 10, ”どれを削除しますか?”, Select_array)
If tempA = -1 THEN EXITEXIT
tempB = split(tempA, ”<#TAB>”)
tempC = Length(Select_array)-Length(tempB) // 残った選択肢の数
// 残った要素を一時保存用へ抽出
Count = 0
For i=0 to tempC-1
While True
WriteFlag = True
For ii=0 to Length(tempB)-1
Ifb tempB[ii] = Count
WriteFlag = False
EndIf
Next
- 983 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:11:15.96 ID:vecnfNxm0.net
- Ifb WriteFlag = True
temp_array[i] = Select_array[Count]
Count = Count + 1
Continue 2
Else
Count = Count + 1
Continue
EndIf
Wend
Next
// 配列容量をを減らす
ReSize(Select_array, tempC-1)
// 一時保存配列から、選択要素の配列へコピー
For i=0 to tempC-1
Select_array[i] = temp_array[i]
Next
Else
MSGBOX(”選択できる項目がありません”, BTN_OK, 10, 10)
EXITEXIT
EndIf
Wend
- 984 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:16:33.41 ID:vecnfNxm0.net
- 行頭のタブは無視されるのか。。
インデント、見にくくてスマン。
いちお、画像でも載せておくね。
http://imgur.com/chxKeAU
- 985 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:19:58.93 ID:6SBM6WCh0.net
- >>982
うおう凄え
全部作ってくれたのか
意図通りのものです
ありがとうございます
- 986 :名無しさん@お腹いっぱい。:2016/11/26(土) 12:31:07.91 ID:2WSW48GA0.net
- >>985
974です。
意図通りに動いて良かったです。
uwscは、配列の中の個別削除が容易に出来ないのが困りますよね。
いちいち配列を作り直すチカラ技で対応しました。
- 987 :名無しさん@お腹いっぱい。:2016/11/26(土) 13:20:36.65 ID:6+zLlKX90.net
- >>978-979
希望通りに取得できたよ、ありがとう
余談で検証しててふと気になったんだけど、
size =FolderInfo("D:\", cntFolder, cntFile)
みたいな場合とか
マイドキュメントの場所をネットワーク上に変更している場合に
UserProfile = TRIM( DOSCMD("echo %USERPROFILE%"))
size =FolderInfo(UserProfile + "\Documents", cntFolder, cntFile)
だとCOMエラーになるんだね
- 988 :名無しさん@お腹いっぱい。:2016/11/26(土) 16:45:30.31 ID:3CoRVnNt0.net
- >>987
色々表示しながら実行してみた所、
・ルートはちょっと特別っぽい
・"System Volume Information"などSystem属性のフォルダを参照するとエラーになるっぽい
ちゃんとデバッグしないとダメだと勉強させてもらいました・・・
もっと綺麗な方法もあるとは思うのですが、取り敢えず修正してみました
修正後のは長くなったので以下のところに置きました
https://www.axfc.net/u/3745260
- 989 :名無しさん@お腹いっぱい。:2016/11/26(土) 18:25:19.03 ID:6+zLlKX90.net
- >>988
おぉ、わざわざありがとう
普通に使う分には>>978-979で全然問題無いけど、凄く勉強になった
- 990 :名無しさん@お腹いっぱい。:2016/11/29(火) 04:19:07.24 ID:jWh9YrXE0.net
- >>988
俺の環境だとまだCOMエラー出たので処理追加してみた。
https://www.axfc.net/u/3746393
- 991 :名無しさん@お腹いっぱい。:2016/11/29(火) 04:47:14.75 ID:szaNZKp30.net
- このUWSCとゆうアプリは最悪です、、。
何でも好きなこと自動でやってくれると聞いてこのアプリ入れたのです。
アプリ起動して、サンプルとゆうファイルを読み込んで再生したのですが、、
なんと!メモ帳の文字が極太になり、しかもめちゃくちゃ文字がでかくなり、
全てのテキストがそうなりました!!
なおりません!!
ウィルスだったのでしょうか?
なんかあちこちで名前出てきて有名だったと安心していたのですが、、
どうすればなおりますか!!
偽物を落としたのでしょうか??
- 992 :名無しさん@お腹いっぱい。:2016/11/29(火) 05:25:33.63 ID:I56PdSSD0.net
- >>991
おすすめ http://www.pcdepot.co.jp/cm_g/
- 993 :名無しさん@お腹いっぱい。:2016/11/29(火) 19:37:08.90 ID:jWh9YrXE0.net
- サンプル.uwsは自動操作中Lockhardで誤操作を防止しているが、
自動操作でフォントを大きく設定し、
最後にフォントを戻す操作を行ってから終了するので、
戻す前にスクリプトを中断すればフォントは大きく設定されたままになる…
- 994 :名無しさん@お腹いっぱい。:2016/11/29(火) 20:34:12.64 ID:8AIxVgcQ0.net
- がんばれ
- 995 :名無しさん@お腹いっぱい。:2016/11/29(火) 22:21:25.48 ID:HhuAQkvT0.net
- 小学生は使うな
- 996 :名無しさん@お腹いっぱい。:2016/12/01(木) 16:08:56.58 ID:9zsJ3xWT0.net
- 画像認識を楽に早くする方法はないだろうか
範囲の絞り込みを自動化するぐらいしかしてないんだが
- 997 :名無しさん@お腹いっぱい。:2016/12/01(木) 16:12:54.03 ID:NlwMQ4LT0.net
- >>996
「楽に早く」がどういう意味を指してるのかわからない
- 998 :名無しさん@お腹いっぱい。:2016/12/01(木) 16:13:33.03 ID:jQzpKY8h0.net
- 最適化はケースバイケースなので楽な手段は無いさ
究極的には画像認識がしない方法で判断した方が速いのだからね
- 999 :名無しさん@お腹いっぱい。:2016/12/03(土) 20:46:25.30 ID:JBNWCRPZ0.net
- これってそのままじゃCALLで変数に入ったuwsファイルを呼べないんだな
みんなどうやって切り抜けてるの?
- 1000 :名無しさん@お腹いっぱい。:2016/12/03(土) 20:48:12.94 ID:Fh0ohKSI0.net
- 意味不明すぎる
- 1001 :名無しさん@お腹いっぱい。:2016/12/03(土) 21:30:47.28 ID:kYV2xS7j0.net
- ww
- 1002 :名無しさん@お腹いっぱい。:2016/12/03(土) 21:51:36.96 ID:5ph/Z61A0.net
- 変数nで
1.uws
2.uws
3.uws
4.uws
5.uws
をn.uwsで呼べないかって事かなぁ?
- 1003 :名無しさん@お腹いっぱい。:2016/12/03(土) 21:58:06.53 ID:UR5lg4ON0.net
- >>999
試してないから分からないけど、まず質問内容のエスパーからですね。
callしたい全文を変数に入れて、変数をcallしたらうまくいかないってこと?
それとも、変数にcallしたいuwsファイルのパスを入れて呼び出してもうまくいかないってこと?
切り抜けるとは?
普通は、
call ゛c:¥ドキュメント¥コールされたい.uws゛
って感じで使ってると思いますが。
- 1004 :名無しさん@お腹いっぱい。:2016/12/03(土) 22:04:24.11 ID:UR5lg4ON0.net
- まあ、
「CALLで変数に入ったuwsファイル」
この日本語の意味が、解釈が何通りもあって困るよね。
uwscの文法の前に、日本語の文法を勉強したほうがいいかも。
あ、スレが満タンになっちゃうね。
- 1005 :名無しさん@お腹いっぱい。:2016/12/03(土) 22:47:23.25 ID:JBNWCRPZ0.net
- 言葉足らずで申し訳ないです
>>1002,>>1003の書いてることがやりたいです
具体的に書くと
hensu="c:¥ドキュメント¥コールされたい.uws"
CALL hensu
というようなことをしたいんだけど、これで行くと「hensuはありません」というようなエラーがでて再生できない
DOSCMD("ECHO "+ hensu + ">caller.uws) と言ったコマンドで
内容が「CALL c:¥ドキュメント¥コールされたい.uws」のみ書かれているcaller.uwsファイルを毎回作成して、
その都度caller.uwsを呼ぶようにしたらいけるんじゃねって思って試したけど、
再生時のcaller.uwsしか読み込まず、その後caller.uwsを書き換えてもhensuで指定したuwsファイルが呼べないです
何かいい方法ありませんか
- 1006 :名無しさん@お腹いっぱい。:2016/12/03(土) 22:53:34.84 ID:GfeXgi1I0.net
- 1〜5.uwsがスクリプトで自動生成される物じゃないなら
全部関数でくくって内部関数で If 変数=1 Then Func_1() すりゃいい
1〜5.uwsないし、その後も自動生成されてゆくスクリプトなら
callでなくDosCmd(変数+".uws")でよい
大量の変数渡したいならテキストにでも書き出せばいい
言ってる意味が分からないなら素質ないからやめたらいい
- 1007 :名無しさん@お腹いっぱい。:2016/12/03(土) 22:55:35.14 ID:GfeXgi1I0.net
- >>1005
CALL はすべてのプログラムの最初に読み込まれるんだよ
ヘルプ1000回読んで来い
CALL hensu >変数はありません
↓
hensu="c:¥ドキュメント¥コールされたい.uws" >hensuが定義される
この順に実行されるからどうやっても無理
- 1008 :名無しさん@お腹いっぱい。:2016/12/03(土) 23:12:04.53 ID:SsmLpJVs0.net
- 10^3
総レス数 1008
287 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★