UWSC 掲 示 板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

ファイル名を含むフォルダ に移動 / みつ
お世話になります。

ファイル名の一部を含むフォルダがあり、そのフォルダにファイル(変数を使用)を移動したいのですが
うまく動きません。

FROM_URL = "D:\LINK\"+変数+"*.docx" //変数AAA
print FROM_URL
TO_URL = "D:\LINK\保存\"+変数+"*"+"\" //←「変数AAA_コピー」という名前のフォルダに
//移動したいが、*が使用できません。
print to_url
MsgBox("ファイルを移動します")
CMDSTR = "move " + FROM_URL + " " + TO_URL
DOSCMD(CMDSTR,FALSE,TRUE)

コマンドプロンプトでは無理でしょうか?
また、何かいい方法はないでしょうか。

よろしくお願いします。

No.5395 2018/06/20(Wed) 23:02:20

Re: ファイル名を含むフォルダ に移動 / sai
Windowsではファイル名とフォルダ名に「*」を含ませる事は禁止されています。
以下コードでは、「*.txt」というファイルを作成するサンプルです。
これは「*.txt:Can't be written in」と表示してファイルが作成されない事を確認できるはずです。

filename="*.txt"
fid=FOPEN(filename, F_WRITE)
FPUT(fid, "任意メッセージ")
FCLOSE(fid)

ワイルドカードという意味なら答えは別にあって、ヘルプにあるGETDIRを使ったサンプルを参考すれば解決可能だと思います。

No.5398 2018/06/21(Thu) 03:34:55

Re: ファイル名を含むフォルダ に移動 / しろまさ
「_コピー」が固定ならそう書くとか。

TO_URL = "D:\LINK\保存\"+変数+"_コピー\"

No.5399 2018/06/21(Thu) 09:40:24

Re: ファイル名を含むフォルダ に移動 / みつ
sai様、しろまさ様

ご回答ありがとうございます。
「_コピー」が固定ではありません。
ファイルとフォルダが多数ある状況です。

AAA_XYZ.docファイル
BBB.ABC.docファイル
等があり
AAA_コピーフォルダ
BBB_HHHフォルダ
CCC_JJJフォルダ
があります。

この中で、ファイル名(先頭の3桁は決まっている)のAAAやBBBを探す文字列として
フォルダを探しにいき、AAAという名前を含むフォルダがある場合にはAAAファイルを移動し、
BBBという名前を含むフォルダがある場合には、BBBファイルを移動したいです。

No.5403 2018/06/21(Thu) 23:47:43

Re: ファイル名を含むフォルダ に移動 / stuncloud
getdir()でワイルドカードによるフィルタを使うとこんな感じかな

dim targets[] = "AAA", "BBB" // 探す文字を配列に入れとく
filePath = "D:\LINK\"
folderPath = "D:\LINK\保存\"
// 後でファイル名・フォルダ名と連結するので末尾に必ず「\」を入れておく

