09/05/12 22:49:40
VBScriptについて必死に話し合ってください
VBS以外はスルーの方向で(・∀・)
※質問スレではありません、質問は最低限し抑えましょう※
2:デフォルトの名無しさん
09/05/12 23:19:26
なんでぇぇぇぇぇぇぇぇぇぇぇっ
いまさらぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁっ!!
ぶぃっ・う゛ぃーっ・すくりぷとぉぉぉぉぉぉぉぉっ
なんでっすかーーーーーーーーーーぁぁぁぁぁぁあああああああああああ
ぱわあああああああああぁぁぁぁぁぁぁっっぉああああああああああっ
しぇるぅじゃなくてぇぇぇぇぇぇぇぇぇぇぇーーーーっ!!
みたいな感じでよろしいでしょうか。
3:デフォルトの名無しさん
09/05/12 23:43:51
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
4:デフォルトの名無しさん
09/05/13 02:53:29
>>3
お前らゴールデンウィークの間なにしてたんだよ。
休んでもいいけど、アイちゃんのコンソールをそのままにして行くなよ。
5:デフォルトの名無しさん
09/05/18 10:38:03
VBScriptのよさを全世界に広げるためには
まずIE以外のブラウザで使えるようにすべきだと思うんだ。
VBScriptはJavaScriptのように変数や命令を大文字小文字を分けて書く必要もなく、
エラーが出てもOn Error Resume Nextで全部エラーを無視してくれる。
こんなすばらしい言語なのになぜIE以外で使われないのか理解できない!!
6:デフォルトの名無しさん
09/05/18 22:22:23
だってお手軽なIDEがないもん
VBSEditってのがあるけど、それなりな金額がかかるし(お金を払う価値はあると思うけど)
あと、導入に適した本がなかなか見当たらない。
いままで見てきた本で一番役に立ったのは
WSHクイックリファレンス
URLリンク(www.oreilly.co.jp)
これかなぁ
IEはシラネ
7:デフォルトの名無しさん
09/05/25 08:56:39
msscrdbg.exe というのがあったがまともに動かない。
そもそもデバッグ開始ができない。
8:デフォルトの名無しさん
09/05/25 20:43:34
悪用法しか思いつかない
9:デフォルトの名無しさん
09/05/31 08:48:58
そこでPowerShellですよ
10:デフォルトの名無しさん
09/06/07 00:46:21
VBSで、ブートローダの設定を切り換えるって可能?
例えば、XPとVistaをデュアルブートしてたらXPを無効にしたり。
11:デフォルトの名無しさん
09/06/08 18:42:35
ふつうのVBとVBSってどのような特徴があるのですか?
全くの初心者ですが、今からプログラムを始めるならばどちらが適していますか?
12:デフォルトの名無しさん
09/06/08 18:55:46
両方とも適してない
13:デフォルトの名無しさん
09/06/08 18:59:27
言語には用途ってもんがある。
プログラムで何がしたいんだ?そこが重要だ。
回答によってはVBもVBSも候補になりうる。
14:デフォルトの名無しさん
09/06/12 20:14:14
>>10
Vista側でVBSからbcdeditコマンドを叩く
URLリンク(technet.microsoft.com)(WS.10).aspx
15:デフォルトの名無しさん
09/06/12 21:27:13
サーバーサイドvbscriptで開発してるが、
・クラス機能がしょぼ過ぎる
・try catchを実現するために、関数を1つかまさなきゃらないのは面倒過ぎ
・ショートサーキット評価のないif文(おかげでネストが深くなる)
・Null引数で落ちる組み込み関数多過ぎ
・Set ~ = New のせいでオブジェクト型/その他を混在で返す関数が作れない
くらい最悪
16:デフォルトの名無しさん
09/06/13 14:02:24
なんでサーバーサイドの開発で VBScript を選んだの?
17:デフォルトの名無しさん
09/06/13 14:29:32
それを聞くのはヤボだろ。既存のシステムの維持拡張させられてるって可能性もあるわけだし。
え?新規?死んでください。
18:デフォルトの名無しさん
09/06/22 23:09:01
vbscript って、visual studio でプログラムを書けないの?
サクラエディタとか秀丸とか必要なの?
19:デフォルトの名無しさん
09/06/23 01:11:04
エディタありゃ書けるよ。つまりVisualStudioでももちろん書ける。
20:デフォルトの名無しさん
09/06/23 04:38:22
>>19
ありがとう。vbscriptの拡張子はなんにすればいいですか?
21:デフォルトの名無しさん
09/06/23 19:25:10
*.vbs だよ、なんでググれないの?
22:デフォルトの名無しさん
09/06/23 20:00:29
>>21
バカでごめんよ。
23:デフォルトの名無しさん
09/06/24 00:17:54
まぁ、どうせ糞スレなんだ
どんな書き込みだって許せる板さ(´_ゝ`)
24:デフォルトの名無しさん
09/09/03 23:28:32
最近使い始めたけど、面白いね
文字列を実行コードに出来るんて新鮮だった
これ使えばテンプレートみたいな事出来そう
カオスになりそうではあるがw
25:デフォルトの名無しさん
09/09/09 23:33:34
文字列を返す関数の戻り値を変数の参照にする方法はありますか?
26:デフォルトの名無しさん
09/09/10 00:07:08
URLリンク(www.google.com)
27:デフォルトの名無しさん
09/09/13 03:19:24
VBScriptプログラムを学習するのに、個人的にこの本は良かった。
VBScriptハッカーズ・プログラミング
URLリンク(www.amazon.co.jp)
ただamazonの評価にあるように、これは学習用の教科書として使う。
サンプルをとにかく試したいならサンプル集を探した方が良い。
っていうかサンプル集は本を買うよりググった方が良いと思う。
28:デフォルトの名無しさん
09/09/13 21:39:15
VBScript は徐々に消えつつあるけど、PowerShell は普及してるんかね
29:デフォルトの名無しさん
09/09/13 22:40:55
なんのかんの言ってもVBScriptが現在の標準だろ
少なくともWindows 2008でも標準インストールされないPowerShellを普及してるなどとはとても言えない
30:デフォルトの名無しさん
09/09/21 08:39:27
>>27
俺もその本で入った。
サンプル見ながら色々できるし、最初は便利だよね。
VBScript+HTAで色々やるんで、辞書みたいなのが欲しいんだけど、
良い本知ってる人居ますか?
機能逆引きできて、書式が出てればそれでOK(サンプルとか不要)な感じなんですが。
名前は忘れたけど、白地に文字の表紙で、10x20cmくらいの縦長の薄い本で
VBScriptの簡易リファレンスみたいなのがあって便利だったんですが、
今は絶版だったと思います。
WSHとVBScriptで別々に買うのが良いのかな。
31:デフォルトの名無しさん
09/09/21 08:45:01
VBScriptはHTAと組み合わせるとかなり色々できるようになるよね。
Windows上ならメモ帳で書いて、ほぼどこでも動作可能、
言語的にも色々な面でお手軽な所が好き。
クリップボード使えたりD&Dでの読み込み出来たり
文章や画像の表示もIE使えばIEで出来るだけ表示できるし
思った以上に色々できる。
ノートン先生に「悪意のあるプログラム」扱いされるのが許せん。
悪意は無いのに(´・ω・`)
32:デフォルトの名無しさん
09/09/21 15:34:06
ノートン先生使ってないけど
オレオレ署名入れてもだめ?
33:デフォルトの名無しさん
09/09/22 02:33:00
MSXML2.XMLHTTPを使ってWebページの自動取得をしています。
Refererで制限かかってるページあるんですけれど、
VBSで偽装できますか?
34:デフォルトの名無しさん
09/09/22 03:55:53
調べたけど、久しぶりにDLLヘルを見た
35:デフォルトの名無しさん
09/09/22 05:54:57
>>32
俺も使って無いからよく知らないが、
ノートン先生入れてる友人にVBScriptで作ったプログラム渡したら
「悪意のあるプログラムなので隔離しました」
とか出たらしい。
悪意はねぇよな。
自己レスだけどポケットリファレンスVBScriptって本が割りとよかった。
よく探したら家にあった。
36:デフォルトの名無しさん
09/09/22 08:51:49
>クリップボード使えたり
htmlfileは、about:blankのセキュ設定次第なんだよな
ナンか回避方法ないかと、てstしたがムダだった
37:デフォルトの名無しさん
09/09/22 10:35:46
>>36
HTAなら使用可能だと思うよ。
38:デフォルトの名無しさん
09/09/22 13:09:39
>>37
今は、インターネッツのセキュ設定を変更しない方法で、IE使ってる
もちろん、HTAも使えるんだけど
要は、アウトプロセスじゃなくインプロセスでやりたくなったわけ^^
39:33
09/09/23 16:57:22
33です。
CreateObject("InternetExplorer.Application")して
Navigateメソッドで自己解決しました。
ところで取得したDocumentオブジェクト内のImageオブジェクトを
そのままファイルに保存すること、できませんか?
40:デフォルトの名無しさん
09/09/24 00:47:53
VBScriptとHTAでファイルのバックアップを自動で取るプログラム作ったんだけど、
作業途中で止める方法をどうするかで困ってる。
何か良い方法ないかな。
ループで指定フォルダ下のファイルを、まぁちょっと色々加工してから自動的に別の場所にコピーするんだけど、
処理中はHTAのボタンとかは弄れないし・・・
別のHTAで識別用ファイルを生成して、そのファイルを発見し次第、緊急停止
という方法を思いついたけど、どう考えてもスマートなやり方じゃないよね。
41:デフォルトの名無しさん
09/09/24 03:43:52
>>40
処理中止後の後処理が不要であればCScript
[CTRL]+[C]で処理を止めることができる
42:デフォルトの名無しさん
09/09/24 06:54:04
>>41
ありがとう。
わりと大事なファイルのバックアップで、
DVDへの書き込みとサーバー上へのファイル移動を行なうから、
出来るだけ強制終了的な終わり方は避けて、
何らかの方法でループ中に判定で正常終了したい。
あと、HTAで使ってると、WScriptやCScriptと違ってmshtaとして動くから
そういうショートカットキーとかは使えないんじゃない?
43:デフォルトの名無しさん
09/09/24 11:10:46
>>42
HTAのボタンを常に押せる状態にしたければ、実処理を別プロセスにする方が良い
私ならCScriptで作った「バックアップ処理」と「ロールバック処理」をキックするけどね
[CTRL]+[C]を使わない場合は↓のようにしてEOF検出変化を利用する
待ち側:判定用ファイルをリードオンリーで開きっぱなしにして定期的にEOFを判定
指示側:判定用ファイルに追記
44:デフォルトの名無しさん
09/09/24 13:29:26
>>43
実処理を別プロセスにする というのが良さそうですね。それで試してみます。
バックアップ処理自体はCScriptに投げてHTAの方の処理は終了、
緊急停止などGUI操作専用にするって感じですかね。
一つのファイルを開いておいて中身で判定というのも、ファイル自体の存在チェックよりは良さそうですね。
値の受け渡しも出来るし、進行状況の表示にでも使おうかな。
45:デフォルトの名無しさん
09/09/26 14:36:41
これまでCユーザでしたが、最近業務でVBScriptを使うようになり現在勉強中の者です。
VBScriptを使っていて、ちょっと不便だなと思ったことがあります。
それは、関数にオブジェクトのプロパティを参照渡しすることができないということです。
たとえば、call swap( obj1.x, obj2.y )を実行して、obj1.xとobj2.yの値を
入れ替えようしても、うまくいきません。
うまくオブジェクトのプロパティを参照渡しする方法は無いのでしょうか?
よろしくお願いします。
46:デフォルトの名無しさん
09/09/26 14:37:30
すみません。ageさせてください。m(_ _)m
47:デフォルトの名無しさん
09/09/26 16:39:14
>>45
無理。
プロパティは事実上、Get/Setという2つの関数からできているのと同じ(正確にはSetRefの場合もあるが)。
そういう意味で変数と違うから参照渡しはできない。
VBSだとCallByNameも使えないしねえ。
48:デフォルトの名無しさん
09/09/26 20:47:02
だな
49:デフォルトの名無しさん
09/09/26 21:42:18
ASPが出た頃はこれからVBScriptが主流になると思っていたが
今では書店でもあまり見かけなくなった
50:45
09/09/27 17:19:57
>>47
ありがとうございました。
51:デフォルトの名無しさん
09/10/07 00:27:08
WSH Lab.掲示板の過去ログ読んでたら、vbsからインプロセスで窓オブジェを使う方法がわかった
先人恐るべし
52:デフォルトの名無しさん
09/10/07 01:11:17
オブジェを飾ってどうするつもりだ
53:デフォルトの名無しさん
09/10/07 20:49:18
つまらん
54:デフォルトの名無しさん
09/10/08 22:07:29
IEを操作するクラスを作っています。
IEからのイベントに応答する場合、
CreateObject("InternetExplorer.Application","IE_")
などと書きますが、
コールバックされる IE_ から始まるプロシジャを自作クラス内に置くことはできませんか?
あるいはc++でいうスタティックなプロシジャにするにはどう書けばよいのでしょうか。
55:デフォルトの名無しさん
09/12/09 16:46:21
VBSで二重起動防止ってどうやればいいでしょう?
Mutexとか使えると良いのですが・・・
56:デフォルトの名無しさん
09/12/09 19:48:29
VBScriptの機能拡張はCOM一択
57:デフォルトの名無しさん
09/12/09 22:13:00
>>55
fso.opentextfile(wscript.scriptfullname,8)
58:デフォルトの名無しさん
09/12/09 22:17:26
>>54
executeglobal "set IE_hoge=getref(""hoge"")"
59:デフォルトの名無しさん
09/12/11 09:07:23
scripting.dictionaryは順序ほ保持してくれる連想配列ですか?
60:デフォルトの名無しさん
09/12/11 10:04:50
できないことは多すぎるくせに、キッチリすることを偏執なまでに要求するひどい言語だった
>>1には悪いが、モダンな言語使った方が絶対楽だ!
61:デフォルトの名無しさん
09/12/11 23:53:14
一体何をやろうとしたんだ?
62:デフォルトの名無しさん
09/12/12 19:22:48
scripting.dictionaryはVBScriptと関係ないな
63:デフォルトの名無しさん
09/12/26 11:45:12
>>61
恋人ができるスクリプト
64:デフォルトの名無しさん
09/12/30 21:47:15
Win7になってなにか変わった?XPの時に使ってたvbsが使えなくなったんだけど
XPでは、右クリック→送る から以下のvbsでファイル更新日を変えてたんだけどWin7では更新日が変わってくれなくなった。なんでだろ?
もちろんcygwinはちゃんとセットアップしてあるし、touch.exe 単体で更新日は変えれてる。
option Explicit
Dim objFSO
Dim objWshShell
dim objArg
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWshShell = CreateObject("Wscript.Shell")
for each objArg in Wscript.Arguments
if objFSO.FileExists(objArg) then
' 更新日変更
objWshShell.Run "C:¥cygwin¥bin¥touch '"+ objArg + "'", 0
end if
Next
65:デフォルトの名無しさん
09/12/30 22:08:06
>>64
なんでfsoで更新日を変更しないの?
66:デフォルトの名無しさん
09/12/30 22:17:55
おぉ
変更できないのか
67:64
09/12/31 10:41:22
どうもcygwinのtouch側の問題みたい。
パスに日本語があるとダメッぽい。Pathがアルファベットだけなら更新日が変わってくれた。
ディスクトップのパスは「c:¥User¥[xxx]¥Desktop」と英語表記だからOKなのかな?
XPの時はどうだったろ?
この前、cygwin自体がUTF8対応で変更されたみたいだからその影響かな?
68:デフォルトの名無しさん
09/12/31 15:58:06
>>64
なんでshell.applicationで更新日を変更しないの?
69:64
09/12/31 22:30:07
う~ん、やっぱりvbs側かなぁ
パスに日本語があると exe 側に渡される引数が「'」で挟まれた状態のまま渡されてくる
'C:\Users\myname\Desktop\aあ'
C:\Users\myname\Desktop\a
「'」で挟まないとパスに空白があると上手く動いてくれないし
>68
>なんでshell.applicationで更新日を変更しないの?
どの関数を使うの?
70:デフォルトの名無しさん
09/12/31 23:21:17
>>69
なんで「"」でパスを挟まないの?
71:64
10/01/01 18:19:34
vbs以前の問題としてExplorerの段階で「"」で挟んだ文字列が作られてくる
専用の改造版touch.exeを作って対応するかなぁ
単純な「"」を打ち消すだけのラッパでOKかな
>>70
> >>69
> なんで「"」でパスを挟まないの?
>
「"」で挟んでも一緒だった
72:デフォルトの名無しさん
10/01/01 19:05:41
>>69
なんでPowerShell使わないの?
73:デフォルトの名無しさん
10/01/01 19:30:48
なんで質問ばっかなの?
74:デフォルトの名無しさん
10/01/01 20:25:56
どれが質問なの?
75:デフォルトの名無しさん
10/01/01 20:43:47
>>69
なんでtouchのショートカットにしないの?
76:デフォルトの名無しさん
10/01/17 05:13:38
てか、VBScript開発でなんでIDEなんて要るのか
疑問に感じる
77:デフォルトの名無しさん
10/01/19 15:15:29
なんでtouchのショートカットにしないのるのか
疑問に感じる
78:デフォルトの名無しさん
10/01/28 20:32:06
VBScriptとJScript
実行速度は同じ?
79:デフォルトの名無しさん
10/01/28 21:10:29
>>78
VBScriptの方が若干高速
実行速度より性質の違いを気にするべきだと思うけど・・・
80:デフォルトの名無しさん
10/02/23 15:31:29
PowerShellはIE操作出来ないからな。
やっぱVBSしかないか~
81:デフォルトの名無しさん
10/02/23 21:53:27
VBSなら一応Windows95やWindowsNTでも使える。
外部コマンド関連などWindows9x系とWindowsNT系で挙動が微妙に異なる場合もあるが。
82:デフォルトの名無しさん
10/03/05 01:09:06
てっきり化石スレかと思ったら比較的新しいんだなw
別にここでもいいんじゃないの
VBSで便利なプログラムを作れスレ
スレリンク(tech板)
83:デフォルトの名無しさん
10/03/28 22:01:08
初心者dosからきました。
やりたいことは、
既存のタスクを一括で"タスクを実行するためにスリープを解除する”
に変更したいです。
schtasksのオプションでは出来ないため、悩んでます。
URLリンク(64.4.11.251)
Property WakeToRun As Boolean
とかかれても具体的にどうすればいいやら
84:デフォルトの名無しさん
10/03/28 23:31:11
URLリンク(social.technet.microsoft.com)
85:デフォルトの名無しさん
10/04/09 01:13:23
URLリンク(msdn.microsoft.com)(v=VS.85).aspx
86:デフォルトの名無しさん
10/04/16 00:56:42
BrowseForFolder
について質問なんですが
Optionsに&H4000を指定して
ファイルも表示出来る状態にした場合に
選択されたファイルのパスを取得する方法はありますか?
87:デフォルトの名無しさん
10/04/16 01:46:45
ない
88:デフォルトの名無しさん
10/04/16 03:51:36
SHBrowseForFolder()
89:デフォルトの名無しさん
10/04/25 18:54:39
代わりに
8856F961-340A-11D0-A96B-00C04FD705A2
か
55136805-B2DE-11D1-B9F2-00A0C98BC547
を使えばやりたいことはできるんじゃないか
90:デフォルトの名無しさん
10/06/04 23:30:39
getref、クラスの中のメソッドも参照しろよ!
91:デフォルトの名無しさん
10/06/05 18:12:50
今更ながらに、VBScriptで.netのクラスを一部使用できることを知った。
URLリンク(technet.microsoft.com)
92:デフォルトの名無しさん
10/06/09 19:00:51
>>90
クラスの中からexecuteglobalでglobal contextに作ればよい
93:デフォルトの名無しさん
10/06/12 13:48:17
やりたいこと
WSH(VBS)から別途準備したxlsファイルのA列のデータの入っている最終行の行番号の取得
理由
xls内でマクロ(VBA)があるとファイルを開くたびに有効するかの問い合わせがある為
xls内にはマクロを組まず、外部からvbsで取得をしたい。
わからないこと
xls内でVBAで取得する場合には、"Range("A65536").End(xlUp).Row"で取得できる。
しかし、外部のVBSからはEnd(xlDown)が使えないようでエラーしてしまう。
同様に"SpecialCells(xlLastCell)"もダメ・・
教えてほしいこと
何か良い方法がないか教えてください。
------
こんな気持ち悪いコードしか思い浮かばない・・・・
Set getExcel = WScript.CreateObject("Excel.Application")
getExcel.Workbooks.Open("C:\book1.xls")
For i = 65536 To 1 Step -1
If getExcel.Worksheets(1).Cells(i, 1) <> "" Then
e = i
Exit For
End If
Next
WScript.echo("last row:" & e)
94:デフォルトの名無しさん
10/06/12 14:08:01
ExcelVBAの定義(xlDown,xlLastCellなど)はvbs側でそのまま使えない
vbs側では「自分で定義して使う」or「値を直接入れる」しかない
95:sage
10/06/12 14:24:07
>>94
サンクス!
今のところ、上の気持ち悪いコードしか思い浮かばないので、もう少し考えてみる。
自分で定義・・か、少し時間がかかりそうだな。俺には
ありがと
96:デフォルトの名無しさん
10/06/12 19:09:10
WSFでExcelへの参照を明示する手もある。拡張子wsfでたぶんこんな感じ。
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<job>
<reference guid="{00020813-0000-0000-C000-000000000046}"/>
<script language="VBScript">
<![CDATA[
Set getExcel = WScript.CreateObject("Excel.Application")
getExcel.Workbooks.Open("C:\book1.xls")
For i = 65536 To 1 Step -1
If getExcel.Worksheets(1).Cells(i, 1) <> "" Then
e = i
Exit For
End If
Next
WScript.echo("last row:" & e)
]]>
</script>
</job>
97:デフォルトの名無しさん
10/06/12 19:28:01
>>95
今回は自分で定義する必要は無いかな。
>>94さんの言うとおり、値を直接入れれば終わり。
msgbox getExcel.sheets(1).cells(65535,1).end("-4162").row
で動くはず。
試してみて。
ExcelやVBの定数を調べる時は、
イミディエイトウィンドウに ?xlup
と入力してリターン押すと値が表示されるよ。
98:デフォルトの名無しさん
10/06/12 19:44:17
>>95
一応動作確認したよ。きちんと動いてくれました。
VBSはあまり触らないんだけど、workbookをsetさせるのって出来ないのかな。
あまりスマートじゃない構文になってしまって、ちょっと悲しい。
dim Ex
dim a
const BkPath = "ブックのパス"
const BkName = "ブック名"
set ex = createobject("excel.application")
ex.workbooks.open(bkpath& "\" & bkname)
a= ex.sheets(1).cells(65535,1).end("-4162").row
ex.workbooks(bkname).close
msgbox a
何とかブックを開かずに取得出来るとスマートですね。
excel4macroでブックを開かずにデータを取得出来たはずなので、
そっちも少し試してみようと思います。
99:デフォルトの名無しさん
10/06/12 19:54:28
excel4macroだと、セルを直接指定しないと取得出来ないので、できないかもしれません。
スレ汚し失礼しました。
100:デフォルトの名無しさん
10/06/18 21:10:59
a="10"
b=20
if a > b then
wscript.echo """10"" > 20"
else
wscript.echo """10"" <= 20"
end if
で、 a > b が真になるのは、どういう理屈からでしょうか?
101:デフォルトの名無しさん
10/06/18 22:24:42
>>100
比較演算子では、一方の式が数値、他方が文字列の場合、数式の方が文字列式より小さくなる。
URLリンク(msdn.microsoft.com)
ところが、If文に変数でなく即値を記述するなどいろいろ試してみると
結果が違ったりして、厳密な変換ルールは謎
102:デフォルトの名無しさん
10/06/18 23:07:00
>>101
どうもありがとうございます。
"10" > 20 は偽なんですよね。悩ましい…
明示的に数値か文字列かどちらかに変換するしか
なさそうですね。
103:デフォルトの名無しさん
10/06/19 08:30:26
>>102
VBSはVartiant型しか宣言出来ないのだから、
やはり型変換の手間が必要な時もあるよね。
104:デフォルトの名無しさん
10/06/20 01:35:49
>>96-99
ありがとう!
助かった。
お礼が遅くなってごめんよ
105:デフォルトの名無しさん
10/07/07 09:24:08
スクリプトで、「そのドライブが存在するかどうか」を判定するには
どうすればよいのでしょうか?
存在するか否かを判定させて、処理させるか否かを分岐させたいと思っています。
ネットワークドライブに分かり易く名前を付ける為、バッチファイルの中で
------------------------------------------------------------
NET USE F: \\ochinko\chinchin /USER:kintama penis
NET USE G: \\192.168.0.69\共有 /USER:hiv aids
c:\ND_rename.vbs
------------------------------------------------------------
と記載し、ND_rename.vbsの中で
------------------------------------------------------------
strDrive = "F:\"
strName = "Fカップ"
With CreateObject("Shell.Application").NameSpace(strDrive)
.Items().Item().Name = strName
End With
:
:(以下ドライブ分同様の記述)
------------------------------------------------------------
としています。
これだと、相手のPCが落ちている場合等、毎回VBScriptのエラーが
出てきて精神上よろしくないのです…そのドライブが存在しないのならば
処理を飛ばせればよいのかと思いました。
106:デフォルトの名無しさん
10/07/07 10:09:03
>>105
URLリンク(msdn.microsoft.com)
URLリンク(www.atmarkit.co.jp)
107:デフォルトの名無しさん
10/07/07 20:18:54
>>105
cscript c:\ND_rename.vbs
108:デフォルトの名無しさん
10/07/29 10:59:40
メモリにアクセスして書き換えるってどうやるの?
ゲームやってるときに限界突破とかしたい
109:デフォルトの名無しさん
10/07/29 11:57:16
スレリンク(motenai板:174番),190
これをVBScriptで書き直せ
110:デフォルトの名無しさん
10/07/29 13:50:20
自分で書けばよかろう
何がしたいんだ?
111:デフォルトの名無しさん
10/09/13 18:13:46
On Error Resume Next がいまいちよく解りません…
「実行時エラーを発生させたス テートメントの直後にあるステートメント、または、On Error Resume Next ステートメントが入っているプロシージャから最後に呼び出しを行ったステー トメントの直後のステートメントに制御を移動」…
つまり、どっからどこまでがエラー処理が必要で、どこからが通常通りエラーメッセージ吐いて終了してくれるんでしょうか
112:デフォルトの名無しさん
10/09/13 19:11:19
on error resume next は on error goto 0 で閉じるもの。
2つセットで覚えておくと良いよ。
resume next ってのは、例えエラーを吐いたとしても無視して次の行に移動するって事。
エラーが起きるって事はプログラムの不備なので、しっかりプログラミングが出来れば、
”基本的に” on error resume next を噛ませる必要は無いよ。
エラー処理面倒だから無理やり動かしちゃえ!ってのは最悪のケース。
113:デフォルトの名無しさん
10/09/13 19:36:12
使えれば素直にそれを使ったんですが
On Error GoTo 0 が無い&ネット接続不可の環境なんです(つまり書き込みしてる環境とは別の環境です)
色々なサイト読むと Resume Next だけでも安全なコードは書けるっぽいのでそれで何とかしようと思ったんですが…
イマイチResume Nextの有効範囲がよく判らない(どうやらコードの最後までという訳ではないらしい?)ので質問しました
114:デフォルトの名無しさん
10/09/13 21:09:19
いや、最後までだろ?
115:デフォルトの名無しさん
10/09/13 21:34:22
>>113
関数/サブルーチン内なら該当の関数/サブルーチン終了まで
関数外なら最後まで
だと思う
On Error GoTo Next
は基本的にエラー処理のモードを変更するような意味合いなので、
自分で明示的に再設定しない限り勝手に戻ったりはしない
116:デフォルトの名無しさん
10/09/14 17:06:09
よくわからんなら、必要なところだけセットで括るようにすればいいじゃん。
他の言語での例外処理はそういうやり方になってるんだし。
117:デフォルトの名無しさん
10/09/14 19:49:19
>>115
ありがとうございます。関数/サブルーチン終了までですね
エラー処理部分だけサブルーチンに括るようにします
118:デフォルトの名無しさん
10/10/09 21:43:59
超基本的な質問で悪いんだけど
文字で「"」を扱うにはどうしたらいいですか?
改行はvbcrなのは分かったんですけど「"」は
vbscript 「"」で検索してもだめだ・・・
119:デフォルトの名無しさん
10/10/09 21:49:53
chr(34)
120:デフォルトの名無しさん
10/10/09 21:56:43
ふおぉぉおありがとうございます!!!
121:デフォルトの名無しさん
10/10/10 02:23:15
""""
122:デフォルトの名無しさん
10/10/10 12:17:58
ImageMagickをVBscriptで使いたいのですがインストール後
Set im = CreateObject("ImageMagickObject.MagickImage.1")
のところで
「ActiveXコンポーネントはオブジェクトを作成できません」という
エラーが出てしまいます。
どうしたらVbscriptでImageMagickを使う事が出来るのでしょうか?
OSはwindowsvistaです。
以下をやってみたけどやはり同じエラーが出続けます
インターネットオプションのセキュリティのタブで
レベルカスタマイズからActiveX関連の部分を有効にする
regsvr32 /c /s "C:\Program Files\ImageMagick-6.6.4-Q16\ImageMagickObject.dll"の実行
ImageMagickのアンインストールと再インストール
インストールフォルダーをC:\Program FilesではなくC:\にして管理者権限でインストール
ImageMagickについていたTEST用の.vbsを実行してみましたが
同じSet im = CreateObject("ImageMagickObject.MagickImage.1")で
同じエラーが出るのでこの文章自体は間違っていないようです。
気になるのは
インストール時にppm・・・というエラーメッセージが出た事です。
検索したらvbscriptには関係ないとのことでしたが一応状況を書きました。
↓エラーメッセージのスクリーンショットです。
URLリンク(viploader.net)
123:122
10/10/10 16:19:07
あの・・・とりあえずVBscriptを再インストールしようと思うのですが
どこでダウンロードできますか??
マイクロソフト内が広すぎてどのファイルか分かりませんでした。
124:デフォルトの名無しさん
10/10/10 17:49:17
>>123
VBScriptは単体ではなく、WSHの一部だよ。
再インストールはできないし、その必要もない。
現在のWSHのバージョンは5.7だろ?
「WSH 5.6」、「WSH 5.7」で検索してみろ。
それでヒットするMSのページがそうだが、必要ないぞ。
まあ落ち着け。
125:デフォルトの名無しさん
10/10/10 20:11:38
いきなり難しいことに挑戦してるなー。
そもそもImageMagickがCOM(ActiveX)を持ってるとは知らなかったぞ。
>インターネットオプションのセキュリティのタブで
>レベルカスタマイズからActiveX関連の部分を有効にする
これはIEおよびIEコンポーネントの設定。IEというブラウザの話なので無関係。
URLリンク(www.imagemagick.org)
ここにはこう書いてあるぞ。
The ImageMagickObject is registered if the checkbox, Register ImageMagickObject, is checked at install time.
>ImageMagickのアンインストールと再インストール
途中の6個あるチェックボックスの一番下に
□ Install ImageMagickObject OLE Control for VBScript, Visual Basic, and WSH
という、チェックの入ってないやつがあっただろう。チェック 入れた?
でも新しいやり方ではなく、今まで通りのコマンドライン実行の方が良いのでは?
実行するのには"WScript.Shell"のExecメソッドとRunメソッドがある。それぞれちょっと違う。
126:123
10/10/10 21:25:09
>>124
そーなんですか・・・ありがとうございます。
>>125
□ Install ImageMagickObject OLE Control for VBScript, Visual Basic, and WSH
にはチェック入れました。
コマンドライン?コマンドプロンプトでって事ですか?
とりあえず動かないのも寂しいので
Vbscriptでバッチファイルを自動で作るようにして
ImageMagickでの動作はbatファイルにさせてみましたけど
なんだかなあです。
127:デフォルトの名無しさん
10/10/10 21:30:39
スマン、またトンチンカンなこと言ってたな。
ImageMagickObjectのインストール自体は出来てるんだな。
regsvr32 /c /s "C:\Program Files\ImageMagick-6.6.4-Q16\ImageMagickObject.dll"
これを変なオプション付けずに、
regsvr32 "C:\Program Files\ImageMagick-6.6.4-Q16\ImageMagickObject.dll"
でやったらどうか。
テストするならここのがいいんじゃない。
C:\Program Files\ImageMagick-6.6.4-Q16\ImageMagickObject\Tests
128:デフォルトの名無しさん
10/10/10 22:02:34
URLリンク(up3.viploader.net)
↑やってみましたけどエラー出ました。
教えて貰ったtestsにあるvbsも同じ
Set im = CreateObject("ImageMagickObject.MagickImage.1")で
エラーになります。
129:デフォルトの名無しさん
10/10/10 22:03:15
>>128=>>123です
130:デフォルトの名無しさん
10/10/10 22:36:55
どうせ二人しか居ないよ。
一応、>>124=>>125=>>127な。
あと、某スレの>>230=>>232=>>234でもある。
しばらく手伝うよ。でも俺もレベル超低いからそこは期待するな。
とりあえず、
regsvr32 0x80070005
でググるべきだろう。
131:デフォルトの名無しさん
10/10/10 22:50:23
>>128
"Users"ってことは、Vistaか7?管理者で実行してくれ。
132:124
10/10/10 23:15:22
あら他にも助っ人がいらっしゃるぞ。良かったな。
そう、管理者権限があやしい。
で、もしImageMagickObjectがうまく入ったとしても…
こんな問題があるなら一般ユーザーには使いにくいのでは。
>Vbscriptでバッチファイルを自動で作るようにして
そこまで出来るんならわざわざバッチファイルを作ってそれを起動するんじゃなく、
VBScriptにoraファイルをドラッグ&ドロップで開始し、いろいろやって、
直接VBScriptからImageMagickを起動すればいいじゃん、て話。
VBScript一本のみにするとなんか問題あるかな??
133:123
10/10/11 18:27:41
>>131
vistaです。
ありがとうございます!
>>132
たしかにそうおもいますね
いろんな人に使って欲しいから
無理に解決せず
vbscript+バッチでやらせた方が
いいですね。
某所でもアドヴァイスありがとう!!
134:124
10/10/11 22:45:15
>vbscript+バッチでやらせた方がいいですね。
どうしてもバッチから離れられないんだね(笑)
まあ確実な逐次実行ならバッチも良い選択だが。
oratopsd4見たぞ。お疲れさん。短時間でここまで仕上げるとは、たいしたもんだよ。
説明含めていろいろツッコミどころが多いけどね…
なんか不要な部分が多いね。Wscript.echoが大量に有る(笑)
これ、クリックするのが大変そうだな。まだまだα版てとこかな。
次に進む前にかなり整理した方がいいんじゃない。
最初に一回CreateObjectしたらそれを使いまわし、最後にNothingするとか。
整理できれば複数ファイル対応に拡張するのも容易だろう。
ついでに重箱の隅をつついてみると、
・chr(34)は""とも書けるよ。好みの問題だけど。 Dir1="""C:\Program Files"""
・wscript.sleep(4000)はいらないんじゃない?objWShell.Run zipname,0,True は終了待ちするから。
というか、今のobjWShell.Runする方法ではダブルクリックしてるのと同等だから、
各ユーザーの環境(インストールされてる解凍ソフト)の挙動に左右されると思う。
ZIPの解凍については「WSH ZIP 解凍」等でググって…もうやってるか(笑)
135:123
10/10/11 23:45:26
ああ、どうもアドヴァイスありがとうございます。
Wscript.echoは
一応「 ' 」で止めてありますけど
の数はエラーを探した回数&またすぐに調べるようにってことで・・・。
オブジェはまったく調べてないので(もう日にちがやばいので・・・orz)
もうおまじない的につけまくりましたwww
136:124
10/10/12 00:31:55
「 ' 」で止めてないのが9個もあるけどそれでいいのか(笑)
じっくり取り組めば不可能だったことも可能になると思うよ。
まあゆっくりやってください。
137:デフォルトの名無しさん
10/10/12 01:14:05
>>136
ぐえっ直しとくよ・・・
指摘ありがとう!
138:124
10/10/12 01:27:16
ああ、それと、
ベクターにある「ZIP.VBS」は見といたほうがいいと思う。
URLリンク(www.vector.co.jp)
ZIP作成も出来るぞ。
139:123
10/10/12 01:45:42
>>138
それは試したけど駄目だった・・・
というかまだよく分かってないときにやったから
出来なかっただけで
次は出来るかもしれないですね!
ありがとう!!
140:デフォルトの名無しさん
10/10/16 21:05:46
VBScriptでスクリーンセーバーの「モニタの電源を切る 時間」を設定する方法を教えてください。
141:デフォルトの名無しさん
10/10/19 22:35:46
sendkeys
142:デフォルトの名無しさん
10/10/25 20:55:06
powercfg
143:デフォルトの名無しさん
10/11/02 18:32:21
保護モードで動いているか調べる方法を教えてください
144:デフォルトの名無しさん
10/11/02 20:30:50
保護モードではできないことをやってみればよいのでは?
145:デフォルトの名無しさん
10/11/02 22:12:47
たとえば?
146:デフォルトの名無しさん
10/11/03 10:11:02
c:\ にファイルつくるとか
147:デフォルトの名無しさん
10/11/03 12:58:00
それってUACと勘違いしてない?
148:デフォルトの名無しさん
10/11/05 00:52:23
区別してやらないことをやってみればわかるな
149:デフォルトの名無しさん
10/11/21 04:57:26
Windowsタスクスケジューラー権限昇格 0day
URLリンク(www.exploit-db.com)
150:デフォルトの名無しさん
10/11/22 18:28:46
きれいなソースだね
151:デフォルトの名無しさん
11/04/02 21:18:03.59
PCがWindows7になると、JoinDomainOrWorkGroupでドメイン参加ってできないですか?
MSDNみてもいまいちわからないです。
152:デフォルトの名無しさん
11/04/03 02:24:32.57
>>151
俺も良く分からんが、これじゃないか?
URLリンク(blogs.technet.com)
153:デフォルトの名無しさん
11/04/03 22:24:17.80
>152
レスサンクスです。これをベースにつくったんですけれど、
XPは参加できたけど、7はダメだったんです。
もうちょっと見直してみます。
154:デフォルトの名無しさん
11/04/04 21:22:28.89
Win32_NetworkAdapterConfigurationで
IPV6のアドレスを取得条件で省きたいんですが、
可能でしょうか?
155:デフォルトの名無しさん
11/04/04 22:10:51.61
うん
156:デフォルトの名無しさん
11/04/06 00:25:25.01
>>155
アオマエに聞いてるんじゃネェよ。とっとと失せな!
157:デフォルトの名無しさん
11/04/15 18:21:51.45
うん
158:デフォルトの名無しさん
11/04/27 23:51:46.09
いかんな‥‥2年かけて158か‥‥必死さが、全く伝わってこない‥‥w
159:デフォルトの名無しさん
11/05/01 17:40:42.29
スクリプトでセキュリティゾーンと保護モードを調べる方法を教えてくれー
160:デフォルトの名無しさん
11/05/17 18:36:00.43
プロパティを表示して引っこ抜け
161:デフォルトの名無しさん
11/06/07 13:14:19.32
今ASP(クラシック)&VBS勉強してるがダメか?
162:デフォルトの名無しさん
11/06/18 03:53:30.64
ラテン語だって勉強していいんだから
163:デフォルトの名無しさん
11/06/28 01:30:43.46
全然必死さが足りない
164:デフォルトの名無しさん
11/06/28 18:09:17.69
ieのmenuextでクリック箇所のフォント、色、文字サイズを調べるにはどうすりゃいい?
165:デフォルトの名無しさん
11/07/01 21:05:32.84
スレ違い
それはIEの話であって、VBSの話じゃない
ActiveXアプリケーション(IEとかExcelとか、MS以外だとIrvineとか)の話まで
VBSの話として扱うと、なんでもありになって収拾がつかなくなるからな
166:デフォルトの名無しさん
11/07/02 19:05:37.43
external.event.srcelement.style.font
167:デフォルトの名無しさん
11/07/02 22:15:03.42
まったくの初心者です。
自分なりにネットで調べてもよくわからなかったので、よろしければ教えてください。
VBSで"notepad.exe"を起動させたいとき、
Execメソッドを使うと瞬時にメモ帳が起動するのに、
Runメソッドだと2~3秒たってからメモ帳が起動します。
Runメソッドというのは、もともとそういうものなのでしょうか?
Runメソッドを使ったときでもメモ帳を瞬時に起動させることはできないでしょうか?
よろしくお願いします。
168:デフォルトの名無しさん
11/07/03 00:12:47.25
>>167
俺はExecしか使わんけど
URLリンク(www.atmarkit.co.jp)
ここに「別プロセスとしてプログラムを起動する」と書いてあるから、それで多少時間がかかるんじゃない。
話は違うかも知れんけど、
AccessのVBAでもRunSQLとExecuteってのがあって、
RunSQLが非同期実行でExecが同期実行。
ExecuteだとSQL実行中にエラーがあると教えてくれるが、
RunSQLだと失敗しててもエラー吐かないから普通は使わない
169:デフォルトの名無しさん
11/07/03 00:42:23.03
>>168
ありがとうございます。
Runメソッドを使ったときも、Execメソッドのときのように
一瞬で起動してくれるといいのですが、もともと使い道が違うのかもしれません。
もう少し勉強してみます。教えていただいたURLも参考になりました。 m(_ _)m
170:デフォルトの名無しさん
11/07/03 16:11:41.79
runはshellexecute()
execはcreateprocess()
だから
171:デフォルトの名無しさん
11/07/03 22:14:58.87
>>170
ありがとうございます。
shellexecute()、createprocess()というのを
調べてみます。
172:デフォルトの名無しさん
11/11/22 12:55:38.53
調べた結果は?
173:デフォルトの名無しさん
11/11/22 22:13:48.07
結果往来
174:デフォルトの名無しさん
12/03/09 12:53:56.73
VBScriptのClassは継承できないのではなく、継承する必要性が全く無い事にようやく気が付いた...orz
175:デフォルトの名無しさん
12/03/09 20:55:28.95
VBScriptよりJScriptの方が配列の扱いが柔軟だし作りやすい
けどWindows上でのパスを扱うならエスケープ扱いを受けないVBScriptの方が勝手がいい
自分の中で必死に話し合ってみた
176:デフォルトの名無しさん
12/03/10 11:14:56.41
VBScriptのClassがヤバイほど面白れぇ...
何これ、派生クラスは作れないのに、派生クラス使ってコード書くのとコード量が変わらねぇw
177:デフォルトの名無しさん
12/03/10 13:45:22.16
ラブレター
178:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 15:50:37.20
>>176
基底クラスを書かない分むしろ短かったりする
179:デフォルトの名無しさん
12/05/09 02:18:33.22
起動してバックグランドでキー監視って出来ませんか?
指定したキーが押されたら処理が始まって終わったらまたキー待ちという処理をしたい。
180:デフォルトの名無しさん
12/05/09 12:04:19.21
>>179
VBSにそういう機能はありません。
そういう機能を持ったCOMを自作することで、VBSで目的を実現することは可能ですが
だったらCOM作るより普通にexe作った方が良いでしょう。
あとはAutoHotkeyというスクリプトツールだと、比較的簡単に目的のこと出来ますよ。
「起動したらBGでキー監視」はAHKのデフォルト機能で、起動するだけでやってくれるから、あとは
キー::Run, wscript.exe ~.vbs
って書けば、AHKが常駐してキーが押される度にVBS実行してくれる。
もちろんAHKの言語覚えて、VBS使わずに全ての処理をAHKにやらせてもいいし。
181:デフォルトの名無しさん
12/05/09 18:34:23.16
ありがとうございます。
早速、試してみます。
182:デフォルトの名無しさん
12/05/11 16:13:03.66
alt ctrl shiftならバックグラウンドでもsetintervalなどで監視できるよ