1 名前:デフォルトの名無しさん [2007/04/16(月) 13:48:54 ] ( ´ゝ`) 誰か詳しい情報キボンヌ ●過去スレ WSH(・∀・)スレッド! pc11.2ch.net/test/read.cgi/tech/1055075469/ ●関連スレ お前ら、wsh使ってますか? part6 pc11.2ch.net/test/read.cgi/win/1155040873/ 【イケメン】阿龍スレ避難所@自己紹介【彼女募集中!】 life8.2ch.net/test/read.cgi/intro/1171897814/ ●個人サイト Windows Scripting Host Laboratory www.roy.hi-ho.ne.jp/mutaguchi/wsh/ Windows Script Wiki winscript.s41.xrea.com/wiki/index.php 音楽 winscript.mine.nu/music/ キャラネタ板・なな板のための何か charaneta.mine.nu/
463 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:14:01 ] >>461 >無限ループに陥ってしまうし・・・どうしたらいいんでしょう? 有限ループにする
464 名前:461 mailto:sage [2007/12/28(金) 23:48:48 ] >>463 なるほど・・・ i = 0 Do While objWshShell.AppActivate("ハードウェアのインストール") <> True WScript.Sleep 1000 i = i + 1 If i >= 10 Then WScript.Popup "エラー!ドライバのインストールに失敗しました", 5 WScript.Quit End If Loop こんな感じですかね。。。 それともう1つ聞きたいのですが、指定した名前のドライバがきちんとインストールされているか どうかIfで分岐する事はできませんか? もう具体的に出した方が分かりやすいと思いますので言いますが UltraVNC のVNC Hook Driver のインストールをしたいのです。 もしインストールされてなければインストールを実行(全自動) インストールされていればインストールはせずにスクリプトを終了させる といった分岐です。
465 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 11:38:43 ] もう全部手作業でやった方がいいと思うよ。
466 名前:デフォルトの名無しさん [2007/12/29(土) 15:19:42 ] >>462 「署名を無効にするオプションが存在する」 なら、無効にしとけばいいじゃん!頭悪っ
467 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 15:29:01 ] あーあ、言っちゃったよ
468 名前:461 mailto:sage [2007/12/29(土) 18:09:53 ] >>466 そういう設定に変えちゃらめぇ〜〜〜!
469 名前:デフォルトの名無しさん [2007/12/30(日) 01:12:43 ] 方法があるのに「らめぇ〜」ってどういう事だよ。もう付き合いきれん。
470 名前:デフォルトの名無しさん [2007/12/30(日) 08:43:10 ] らめぇ〜って何? 日本語の乱れ?
471 名前:デフォルトの名無しさん [2007/12/30(日) 08:53:40 ] >>470 お前は萌えを知らんのか?
472 名前:デフォルトの名無しさん [2007/12/30(日) 10:27:00 ] 萌えは知っているがみさくらなぞ知らん!
473 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:37:18 ] MSはWSHというものが Windowsの自動操作を行えると主張するが AppActivate+SendKeysはWindowの基本設計とは完全に矛盾しており システムのクラッシャーになりかねない OLE対応アプリ/機能以外は操作できないというのは 実質WSHには自動操作はできないという事を示している
474 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:34:25 ] 「Windowsの」ここ重要 決して「Windowsアプリケーションの」とは言っていない。
475 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:37:55 ] もちろん、ドライバのインストールはWindowsに関わることだけど、 上にもあるようにセキュリティに関わることだから、 自動化に制約がかかるのは勘弁してやれ。
476 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 15:00:30 ] でもさ、市販ソフトのインストーラでも、うらでダイアログポチポチしてるよね。 Windowsってなんなの?って感じ。
477 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:56:40 ] VBSと組めばバッチなんていらんくね?
478 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:31:53 ] WScript.ShellのPopUpの秒指定、ExcelやIEやHTAで効かないんだけど 使えているひともいるみたいで、環境依存なの? ttp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=53250;id=excel
479 名前:デフォルトの名無しさん [2007/12/30(日) 20:33:11 ] そう思うなら、 COPY *.TXT A:\ と同等の機能をVBSで書いてみろよ。 適材適所で使い分けの出来ないヤツは役に立たん。
480 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 22:51:01 ] >>478 既知の問題で、(おそらく)環境依存で、原因不明で、解決法無し(不明)です スレ違いなので詳しくは書きませんが代用法もあるわけですし 問題が起きるようならキッパリ諦めてください
481 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 04:06:48 ] >>479 Option Explicit Dim objFSO Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "*.txt" "A:\" Set objFSO = Nothing こんな感じでしょうか?
482 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 04:49:23 ] 前から思ってたんだがWScript.つけてるコードって どこソースなんかね タイピング増やしたくない俺は滅多に使わないんだが
483 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:15:55 ] Scripting Guyですよ
484 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:16:47 ] どこソースって、MSDN(WSHヘルプファイル)には object.CreateObject(strProgID[,strPrefix]) object WScript オブジェクトです。 って書かれてるわけだが
485 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:19:20 ] ちゅーか別物だよね
486 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:26:43 ] Scripting.FileSystemObjectのインスタンス作る場合に置いては別物じゃないよ 大元は一緒でラップの仕方が違うだけだし
487 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 05:42:27 ] クライアントサイドはCreateObject() サーバサイドはServer.CreateObject() って記述してる
488 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 09:02:11 ] >>487 それはまた全然別の話だよw
489 名前:デフォルトの名無しさん [2007/12/31(月) 16:43:29 ] >>481 ブッブーーッ!はいダメ。 無理すんな。素直にバッチファイル書けよ。
490 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:28:02 ] ダメな理由くらい書け
491 名前:デフォルトの名無しさん [2007/12/31(月) 18:49:49 ] ↑ なぜダメか一人でずっと悩んでろ!
492 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:56:41 ] じゃあ俺は駄目だと思わないから481を使うね。
493 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:43:42 ] >>489 "*.txt" と "A:\" の間にカンマがないのがダメってこと?
494 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:54:13 ] CreateObject("Scripting.FileSystemObject").CopyFile "*.txt", "A:\"
495 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:11:40 ] >>479 がダントツで役立たずだな
496 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:14:00 ] 対話的じゃないとかいうオチか?
497 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:29:29 ] >>478 WScript.Shellという名前からしてWSH専用だろ
498 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 00:32:29 ] >>479 はCopyFileで*.txt使えること知らずに複数行になるはずと 勘違いしてたに1票
499 名前:481 mailto:sage [2008/01/01(火) 01:18:11 ] あっちゃーやっちゃった。すみません。 objFSO.CopyFile "*.txt", "A:\" ↑こうですね・・・・。。。
500 名前:デフォルトの名無しさん [2008/01/01(火) 02:35:00 ] 500ゲット!あけおめ
501 名前:デフォルトの名無しさん [2008/01/01(火) 13:01:20 ] >>499 はいそのとおり。 バッチなら COPY *.TXT A:\ で済む、バイトの女の子さえミスしようがない超超超簡単なことさえ WSHで書くとミスっちゃうだろ? ミスの確立が増える。そういうこと。 だから、WSHがあればBATはいらない、などとイキガッテないでさ、適材適所で使い分けれ。 それにしても、超〜〜思うツボだな。わざとミスってくれたのかと思ったよ。 天然だったんだねw
502 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:08:20 ] (ノ∀`) アチャー
503 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:10:06 ] >ミスの確立が増える。 狙って書いてるのか?w
504 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:20:23 ] 天然だろ
505 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:11:33 ] >>501 かんじで かくと みすっちゃう だろ? いきがって ないで ひらがなで かけ。
506 名前:481 mailto:sage [2008/01/01(火) 14:35:00 ] >>501 はい、今回WSHで書いて、確かにBatで書いた方が良い場面もある事を痛感しました。 WSHとBatを混合させると言うのはどうなんでしょうか? Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Exec "copyFile.bat" みたいな。でもこうすると処理が複雑になったときにbatとWSHと行き来するような事になると なんかバグが出てきそう・・・。その時修正が大変じゃないですかねぇ・・・。 それに出来れば1つのスクリプトファイルで済ませたいし・・・ >>505 ワラタw
507 名前:デフォルトの名無しさん [2008/01/01(火) 15:02:00 ] >>503-505 ネット初心者?
508 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:08:59 ] 氏ね それはこういうやつだろ。「確立」は単なる間違い。 >>506 バッチファイル内のCALLで他のバッチファイルを呼んだ方が解り易いかと。 基本バッチファイルで、足りない機能をWSHでフォローって感じで 書いていけばいいんじゃないかな。 無論、内部・外部コマンドが殆ど不必要なら、直接WSHで書いてしまえばいいし。
509 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:08:23 ] >>478 リンク先の代替法はSendKeys使っててもひとつやね VBSファイル作って呼び出すのが確実
510 名前:デフォルトの名無しさん [2008/01/01(火) 20:18:13 ] >>506 おもしろい発想だけど、たとえばC言語でこんな・・・ main() { system("MKDIR \"C:\\Program Files\\MyApp\"") system("COPY *.* \"C:\\Program Files\\MyApp\""); system("ECHO インストールが完了しました。||PAUSE"); } こんなの書いて、「オレ、C言語でプログラムかいたおw。スゴイでそ!」 なんて言ったら笑われるだけ。他の言語でも同じこと。
511 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:54:49 ] C言語が使いこなせてるわけではないが C言語でプログラム書いたというのは事実なわけだが
512 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 22:43:12 ] 笑われるのもまた事実というわけだ
513 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:32:04 ] JScriptのマクロ変数の値を出すことできる? WScript.Echo(@if (@_Win32) 'Y' @else 'N' @end); はできても、 WScript.Echo(@_Win32); はできない
514 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:37:34 ] スレ違い
515 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:13:13 ] >>513 @変数は、JScript コードでは使えませんよ。 @setや@ifの中でしか使えない仕様です。 >>514 プログラム板で有名な基地害さんじゃありませんかw
516 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:53:29 ] >>513 @_win32じゃね? >>514 それ見ていつも思うけど 誘導先が書いてないんじゃ無意味なレスじゃね?
517 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 05:05:50 ] そうでもないか
518 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 12:01:50 ] >>510 ちょwwwwそれはないですwwwww さすがにそれはひどい・・・・。
519 名前:デフォルトの名無しさん [2008/01/02(水) 15:06:44 ] で、ドライバがインストールされているかどうかで処理を分岐させることはWSHではどうすれば良いのでしょうか?
520 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 15:10:57 ] If Then Else End If
521 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:17:49 ] >>520 いや、その構文を使うのはわかるけど、 If の後に書く内容ですよ。 どういう風に書いて真偽を返させればいいのかが全く検討がつきません。 If ドライバがインストールされている Then MsgBox ドライバインストールされてるよ〜 Else MsgBox ドライバインストールされてないよ〜 End If の"ドライバがインストールされている" と言う判定をどう書けばいいのかをお聞きしています。
522 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:27:25 ] インストールされた状態とされていない状態の差分を調べろ。 レジストリでも覗いとけ。それ以上はこのスレの範囲外。
523 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 20:45:49 ] ・複数のバイナリファイルの文字列を置換したい。 ・置換リストを作って置換したい。 ・CUIでもいい。 これらを実行したい場合は、WSHで出来ますか?
524 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 21:27:49 ] >>523 WSHとCOM(標準のものだけで事足りる)で出来ますよ
525 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:11:30 ] バイナリはpowershellのほうが楽
526 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:30:03 ] >>524 COMとはCOMMAND.COMのことですか? >>525 win2kは未対応のようで、うちでは使えません。
527 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 05:08:06 ] よくActiveXコントロールの事 ActiveXって言う人いるよね。 もちろんActiveXが何かは殆どわかってない人が多い
528 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 12:46:44 ] 特撮ヒーローの名前だ間違いない
529 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:09:38 ] >>526 win2kではCMD.EXEだな
530 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:22:51 ] WSHでバイナリは読めても書くのが大変だから、PowerShell使え win2kでも誤魔化せば使えるらしい
531 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:38:06 ] つVBA
532 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:57:36 ] >>529 そういうボケはいらん COMコンポーネントだろ
533 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:05:17 ] そういうボカシタ話はいらん 具体的なProgIDを書け しらんなら書くな
534 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:32:01 ] CreateObjectすんのにProgIDとか使わんがな
535 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:40:10 ] ProgID使わないでどうやってCreateObjectするんだよ。 っていうかググればADODB.Stream使うってすぐ出て来るよね。
536 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:42:03 ] ADODB.Streamにバイナリ書き込むのが面倒だって
537 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 18:18:04 ] WSHでも理論上はできそうだな。 俺は面倒臭がりだからC#で書くけど。
538 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 20:22:49 ] >>522 レジストリを覗く・・・それぐらいしか手が無いとは・・・・OTL
539 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 20:55:40 ] >>538 WSHはそういうもの 痒いところに手を伸ばすにはダルシムレベルの修行が必要
540 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:37:30 ] wmi
541 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:19:04 ] 残念ながらそれはハズレだ
542 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 03:12:15 ] >>539 別にWSHがそうだから、 とかいう問題じゃなくね?
543 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:01:01 ] きっとWSH以外ならもっと簡単な方法があるんだろう 僕にもその方法を教えてください
544 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 11:46:40 ] そういえばWindowsXPの「プログラムの追加と削除」ってHTAじゃなかったっけ
545 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:37:11 ] WSHでアイドル時の検出とか出来ませんか? Windowsのタスクスケジューラでアイドル時検出試してみたのですが とりあえず1分アイドル時間が続いたら hoge と表示してpauseしてそれから終わらせるスクリプト をスケジュール登録してみたのですが、 負荷が小さい処理、例えばメモ帳に文字列を 打ち込んでいたり、こうやって2chを見たりしていると、操作しているからアイドルではないのですが CPUから見るとアイドル状態なので、スケジュールが実行されてしまいます。 やりたい事は パソコンを切るのをしょっちゅう忘れる愚息のパソコンに仕込む事による 省エネ対策です。 1時間以上パソコンを全く触ってないならshutdownさせると。 しかし先ほど述べたように1時間以上2chを見てたりネットサーフィンしている状態だと 操作しているにも関わらずアイドル検出されてしまってシャットダウンされてしまうのでダメです。 MSNメッセンジャの「退席中」表示みたいな、指定時間全くマウスもキーボードも操作しなかったとき (Inputが全く無い時)にスクリプトを発動させたいのですが、WSHでアイドル時間を取得できませんか?
546 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:40:42 ] コントロールパネルの電源オプションでよくね?
547 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:41:16 ] 電源管理使えよ
548 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:08:21 ] レスありがとうございます。 電源オプションのプロパティ ウィンドウを見てみましたが、シャットダウンがありません。 まぁ休止状態で代用してもいいかな?とは思いますが システム休止状態 の所の 1時間後 にすると、アイドル時間(CPUがアイドルではなく ユーザによるマウスやキー入力が一切無いアイドル)が1時間経ったら勝手に休止になる のでしょうか?スレチ?
549 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:13:03 ] システム休止状態1分で 何もせずに2chブラウザだけ立ち上げた状態で 放置してみましたが、休止状態になりませんでした。 これじゃダメなようです・・・・
550 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:38:59 ] コントロールパネルの電源 休止状態でOK
551 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:46:07 ] CPU使用率がとれるとかとれないとか
552 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:49:11 ] あとDATが定期更新されてるんじゃね
553 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:52:09 ] HTMLファイル内にWSH(拡張子.vbs)を埋め込んで、ブラウザから機能を実行する事は出来ませんか? WSH HTML 等で検索してみたのですが、イマイチそういうことを紹介しているページが 見つかりません。 もしくは.vbsファイルの内容をテキストコピーして、 HTMLファイル内に貼り付けて そのコードを実行させるとかそういうことは出来ませんか?
554 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:02:44 ] ???良く分からないんだけど、HTAみたいなのを望んでるのかな。 とエスパーしてみる。
555 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:09:43 ] ちなみに、WSH関係なく単にVBScriptを書きたいだけなら、 JScript同様、script要素の中に書けるぞ。現状ではIE限定になるが。
556 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:39:11 ] できません。そんなことできたらずぼずぼの脆弱性だ
557 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:48:54 ] >>555 <script language="VBScript"> <!-- MsgBox "ハロー" <--! </script> ↑みたいな感じでHTMLで実行させる事についての詳細が知りたいのですが、 >>556 が言っているように出来ないのでしょうか? ブラウザでそういうことしたいならJava Scriptとか書くしかないのでしょうか? でも >>555 はできるって言っているし、どういうことなのん???
558 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:57:03 ] それはWSHではなく、VBScriptだろ
559 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:03:41 ] >>553 >WSH(拡張子.vbs) このあたりに勘違いを感じる
560 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:47:11 ] >>557 それくらいは555に書いてあるとおり可能。languageよりtype使えな。 >>556 ネットワーク上に置いてあれば、 FileSystemObjectなどはセキュリティゾーンに従って制限を受ける。 JScriptで自由に使えたXMLHTTPなどはVBScriptでも同様に使える。 いずれにせよWSHは関係なくスレ違い。よそ行け。
561 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 03:55:36 ] WSHとIEは一応は別物 が、実際にHTMLでVBScriptが使用される事はまず無い。 VBとVBSも当然違うので VBSの話がまともに扱われるのは ここかお前らスレかHTAスレぐらいのものだろう WSHもIEもHTAもスクリプトが実装されているモジュールは 完全に同一の物。 WSHのマニュアル、と言われているものも実際には 必ずしもWSHのマニュアルではなくWindowsスクリプト、 についてのマニュアル
562 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:30:06 ] 残念、ハズレ
563 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 09:31:30 ] >>553 >>557 VBScript HTML で検索したらいいと思うよ。 既に言われてるようにWSHは関係ないので WSH HTML では見つからないでしょ。