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

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

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