for target in targets // 探す文字を順番に処理
 for file in getdir(filePath, target + "*") // 探す文字から始まるファイルを得る
  for folder in getdir(folderPath, "\" + target + "*") // 探す文字から始まるフォルダを得る
   cmd = "move <#DBL>" + filePath + file + "<#DBL> <#DBL>" + folderPath + folder + "<#DBL>"
   doscmd(cmd)
   break // もしフォルダが2つ以上見つかった場合は2つ目以降が処理されないように抜ける
  next
 next
next

getdir()をfor-inした場合
> 〇〇という名前を含むフォルダがある場合には〇〇ファイルを移動し
の実現がとても簡単になります
該当するファイル・フォルダがない場合はそもそもループの中身が実行されないからです

あとパスの連結はかなり適当にやってますが安全にやるならFSOを使うと良いです
fso = createoleobj("Scripting.FileSystemObject")
fso.BuildPath(filePath, file)

No.5411 2018/06/22(Fri) 17:20:01

Re: ファイル名を含むフォルダ に移動 / みつ
stuncloud様

詳しくありがとうございます。
いくらやっても動かなかったものがバッチリ動き、
とてもビックリしています。

もしよろしければ追加でご教授頂きたいのですが、ファイルに該当するフォルダが
無かった場合に、AAAのフォルダを作り、その中にAAAファイルを移動するといったことは
可能でしょうか。

自分でやってみてもうまく動きません。


doc1 = GETDIR("D:\LINK","*.doc")-1

for file_name =0 to GETDIR("D:\LINK","*.doc")-1
  print GETDIR_FILES[file_name]
next

for doc2 = 0 to doc1
doc3 = GETDIR_FILES[doc2]

doc4 = COPY(doc3,1,3)

dim targets2[] = doc4
for target3 in targets2 // 探す文字を順番に処理
 for file in getdir(filePath, target3 + "*") // 探す文字から始まるファイルを得る
  for folder in getdir(folderPath, "\" + target3 + "*") // 探す文字から始まるフォルダを得る
IFB folder = 0
TOO_URL = "mkdir "+"D:\LINK\移す方\"+doc4+"\"
DOSCMD(TOO_URL)

FROM_URL = "D:\LINK\"+doc4+"*.doc" //移動するファイル
CMDSTR = "move " + FROM_URL + " " + folder
DOSCMD(CMDSTR,FALSE,FALSE)
ENDIF

   break // もしフォルダが2つ以上見つかった場合は2つ目以降が処理されないように抜ける
  next
 next
next
next

よろしくお願いします。

No.5419 2018/06/24(Sun) 00:10:44

Re: ファイル名を含むフォルダ に移動 / siguma
For In 構文では要素の数でなく各要素名が入るので

for folder in getdir(folderPath, "\" + target3 + "*") // 探す文字から始まるフォルダを得る
 IFB folder = 0

では意図した動作になりませんよ
他にもまずい箇所はありますがまずは上の点を見直してデバッグしてみるといいと思います

No.5420 2018/06/24(Sun) 02:47:04

Re: ファイル名を含むフォルダ に移動 / stuncloud
今回for-inを使ったのはあくまで「該当するものがない場合に処理を行わない」を簡潔に書くためであり、該当するものがない場合は別の処理をしたい、というのには不向きです
そういう場合は
・getdir()の戻り値を確認する
・0ならフォルダを作ってファイルを移動
・1以上ならGETDIR_FILES[0]のフォルダに移動
というような感じで書き直さないとなりません
とは言え先に提示したコードの全てが全く使えなくなるというわけでもないので、うまくfixしてみてください

No.5424 2018/06/25(Mon) 09:37:43
Call文とマルチステートメントの挙動について / siguma
お世話になります。

Call文とマルチステートメントの挙動についてご教授いただきたいのですが。

当方作業環境
・Windows 7 SP1 32bit
・UWSC Ver.5.3.0.2 Free
です。

<test01.uws>
------------------------------
Procedure Greeting()
 Balloon("Hello World!")
 Sleep(1.5)
 Balloon()
Fend
------------------------------

<test02.uws>
------------------------------
Procedure 挨拶()
 Balloon("こんにちは世界!")
 Sleep(1.5)
 Balloon()
Fend
------------------------------

という2つのスクリプトを用意して

<test03.uws>
------------------------------
Call test01.uws; Call test02.uws

Greeting()
MsgBox("次に進む")
挨拶()
------------------------------

にて呼び出し実行しようとすると「System Error: Don't CALL」とエラーメッセージが出てtest02.uwsが呼び出せないようです。

ただマルチステートメント的な書き方がダメなのではなく

<test03.uws>
------------------------------
print "hoge"; Call test01.uws

Greeting()
------------------------------

などでは正常に呼び出せるのですが、1行で複数のCall文をまとめて書くことは無理なのでしょうか?

No.5409 2018/06/22(Fri) 13:11:45

Re: Call文とマルチステートメントの挙動について / トリビア
過去ログにありますね。
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=1855

No.5410 2018/06/22(Fri) 15:47:21

Re: Call文とマルチステートメントの挙動について / siguma
トリビア様、ご指示くださりありがとうございます。
検索の仕方がマズくて見落としておりました。

No.5412 2018/06/22(Fri) 19:30:41
オープン / open
オープンソース化できないのかなあ
少なくとも誰もメンテできない状態は改善してほしい

No.5392 2018/06/20(Wed) 02:47:18

Re: オープン / sai
配布ファイル内のReadme.txtのご使用条件から、著作権者がオープンソース化に必要な事情を明確に禁止されています。
No.5396 2018/06/21(Thu) 02:36:08
Windows Server でログインしていないときでも画像認識させたい / shau
お世話になります。
デスクトップクラウドのお名前.com で Windows Server 2012 R2 Standard というOS上での画像認識の方法について

自分のパソコンからリモートデスクトップで Windows Server 2012 R2 Standard を見ているときは画像認識できているのですが、リモート接続を切断しているときは画像認識できていません。
再びリモート接続すると画像認識できるようになります。
要はリモート接続で見ているときしか画像認識できていないです。

切断しているときでも画像認識できる方法をご存知の方、お知恵を貸していただきたいです。
どうかよろしくお願いいたします。

No.5386 2018/06/18(Mon) 19:47:05

Re: Windows Server でログインしていないときでも画像認識させたい / トリビア
リモートデスクトップでログインするのではなく、VNCなどで接続して実行してはいかがでしょうか。
No.5387 2018/06/18(Mon) 22:29:58

Re: Windows Server でログインしていないときでも画像認識させたい / shau
トリビア様
返信ありがとうございます。
VNCというのはコンソール接続のようなものでしょうか。すみません自分の理解が足りないのでわからないです。
お名前.comの管理画面では、このプランではコンソール接続は出来ないようです。

No.5388 2018/06/19(Tue) 11:39:36

Re: Windows Server でログインしていないときでも画像認識させたい / トリビア
お名前.comのVPSではコンソール接続できるのですが、デスクトップクラウドでは出来ないのですね。
失礼致しました。

FAQにあるとおり動作しません。
http://www.uwsc.info/faq.html#N44

No.5389 2018/06/19(Tue) 19:48:47

Re: Windows Server でログインしていないときでも画像認識させたい / トンボ
画面ロック中の場合、CHKIMG関数はロック画面の方を画像認識する模様です。
さらに画面ロック中はデスクトップ描画処理が停止?する模様です。画面ロック中にPrintScreenキーを自動入力し、ペイントツールに手動ペーストすると黒一面のイメージになるからです。(ロック画面のイメージになると予想していたため、若干驚きました。)
これらがOSの仕様だとすると、当然UWSCでは解決不可であり、解決策はロック解除に限られます。

No.5390 2018/06/19(Tue) 21:18:10

Re: Windows Server でログインしていないときでも画像認識させたい / shau
トリビア様
返信ありがとうございます。 FAQ調べていただき感謝します。

トンボ様
なるほど合点がいきました。残念ですが仕方ないですね。。
ダメもとで お名前.comへ「リモート切断中もロック画面なしのデスクトップ描画を維持する設定」
が可能かどうか質問してみたいと思います。
何かわかったらご報告させていただきたいと思います。

No.5391 2018/06/20(Wed) 00:31:01

Re: Windows Server でログインしていないときでも画像認識させたい / shau
お名前.com にメールで質問したところ「該当ソフトにおきましては弊社にて動作保障していません」
ということでした。

残念ですが画像認識は出来ないという結果です。

皆さまありがとうございました。

No.5393 2018/06/20(Wed) 18:01:45
コマンドプロンプトを管理者権限で実行したい / さとまっき
お世話になっております。
DOSCMDコマンドでarp -d * と入力したいのですが、DOSCMDコマンドでは管理者権限での実行にはならず、エラーが出てしまいます。

別ウィンドウでコマンドプロンプトで管理者権限で立ち上げておいて、SENDSTRやSCKEYで文字列を送信しようとしても、
なぜかコマンドプロンプトには文字列が送信出来ないようです。

UWSCで管理者権限でarp -d *と入力するのに良い方法がありましたら、ご教授頂けましたら幸いです。

No.5383 2018/06/17(Sun) 14:53:29

Re: コマンドプロンプトを管理者権限で実行したい / stuncloud
UWSC自体を管理者として実行してください
No.5385 2018/06/18(Mon) 13:59:53
RemoteAppでのSendStr の使用方法 / moon
WindowsServer2016へRemoteAppアプリを設定して、Windows7又は8から接続して使用したいのですが、その場合SendStr が効かなくて困っています。
対応方法を教えて頂きたくお願いします。
例えばメモ帳をRemoteApp接続で開き、下記を実行した場合、「かきくけこ」は表示されますが、「あいうえお」は表示されません。

memoid =GETID("無題 - メモ帳 (リモート)","RAIL_WINDOW",1)
ifb memoid <0 then
MsgBox("メモ帳を起動してご利用ください")
Exit
endif
SLEEP(1)
CTRLWIN(memoid, ACTIVATE )
SLEEP(1)
SendStr(memoid, "あいうえお<#CR>", 1, true, true)
SLEEP(1)
SendStr(0, "かきくけこ<#CR>")
ScKey(memoid, VK_CTRL, VK_V) // 貼付
SLEEP(1)

No.5378 2018/06/15(Fri) 09:22:40

Re: RemoteAppでのSendStr の使用方法 / stuncloud
RDSを用意して試してみました
これ多分無理なんじゃないかな

いろいろ試してみた結果の僕の見解はこうです
RemoteAppのメモ帳を操作するというのは、通常のリモートデスクトップでリモート側のメモ帳をホスト側から操作したいということと同様なのでは?
リモートデスクトップウィンドウ越しだとUWSCの操作はかなり制限され、ましてやその中のウィンドウのIDを取るなんてことはできないわけですよね
でも実際memoidが取れてるじゃないか、ということになりますがこれ実は実態がmstsc.exeなんですよね
なのでつまりこれ、まんまリモートデスクトップウィンドウの中に表示されてるメモ帳なんだろうと結論づけました

さて、リモートデスクトップでUWSCを使う場合はどうしてるかというとリモート側のUWSCを使えば解決しますよね
ということはRemoteAppでUWSC.exeを公開しておいてやれば良さそうだと考えられます
実際やってみたところ、公開したUWSC.exeにスクリプトを読み込ませて実行で「あいうえお」が入力されました
ただしその場合

memoid =GETID("無題 - メモ帳", "Notepad")

とします (ぜんぶリモート側での出来事なので)

どうしてもホスト側のUWSCでなんとかしたいという場合は低レベルの操作関数 (btnとかkbdとか) を駆使するしかないと思います
あとはホスト側のUWSCからリモートのUWSCにスクリプトを投げて実行させる何らかの仕組みを用意すればRemoteAppでUWSCを公開しておく必要もなくなるかな…とか

No.5379 2018/06/15(Fri) 17:44:04

Re: RemoteAppでのSendStr の使用方法 / トンボ
リモート接続時はクリップボードが共有されるため、コピー操作などを実行すると当然ホスト側とリモート側のクリップボードが同時に更新されます。

ユーザ手動作業と自動操作作業に支障をきたすため、下記の案を検討した方が良いでしょう。
・UWSC実行中はリモート接続しない。
・クリップボードの共有化を無効にする。(詳しい方法はググってみてください。)
・FOPEN関数などでテキスト出力する。

No.5380 2018/06/15(Fri) 20:12:27

Re: RemoteAppでのSendStr の使用方法 / moon
stuncloud様、トンボ様、ご提案ありがとうございます。
実際に使いたいアプリはメモ帳では無く、入力項目が30以上有る業務用のアプリです。
複数端末からの同時実行時の評価テストにUWCC使いたかったので、お二人のお答えは大変参考になります。
stuncloud様からのRemoteAppでUWSC.exeを使うという視点は思い付きませんでした試してみます。
トンボ様からのクリップボード共有のご指摘、思い至りませんでした、危うく誤った方向で進めてしまう処でした。
今後ともよろしくお願い致します。

No.5384 2018/06/18(Mon) 09:19:10
指定の画像がでたら音を鳴らしたい / スズメ
お世話になります。
UWSCのフリー版を利用しています。

指定した画像が出たら音が鳴るようにしたいのですが、どうしたらいいでしょうか?



よろしくお願いいたします。

No.5381 2018/06/16(Sat) 02:47:24

Re: 指定の画像がでたら音を鳴らしたい / h
IF
CHKIMG
SOUND
ヘルプで調べて

No.5382 2018/06/16(Sat) 11:28:22
座標から5文字コピーしたい時の構文 / タカト
基本的な事ですが
ある座標から5文字コピーしたい時の構文を
教えてください。

No.5376 2018/06/11(Mon) 22:22:50

Re: 座標から5文字コピーしたい時の構文 / stuncloud
座標から文字を取得:posacc
文字列から指定文字数コピー:copy
これらの関数の組み合わせで希望の動作が実現できるはずです
詳しい使い方についてはヘルプを見てください

No.5377 2018/06/13(Wed) 10:26:31
繰り返し回数 / ナナミ
また、お知恵をお貸しください、以下の処理が延々と500あります。
Bの処理の回数を最初に指定して、10回とか、15回で繰り返されたら止まるように指定するには、どのような方法がありますでしょうか。いくつかご提示していただければ、その中に、私にも使えるものがあると思い、お願いするしだいです。

処理A
処理B
処理C
処理B
処理A
処理B
処理C
処理B
処理C
処理B
処理A
処理B

No.5365 2018/06/04(Mon) 23:47:42

Re: 繰り返し回数 / stuncloud
いまいち何が行われているのかわからないのでちょっとアドバイスしにくいです
処理が500あるというのは文字通り500回分の処理が(コピペなどで)羅列してあるということで、それをどうにかしたいので繰り返し処理に落とし込みたいということでしょうか?
それとも
> 処理A
> 処理B
> 処理C
> 処理B
> 処理A
> 処理B
> 処理C
> 処理B
> 処理C
> 処理B
> 処理A
> 処理B

が1セットでそれが500繰り返されるということでしょうか?

前者であった場合ABCそれぞれの処理がどういう法則で呼ばれてるのかよくわかんないのでそこがはっきりしないと繰り返させられません
後者であれば単に for-next で括っとけば良いです

あとそれぞれの処理って関数なんでしょうか
処理Bが1つの関数であるのなら

public count = 0, limit = 15 // 15回目で終了

procedure 処理B()

 // Bの処理

 count = count + 1
 if count >= limit then
  exitexit
 endif
fend

としとけば関数処理B()指定回数分(この場合15回)呼ばれたときにスクリプトが強制終了されます

No.5366 2018/06/05(Tue) 10:14:06

Re: 繰り返し回数 / ナナミ
stuncloud様、回答ありがとうございます。
たぶん、前者です、自分でもよく理解してない部分があります。
処理は、関数?でなくて、1つのまとまり処理になります。
たとえば、処理Aは、
猫をなでる
猫を持ち上げる
処理Bは、
猫に餌をあげる
猫に水もあげる
処理Cは、
餌2こ
処理Dは、
餌3こを上げる
みたいな感じです。
分かりにくいたとえで申し訳ありません。
みたいな感じです。

No.5370 2018/06/08(Fri) 07:21:15

Re: 繰り返し回数 / stuncloud
> 自分でもよく理解してない
何言ってんだ

とりあえず決まった回数繰り返したいならfor文が基本です

for i = 1 to 15 // 15回やる
 処理B
next

んで、処理Aと処理Cなんですけどこれらは何かしらの条件により処理Bの前に実行されると予想されます
それらの条件が処理Aまたは処理Bまたは処理C実行中、または実行結果により変化すると予想されます

for i = 1 to 15
 if 条件A then
  処理A
 elseif 条件C then
  処理C
 endif
 処理B
next

だから多分こんな感じになる
この方向性でどうにかできないかトライしてみてください

もうこれ完全にエスパー案件なのでうまくいきそうになくても僕は責任取れないぞ

No.5372 2018/06/08(Fri) 11:34:20

Re: 繰り返し回数 / トンボ
下記で地道に学ぶことをお勧めします。(通常UWSCの大半の理解に一か月以上要します。)
http://canal22.org/control/

それから止める方法ではありませんが、A〜C処理をランダムで実行する方法もあります。
FOR i = 1 TO 500
 SELECT RANDOM(3)
 CASE 0; PRINT i + " A処理"
 CASE 1; PRINT i + " B処理"
 DEFAULT; PRINT i + " C処理"
 SELEND
NEXT

No.5374 2018/06/08(Fri) 22:41:34

Re: 繰り返し回数 / ナナミ
stuncloud様、トンボ様、ご提案ありがとうございます。
ココは、暖かい方々の集まりであることを認識させていただきました。
知恵熱と戦いながら、トライしてみます。

No.5375 2018/06/08(Fri) 23:24:48
含まれている文字判別 / ナナミ
お世話になっております。
以下の内容で、漢字が含まれていたら、はじく(ダメですとメッセージを出す)、ひらがなが含まれていたらはじく、英語が含まれていたらはじく、韓国語が含まれてたらはじく、数字が入っていたらはじくみたいなことは、正規表現とか何か、何でもいいのですが、それぞれ可能でしょうか。
cat="猫 ねこ cat 고양이 3コ "
面倒くさい質問でもうしわけありません。
お知恵のある方、ソースを書いていただけたら、助かります。

No.5371 2018/06/08(Fri) 07:39:03

Re: 含まれている文字判別 / stuncloud
漢字が含まれてたら弾くってのは漢字全てなのか猫って漢字だけなのかあたりがわかりませんが
例えば特定の漢字だけ弾く、ならpos()関数でできます

if pos("猫", cat) > 0 then
 msgbox("ダメです")
endif

漢字全般だとかになるなら正規表現になります

re = createoleobj("VBScript.RegExp")
re.pattern = "[一-龠]"
if re.Test(cat) then
 msgbox("ダメです")
endif

漢字以外も re.pattern でうまく指定できれば検知できます
どういうパターンを指定するかはググって調べてください
// "[一-龠]" は「vbs 正規表現 漢字」でググったら出てきました

弾くものがたくさんある場合はパターンにダメなものを指定するのではなく通していいものを指定して残りを弾く、というようなやり方のほうが簡単かもしれません

No.5373 2018/06/08(Fri) 11:55:09


 過去ログ(〜2017/08/24)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> | 過去ログ ]