1 :
デフォルトの名無しさん :
2007/02/03(土) 17:49:47 素人丸出しお粗末で遅くてもいいので いますぐ使えるちょっぴり便利プログラムを作れ (例○○を自動処理してくれるプログラム)
ずるしてらくしてかれいに2げっとかしらかしら〜
3 :
Windows厨&rlo;wwwね死はCAM。すでXUNILチンアやや :2007/02/03(土) 17:54:41
2ch自動書き込みスクリプト・・・ はVBSなんかじゃなくちゃんとしたプログラムが既にあちこちに存在するか
TechNetのHey, Scripting Guy!でも読むとか
>>3 自動書きこみをする機能がそもそもまともじゃない
日経ソフトウェアだったかに乗ってたのですが 動きません 助けて KETA = inputbox("何文字のパスワードを作りますか?","パスワードを生成","8") If KETA < 1 Then MsgBox "文字数は0以上でなくてはなりません" End If PASS_WRD = "A B C D E F G H J K L M N P Q R S T U V W X Y Z " MOJISYU_A = MsgBox("アルファベットの小文字を使いますか?",vbYesNo) If MOJISYU_A = vbYes Then PASS_WRD = PASS_WRD + "a b c d e f g h i j k m n p q r s t u v w x y z " End If MOJISYU_B = MsgBox("数字を使いますか?",vbYesNo) If MOJISYU_B = vbYes Then PASS_WRD = PASS_WRD + "2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 " MOJISYU_C = MsgBox("記号を使いますか?",vbYesNo) If MOJISYU_C = vbYes Then '記号 PASS_WRD = PASS_WRD + "! # $ % & ? - _ ~ @" End If '指定された条件で配列を作成 PASS_STR = Split(PASS_WRD) MAX = Ubound(pass_str)
8 :
7 :2007/02/08(木) 22:08:56
続き '指定された桁数のパスワードを作成 For i=0 To KETA - 1 Randomize X = abs(Int((0 - MAX) * Rnd)) PASS = PASS + PASS_STR(X) Next InputBox "パスワードが完成しました","生成完了!",PASS
>7 どう動かないんだ。 エラーメッセージが出るならエラーメッセージを貼れ。
BASICって何でここまで読む気が起こらないんだろう
まぁ、COBOLの冗長さには勝てないがな 'VB For I = 1 To 10 Next *COBOL PERFORM VARYING I FROM 1 BY 1 UNTIL I <= 10 END-PERFORM
>12 間違えてる。UNTILならI>10だ
>>10 字下げが取れちゃってるのも一因ではないだろうか、この場合。
<job> <script language="vbscript" src="./computer.class"/> <script language="vbscript"> Option Explicit Const COMPUTERS = 3 Const DEFAULT_WAKEUP = 2 Dim objComputers() ReDim objComputers(COMPUTERS) Dim intNum, i, strHostnames For i = 0 To COMPUTERS Set objComputers(i) = New Computer Next objComputers(0).setComputer "xxxxxxxxxxxx", "chitose" objComputers(1).setComputer "yyyyyyyyyyyy", "tomoyo" objComputers(2).setComputer "zzzzzzzzzzzz", "ayanami" objComputers(3).setComputer "wwwwwwwwwwww", "maya" For i = 0 To COMPUTERS strHostnames = strHostnames & i & ":" & vbTab & objComputers(i).GetHostname & vbCrLf Next intNum = InputBox(strHostnames, "WakeOnLan", DEFAULT_WAKEUP) objComputers(intNum).Wakeup For i = 0 To COMPUTERS Set objComputers(i) = Nothing Next </script> </job>
16 :
computer.class :2007/06/03(日) 11:03:50
Option Explicit
Class Computer
Private pHostname
Private pMACAddr
Public Sub setComputer(strMACAddr, strHostname)
pMACAddr = strMACAddr
pHostname = strHostname
End Sub
Public Sub WakeUp
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "wol.exe " & pMACAddr
End Sub
Public Function GetHostname()
GetHostname = pHostname
End Function
End Class
これを同じフォルダに入れておく→
ttp://www.gammadyne.com/cmdline.htm#wol vbsもWOLもやってみると意外とできるもんだ。
VBSでダイアログを表示させることってできないものかな? 構造体は使えないはいろいろと細かいところで制約が多い。。
18 :
デフォルトの名無しさん :2007/06/27(水) 11:51:05
VBSについての質問です WINDOWSからSolarisにFTP接続してファイルを取得するVBスクリプト。 ・ /export/home/backup/mysql/の下にあるファイルを取得 ・ /export/home/backup/www/の下にあるファイルを取得 ・取得したいファイル名をリスト化、そのリストを読み込んで、 1つのファイルをGET.→FTP切断→FTP接続→ファイルGET→FTP切断の繰り返し ・取得したファイルはSolarisから削除 ・日付を管理。最新のを5つだけ残す。一番ファイルを削除 こういったVBSはどうつくればいいんでしょうか?
>>18 ここれは便利なスクリプトを作ってくれとお願いするスレじゃなくて、
自発的に自分が書いた物を晒すスレのような気がするんだが。
漏れの場合は、取得したいファイル名を変数にしてして、毎回
FTPスクリプトを生成して実行する方法にしてる。
ちなみにアカウント情報はcsvにしてるが平文で書いてるので
取り扱いに注意してる。PASVが使いたい場合はGNU版を
使う事。
どっちかっつーとWSHスレ向きジャネ?そのまま質問しても罵倒
されるだけだと思うけど。
20 :
デフォルトの名無しさん :2007/06/28(木) 09:04:40
漏れの場合は、取得したいファイル名を変数にしてして、毎回 FTPスクリプトを生成して実行する方法にしてる。 上司にも同じこと言われましたね、。 なんとなくイメージできても、いざ作るとなると難しくて… どう作ったらいいのかわからないですね。
>>20 じゃーまず、ここに取得したいファイル名が固定のFTPスクリプトを
生成するVBSを書いてみてよ。
22 :
デフォルトの名無しさん :2007/06/28(木) 10:19:50
open itsol01 i1125 i1125 get /export/home/backup/mysql/mysql_&YYYYMMDD&.tar.gz loop quit と書いたテキストファイルをコマンドプロンプトで実行したら、指定したファイルは取得できました。
何この糞スレ・・・ 低脳にスレ立てさせんなよ・・・
25 :
VBSって面白いのか? :2007/07/22(日) 23:29:16
みんな高度なプログラムかくね このくらいでいいんじゃね? ’びびらせるログオンメッセージ書き込むプログラム? msgb = InputBox("ビビらせるログオンメッセージ指定") If msg <> "" Then Set WshShell = WScript.CreateObject("WScript.Shell") Call WshShell.RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNoticeCaption", "ここにメッセージでも", "REG_SZ") Call WshShell.RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNoticeText", msgb, "REG_SZ") WshShell.Popup("終了") Else MsgBox("書き込みキャンセルしました") End If
26 :
VBSって面白いのか? :2007/07/22(日) 23:32:39
訂正 ×ここにメッセージでも ○メッセージ まあなんでもいいんだが・・。
27 :
VBSって面白いのか? :2007/07/22(日) 23:36:33
これ便利じゃねえなそれに遊び心だな。 誰かウイルススレでもしよう・・・・。
質問なんだけど
s = 1
test = Array("test")
Set xmlHttp = WScript.CreateObject("Msxml2.SSLHTTPS.3.0")
For i = 0 To s
xmlHttp.open "POST", "test", False
xmlhttp.setRequestHeader "Referer", "test"
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send "test="+test(i)+""
Next
で、
https://には対応できない ?
Set xmlHttp = WScript.CreateObject("Msxml2.SSLHTTPS.3.0")
を書き換えればいいのかな?解る方書き換え方おせーてください
For i = 0 To s
xmlHttp.open "POST", "
https://www.livly.com/reg/rekeep.php? ", False
xmlhttp.setRequestHeader "Referer", "
https://www.livly.com/reg/rekeep.php? "
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send "kid="+kid(i)+"&+pname="+pnames(i)+"&iname="+iname(i)+"&nname="+nname(i)+"&pprofile="+pprofile(i)+"&iprofile="+iprofile(i)+"&entry="+entry(i)+""
Next
29 :
名無し :2007/08/08(水) 20:23:43
無理でもない
CreatoShortcutで NumLock状態の1をショートカットキーに適用したいのですが Hotkey="Num 1" Hotkey="NumLock 1" どちらでもできません 直接作成は無理なのでしょうか?
俺もNumlockは悩んだ なんとかいうAPI使って実行ファイル作ったけど無理だった 敗北の想い出が蘇る
最終的にVBA使ったりするんだよな…… VBS単体だと操作の自動化は不便
こんばんは。 C#からVBSのFunction呼び出そうしてるんですが 複数の値を返すことができません。 教えてください。
34 :
デフォルトの名無しさん :2007/09/06(木) 20:54:08
C#側からvbsを走らせるときにC#側のFor文だと処理するたびに vbsが走るのでだめでした。 vbs自体が複数値を返す処理をするためにはどのようにすればよいでしょうか。 値は、Excelのセルからとります。
俺が考え付く方法は次の2つ。 1. そのVBScriptの内容をC#へ書き換える。 2. VBScriptをC#プログラム内でホストする。
36 :
デフォルトの名無しさん :2007/09/06(木) 22:13:43
>>35 は1は実行済みですけどVBSにも全く一緒のコードを書くことになって
かなり冗長的なコードになるんですよ。
2もしたが取り出すとき複数の値をとるほうほうが不明です。
配列を返せばいいのでは? それが無理なら、C#から戻り値を受け取るオブジェクトを渡すってのはどう。
38 :
デフォルトの名無しさん :2007/09/06(木) 22:33:48
>>37 配列を返すって考えましたけどVBScriptのリターン文ってありませんよね。
関数名 = 処理
↑こんな感じがリターン文なのかな。
そう。関数内では関数名と同名の変数が存在する。 型は関数の戻り値の型と同じ(と言ってもVBSは常にVariantだが)。 関数を抜けるときにその変数に入っていた内容が戻り値になる。 これはVB系一般で通用する文法。
40 :
デフォルトの名無しさん :2007/09/06(木) 23:14:36
なるほどね。けど、関数名と同名の変数が定義されてるって時点で 配列とか返せないと思うんですがいかがでしょう。
42 :
デフォルトの名無しさん :2007/09/07(金) 00:05:36
>>41 情報量が少ないから断定的な判断はできないんですよ。
>>40 Array関数で配列を作れる。
その戻り値を関数名の変数に代入すれば
配列を返す関数の出来上がり。
>>42 調べるのも大事なことだが、試すのだって大事なことだぞ
msgbox a()(2)
function a()
dim b()
redim b(10)
b(2)=100
a=b
end function
こんな感じで出来ない?
45 :
デフォルトの名無しさん :2007/09/07(金) 00:13:35
おおきにおおきに、明日試してみる。 しかし、型なしには驚いた・・・
BASICなめんな
型がない訳じゃなく実行時バインディングで表に出てこないだけ
48 :
デフォルトの名無しさん :2007/11/01(木) 17:26:59
JavaScriptなら<script src=a.js VBSなら<script src=a.vbs ですか?
>>48 ああ拡張子はなんでもいいが
typeなりlanguage書こうぜw
それとタグは閉じような
気になってしょうがないw
50 :
デフォルトの名無しさん :2007/11/02(金) 13:45:30
PPPOEをVBSで切断できないですかね? 2つプロバイダ登録してあって、ショートカットで無理やり接続はできたのですが、 なぜだか切断の時に1%くらいの確率で失敗します。 (slect case でやって、引数を保持しているのですが何故か極まれに間違えます) タスクトレイの接続の所では、何処に繋がっていても切断できますので、せめてこれが 呼び出せればSENDKEYSでなんとかなるんですが…
51 :
デフォルトの名無しさん :2007/11/02(金) 15:42:00
JavaScriptでの o = new Option(); をVBScriptに書き直すとどうなりますか?
52 :
デフォルトの名無しさん :2007/11/03(土) 01:48:36
↓デバッグおねがいします <form id="fm"> <input name="t1" value="てすと"> </form> <script language="VBScript"> Function bt_onClick() MsgBox Eval("t" & CStr(1) & ".value") End Function </script> <button name="bt"></button>
プリンタの管理ユーティリティにある自動電源ONオプションをタスク スケジューラで週一自動実行したいんですけど、VBSで可能でしょうか?
55 :
デフォルトの名無しさん :2007/11/18(日) 23:11:59
HTMLのVBSで <a href="javascript:f();void(0)"> というJavaScriptをVBSで書けますか?
MsgBox "<a href=""javascript:f();void(0)"">"
拡張子を.htaにしてみるとか
59 :
デフォルトの名無しさん :2007/11/26(月) 08:03:28
BASP21でダウンロードソフトを作ろうと思っているんですが、 FTPだとFTPサーバーの名前を知らないとアノニマスでも接続できませんよね? どうすれば良いのでしょうか?
>>59 たとえばスーパーに買い物に行きますよね
でもスーパーの住所を知らなければ買い物できませんよね?
どうすれば良いのでしょうか?
61 :
59です :2007/11/26(月) 20:59:22
Iriaとかのダウンロードソフトはどうしてるんでしょうか? HTTPからでもダウンロード可能なようですが、全くやり方が不明です。 勉強中の身でして、質問が多くなりますが、お願いいたします。 >60 そのスーパーの住所の調べ方を伝授してください お願い致します
プロトコルの勉強をしましょう…
>>61 そこらへんのダウンロードソフトはユーザにURLの入力を求めているだろ。
>>61 IPアドレスは32bitしかないんだから、総当たりで!
65 :
59です :2007/11/27(火) 08:04:28
皆さんご返信ありがとうございます
VBSでこのスレッドを落とす場合
.Connect("pc11.2ch.netのFTPサーバー", "ユーザー(anonymousでいける?)", "パス")
で繋いで
.GetFile("pc11.2ch.netのFTPサーバー/1170492587/*.*", "c:\dowsodata")
となると思いますが、
ここのFTPのサーバー名が解らないと何ともなりませんよね。
62>とりあえずWiki逝って来ます。金曜日の休みに本屋にの行きます!
63>FTPのURLでなくてもダウンできるので不思議なんです
64>そんなことやってたんですか!?
試しに
ftp://pc11.2ch.net/をIEでやってみたら 「ファイル名が正しくないか許可してないぞ!!」
と怒られました。
ギコナビとか、巷にあふれる2CHツールが許可もらってやっているように
思えませんので(失礼…)何かしら打開策があると思うのですが
>>65 ftpが許されてないからです。
httpなら許されてるから、まずはそこから。
>>65 > Connect("pc11.2ch.netのFTPサーバー", "ユーザー(anonymousでいける?)", "パス")
> で繋いで
> .GetFile("pc11.2ch.netのFTPサーバー/1170492587/*.*", "c:\dowsodata")
> となると思いますが、
いいえ違います
pc11.2ch.netのFTPサーバなんてありません
69 :
59です :2007/11/28(水) 08:57:51
すみません、質問を変えます! <a href="*.dat">download</a> を、VBSで書くとどうなりますか? (ダウンロードしますか?と言うダイアログが出ます) VBSで書いてる途中なのでできれば全部VBSで書きたいんです。 皆さんいろいろ教えていただいてありがとうございました FTPはファイル交換、DNSはネット接続の中間、HTTPはHTMLを見るため 位の感覚で覚えていましたので、どうやってファイル転送機能なしでファイル転送するんだろう? ドメイン(biglobe.ne.jp)の部分が同じなので探す方法があるのかと思い、質問しました。 興味が出ましたので、細かく調べようと思いますが、解らないところは「ネットワーク板」で 訊けばいいんですよね?
>>69 ネットワークの勉強ついでにVBSとかクライアントスクリプトも調べて来い
質問の意図が分からなさ過ぎる
きっと用語を正しく理解していない
> 興味が出ましたので、細かく調べようと思いますが、解らないところは「ネットワーク板」で
> 訊けばいいんですよね?
責任もてないので、「はいそうです」とは言わない
調べられなければ調べられるまで調べつくせ
71 :
59です :2007/11/28(水) 20:59:50
>70 すいません、知りたかったのはIriaなどのHPを丸ごとダウンロードしてくるソフトが どのようにダウンロードをしているのかを知りたかったんです。 よく考えたらこの命令は単純にアドレス指定してアクセスするだけですね、 ちょっとやってみます。
>>71 知らないのは罪では無い。
だが、知らないという事を盾にして、初歩的な事を人に聞きまくるのは迷惑。
>すいません、知りたかったのはIriaなどのHPを丸ごとダウンロードしてくるソフトが
こんな事は最早ネットワークすら関係無い。通信技術板で聞こう物なら、
即氏ねと言われてもおかしくない。
初歩的なhtmlを知っていてIriaを使っていれば、どういう仕組みで丸ごと
ダウンロードしているのか、一般的な知能を持っていればわかるはず。
まず人に聞くな。自分で考えろ。
待て、しかして希望せよ
>>72 html知っててもhttpの仕組みがわかるわけ無いだろ。
>>59 「XMLHTTP VBS」あたりでググればいくらでもサンプル出てくる。
でも、VBSでリストだけ作ってダウンローダーに渡すのがいろんな意味でおすすめ。
75 :
59です :2007/11/29(木) 07:20:59
>72 ありがとうございます、貴方のおっしゃっているように、私のやろうとしている事は ネットワークとはあまり関係がありませんね。 >74 XMLHTTPですね、ありがとうございます。 タグ辞典読んだり、「VBS ダウンロード」とか組み合わせてググっても それに対応出来そうな命令が全く出てこなかったんで、困っておりました。 これでやっと点が線で繋がりました!!
76 :
デフォルトの名無しさん :2007/11/30(金) 10:37:58
間違えてVB.NETのスレで聴いてしまったのですが、こちらでお聴きすべきでした。
WshShellオブジェクトでURLショートカットファイルを作成する際にファイル内容
に不足があることがわかりました。
例として、たとえばマイクロソフトのサイト
http://www.microsoft.com/japan/msdn/architecture/ などに対して作成すると、IEで作成した場合に作成される処の
[DOC_pagetools]
XMLUSERDATA__Size=・・・・・
XMLUSERDATA=・・・・・
USERDATAURL=・・・・・
という部分が作成されていませんでした。そしてこの部分がないと、クリック
して実行してもIEで表示できないことがわかりました。どうも実行に際して
不可欠の内容のようでした(これはユーザーの同定等を行っているのでしょうか)。
こうした部分をWshShellオブジェクトのCreateShortcutメソッドで作成する
ことは不可能でしょうか。可能とした場合はどのようにすればよいでしょうか?
なにとぞよろしくお願いします。
>>76 [InternetShortcut]しかないけど開けるよ?
ファイルに.urlつけてないとかじゃないの?
ドメインユーザーのSID(S-x-x-x....) から、ユーザーID(Domain\UserID)を知りたいんだけど、 ActiveDirectoryにどんな方法でアクセスすれば良いですか? ADSIを使うっぽいのですが、いまいちわかりません。
79 :
76 :2007/12/03(月) 23:26:26
>>77 ご指導ありがとうございます。
おっしゃってくださったことから、今もう一度やってみましたら確かに
今度は動作致しました!
昨日やったときはページが移動しなかったのですが、IE系のトラブルか何か
が重なっていたのかもしれません・・・、お手数おかけしてすみません。
ご指導ありがとうございました。
80 :
デフォルトの名無しさん :2007/12/08(土) 06:36:58
>>56 だめだ。それは結局JavaScriptを使っているから。
HTML内にVBSオンリーで同等の機能を実装してくれ。
>>80 え?
>>55 はJavaScriptをVBSで書けるかどうか聞いてるじゃん
>>81 VBSが分からないから日本語に着目して自己満足ですか。
はいはい、あなたは正しく理解し、適切な回答をなさいました。
キミにはたぶん質問者が知りたがっていることを回答するのは無理だね。
>>57 は漢字が間違ってるし。
>82 わざと誤字を扱うのがネラーの習わし
>>82 hrefでjavascript関数の後にvoid(0)って一体どんな意味か教えて
>>85 いや、void(0)単体の意味じゃなくて、「f()の後に」void(0)を置く意味が知りたいんだ
void(0)を付けないでブラウザのアドレスバーに打ち込んでみるとわかるよ
つけてもつけなくても変わらんよ
>>86 何を期待してるのかわからんが,
とりあえず「f()の後にvoid(0)を置く意味を知りたい」という要求の原因を教えてもらおうか
ああ、説明できないならもういいよ お疲れさん
とりあえずプログラム板もID付けて欲しいぜ・・・
void(0);だけじゃ何の効果も示さないみたいな f();は今のところ自端末じゃ何も設定されてなくて voidの()内に後でチェックコードでも書くとか? 今は何を作るか知られたくないから意味のないコードしか書いてないとか
360: 2007/06/16 11:58:31 ??? [sage]
みんな最後にvoid(0)やfocus()を付けるのはなんでだぜ?
361:ぼけなす 2007/06/16 12:12:44 P+YI6MXb
>>360 Location Bar 本来の機能が邪魔することがあるから.
全体を function として記述してもうまくいくようだ.
だからアドレスバーに打ち込んでみるとわかるって言ったのに
条件が揃わないとわからないんじゃね
Excelの2003と2007がインストールされた環境で、以下のVBSを実行すると2007が起動します。 2003を起動するには、どう書けばいいんでしょう? Set ExcelObj = CreateObject("Excel.Application") ExcelObj.WorkBooks.Add() ExcelObj.Visible = True
それってWindowsの設定の問題じゃないの? xlsファイルを2003のExcelで動作するように設定すれば動くんじゃない?
>>97 すいません。説明不足でした。
常に2003を起動したいわけではなく、2003と2007を必要に応じて使い分けたいのです。
そういう区別はVBSでは無理なんでしょうか?
あと、regmonでVBS実行中に参照されるレジストリを調べてみたところ、どうやら
HKCR\Applications\excel.exeを見て、起動するアプリを決定しているようでした。
つまり、
>>96 のような書き方では最後にインストールしたバージョンしか起動できないのです。
>>99 ありがとうございます。さっそく調べてみたところ、
2000 → 9
2002 → 10
2003 → 11
2007 → 12
のように対応していることがわかりました。そこでプログラムを
Set ExcelObj = CreateObject("Excel.Application.11")
と修正してみたのですが、これではまだ2007が起動してしまいます。
もう少しオブジェクトの扱い方を調べる必要があるようです。
いっその事、キーボードマクロで
>>101 MSOライブラリを複数登録するんでしょうか?
別バージョンのMicrosoft Office Object Library、Microsoft Excel Object Libraryを参照設定から
追加しようとしたのですが無視されてしまいました。
エラーも出ず、追加も出来ず、よくわかりません。
>>102 excel /regserverを実行してみたところ、Officeのインストーラーが起動してシステムの設定をすべて書き換え、
確かにデフォルトのアプリケーションもオブジェクトも切り替わりました。
が、この方法ではいちいちインストーラーが起動するということで、見栄えがよくありませんし、
時間もかかりすぎてしまいます。元に戻す手間もありますし。
>>103 最終的にはウィンドウを出さずに裏でこっそり処理をさせたいので、(
>>96 のプログラムの3行目が
存在しないイメージです) 単純にショートカットからExcelを起動して最小化、みたいな処理は、
できれば避けたいのです。後出しですみません。
もう少しヒントを、よろしくお願いします。
いや、無理でしょ
「2003に致命的な問題が見つかりますた」と言って強引に2003をアンインストールして2007のみの環境にしる
光の速さでキー入力して絵画をキャンセル
あ、既出でやんの。 (office2000以降)CLSIDが共通だって事は、 オートメーションでバージョンを指定することは出来ない ってことじゃねえの?
ディレクトリからコマンダー権限でエクシア起動!
なるほど、希望バージョンのExcel.exeを先に起動しておいてからGetObjectすればよいのかな?
希望バージョンではない方が既に起動されていても大丈夫?
何をアクティブにして何をさせたいか ちょっとした選択ミスがすべてを台無しにする事もある 目的と干渉によるけどやりたいなら自己責任で
114 :
デフォルトの名無しさん :2008/02/11(月) 06:52:56
突然質問ですが… プログラムに汎用性を持たせるために、一部の変数を外部ファイル化したんですが、 どうすればよいのでしょうか? 実行専用ファイルを作って、その中で変数専用ファイルとメインファイルをPublic変数で繋いで 走らせる事も考えたのですが、できますでしょうか? って言うかVBSってinclude無いんですか?
116 :
デフォルトの名無しさん :2008/02/11(月) 23:26:24
ini ファイルみたなのをつくって、フツーにopenして読み込めばいいじゃん。
117 :
壱壱四 :2008/02/12(火) 07:24:04
115-116 ありがとうございました。 あとはググって調べます
EventQuery.vbs の使い方で教えてください。 というか、挙動不審なんです。 cscript eventquery.vbs /V /FI "ID EQ 564 AND DATETIME GE 03/06/08,12:00:00AM AND USER NE NT AUTHORITY\SYSTEM" /FO CSV /L ↑こういうのを書いたんですが、フィルタ条件のエラーになります。 上記の3つの条件を個別に単発で書けばそれぞれ ちゃんと動くんですが 3つまとめるとダメみたいで・・・。 そういう仕様なんでしょうか? 何か書き方にクセがあるんでしょうか?
んなVBSは知らんけどパラメータがtasklistコマンドくせぇな
120 :
デフォルトの名無しさん :2008/04/08(火) 00:03:03
Excelで、セルに入力された文字列のうち、ある部分だけの色を変える、という処理をVBSで行いたいです。 たとえば「A1」のセルに「VBSで便利なプログラムを作れスレ」と入力してあった場合、 そのうちの『プログラム』だけをフォント赤色に変更する、というような感じです。 セル内の文字列すべてだとできるのですが、セル内の文字列の一部分だけを変更する方法を思いつきません。 ExcelのVBAだとCharactersオブジェクトが使えてたけど、これはVBSでは使えないのでしょうか? (←うまいきませんでした) なにかいいアイデアあったら、誰か教えてください・・・
エラー処理してないんで適当に。 偉い人添削ぷりーず Option explicit Const TARGET_WORD = "プログラム" Dim XL, XLBook, XLRange Set XL = CreateObject("Excel.Application") Set XLBook = XL.workbooks.open("C:\Documents and Settings\デフォルトの名無しさん\デスクトップ\book1.xls") Set XLRange = XLBook.sheets(1).Range("A1") Dim TargetChr Set TargetChr = XLRange.characters(Instr(XLRange.value, TARGET_WORD),len(TARGET_WORD)) If Instr(XLRange.value, TARGET_WORD) > 0 then TargetChr.Font.ColorIndex = 3 End if XLBook.save XLBook.close Set XLBook = nothing XL.quit
よーし、素人丸出しで質問させてくだされ! とあるCSVファイルがあります。エクセルで展開すると60項目のセルがあります。 その項目で不要項目があるので、消す作業を自動で処理することを考えてます。 ******************************************************* Set objEXCEL = CreateObject("Excel.Application") Set objBOOK = objEXCEL.Workbooks.open("指定場所と指定.CSV") objEXCEL .Visible = true myExcel.Range("B:D").Select myExcel.Selection.Delete myExcel.Cells(1,1).Select ******************************************************** サンプルやエクセルマクロ記録などしてそれらを参考にやってみました。 対象CSVは相対パスで指定してあります。 でも、相対パス指定した行でERRになります。 CSVを相対パスで指定して不要項目を削除するには、上記スクリプトを どのように変更すればいいでしょうか?
そこは絶対パスで指定できるように考えよう
>>123 レスありがとう。
結局、相対パスはできないということですね。
>>121 ありがとう。書いてもらったのを参考にして思う通りのものができました。
CharactersオブジェクトのStartとLengthの指定の仕方をまちがってたようです。
任意のフォルダを選択すると、コマンドプロンプトのTREEコマンドみたいな枝?罫線+選択フォルダ以下すべてのサブフォルダ名 OR ファイル名を
Excelに書き出す、というのを作ってたんですが、その出力内容のうち、サブフォルダ名の部分だけを色変えたかったのです。
>>122 相対パスとるより絶対パスとるほうが簡単だと思うんだけど・・・?
Excel使うの前提のようなので、こういうのはどうかな。
*******************************************************
Option Explicit
Dim strFilePath
strFilePath = GetFilePathDialog()
msgbox strFilePath
'--------------------------------
' 選択したファイルのパスを取得
'--------------------------------
Function GetFilePathDialog()
Dim objExcel
Dim strFile
Set objExcel = CreateObject("Excel.Application")
strFile = objExcel.GetSaveAsFilename("", "CSV(カンマ区切り) (*.csv),*.csv")
If strFile = False Then Exit Function
GetFilePathDialog = strFile
Set objExcel = Nothing
End Function
*******************************************************
127 :
122 :2008/04/09(水) 13:06:21
>>126 必ず相対パスでないとだめってわけではないのだけど。
クライアントで取り込んだCSVを編集する為なのね。
まあ、やり方で回避できるのだけど。。。
このコードも活用させていただきますです。
ありがとう。
>>122 パスがわからないのならドラッグ&ドロップすればいいじゃない、牛丼がないのなら豚丼をたべればいいじゃない。
>>126 そのファンクションいただき。でもエクセルObjectがないと使えないのかー。
GetOpenFileNameとGetSaveFileNameでぐぐれば、タブンさんぷるでてくるぞ。 APIだからエクセルいらない。
>>128 通常Webから配布しているCSVを加工する為に、VBSを
クライアント配布で色々考えてた。
>>126 氏の指摘通りエクセル操作が前提で。
>パスがわからないのならドラッグ&ドロップすればいいじゃない、
それも、そうだと思った強風、豪雨の午後でした orz
>牛丼がないのなら豚丼をたべればいいじゃない。
メタボはいかん。
こんにちは。メッセージボックスの[OK]ボタンが押されるのを待たずに次の処理を 実行させたいときはどうするのでしょうか? [OK]ボタンが押されなくても複数のメッセージボックス(?)を表示させたいのですが …
132 :
デフォルトの名無しさん :2008/04/20(日) 23:39:08
>>131 2箇所に同じ質問書くと嫌われるよ。マナー違反。今後気をつけな。
3箇所ならOK。
ジミーペイジもそんな事言ってたな
初心者なんですけどいいですか? VBSで二進法の数を十進法にして表示させるプログラムを教えてください。
137 :
デフォルトの名無しさん :2008/05/01(木) 23:48:07
2進数の仕組みがわかってりゃ簡単だよ。 手計算するのと同じことをVBにやらせればいいだけ。 頭から1文字ずつ取り出して、×2していくだけだろ。 msgbox unko("10101101") Function unko(ByVal str) ret = 0 For i = 1 To Len(str) ret = ret * 2 + CInt(Mid(str, i, 1)) Next unko = ret End Function
それ計算違うw
・・・と思ってら合ってるっぽいスマソ
助かりました〜 ありがとうございます。
141 :
デフォルトの名無しさん :2008/05/03(土) 11:12:12
なんかClntの所でエラー表示が出るんですが(^^;
143 :
たわし :2008/05/03(土) 13:27:56
発投稿っす。どうぞよろしく。 二進法の数を十進法にして表示させるプログラムもう少し簡単にできませんか
ゆとりアラーム
145 :
たわし :2008/05/03(土) 13:36:42
そこを何とかお願いいたします
137よりどう簡単にするんだ
147 :
デフォルトの名無しさん :2008/05/03(土) 21:46:23
142>ありがとうございます しかしValでも型が一致しませんとでるんですが
>>147 お前さんがとてつもない馬鹿で何一つ知らない情報弱者だから
こちらは超能力者にならざるを得ないのをとりあえず理解してくれ。
それを前提とした上で「パソコンでマウスを動かそうとした」とこから
「Valでも型が一致しませんとでる」までの経緯を
お前さんが認識してる「馬鹿」に分からせるように説明しろ。
149 :
デフォルトの名無しさん :2008/05/04(日) 01:47:23
パソコン上でマウスを動かそうとし、動かしメモ帳を起動して137のプログラムをまずメモ帳に入力し、Clntをそれ以外いじらずValに変更した後、.vbsで保存して、実行しようとするとエラー表示されます
数値で渡してるなw
>>149 ValをCIntに戻して再実行してみろ。
CIntに戻したときのエラー表示の中で「文字が正しくありません。」
という文言があるのなら、全角スペースが原因。
行の先頭のスペースを全部削除してから再実行してみろ。動くはず。
>>142 CIntをValに直してもよけいに動かなくなるだけ。
VBでは動いても、VBSでは動かん。
>>150 1行目の10101101を文字列ではなく数値で渡しているって想定か?
別に数値で渡しても、勝手に型変換されて動くよ。
>>151 数値で桁が多すぎると(浮動少数表現に変わるから?)エラーでるよ
153 :
デフォルトの名無しさん :2008/05/04(日) 12:33:44
やっぱりうまくいきません 型が一致しません"Clnt"とでます パソコンが2000だからとかそういうわけでしょうか あと素人丸だしですみませんが、一行目の10101101ってどういう意味ですか?
もうそのネタ飽きた
155 :
デフォルトの名無しさん :2008/05/04(日) 16:39:54
↑ そもそも「二進法」の意味がわかっとらんだろ?
156 :
デフォルトの名無しさん :2008/05/04(日) 17:22:21
ところが2歩進んだと思ってたのに気が付いたら下がっていたという。
157 :
デフォルトの名無しさん :2008/05/04(日) 19:25:19
2進数はわかってますが
>>152 すまんが、前提として10101101をそのままとしていた。
確かに桁が増えたらエラーになる。
16桁か17桁くらいが区切りのはず。
ちなみに浮動少数表現ではなく、対数表現な。
>>153 指摘が間違ってた。
いいか、Clntが間違いだ。CIntだ。
2文字目は小文字のL(エル)ではなく、大文字のI(アイ)だ。
ついでにいうと、二進法で表現した数値を二進数と言うんだ。
159 :
デフォルトの名無しさん :2008/05/05(月) 03:45:40
この会話・・・ぜったい2進数がわかってないな。
シュールストレミングうめえ
161 :
デフォルトの名無しさん :2008/05/05(月) 17:06:00
すいませんXPでやったらできました そこで入力した二進数を十進数に変えるプログラムはどうやるんですか?
二進数も十進数も見た目が違うだけで中味は同じ だから変換は必要ない
163 :
136 :2008/05/05(月) 17:27:22
なんか変な流れ作っちゃってすまん
というか
>>161 なぜそこに戻る?
164 :
デフォルトの名無しさん :2008/05/05(月) 17:39:30
inputboxをどこにいれりゃいいのかわかりませn
165 :
デフォルトの名無しさん :2008/05/06(火) 12:29:27
おまい、ぜったいぜったい、ぜぇ〜〜ったい2進数がわかってないだろ。
おまいら暇だな〜 モレモナ〜w
167 :
デフォルトの名無しさん :2008/05/06(火) 15:42:50
vbsで16進数を表示。たとえば msgbox &hFE とすると、結果は 254 と表示されます。 ほんとは FE のはずです。 こういうバグがあるから気をつけたほうがいいよ。
それはバグ・・・・とは思えないのだが。本来の仕様と違うとか?
170 :
デフォルトの名無しさん :2008/05/06(火) 17:59:41
意味わからん FEって表示したいのなら msgbox "FE" って書きゃいいじゃん。 自分で &h つけておいて、何言ってんだろ? msgbox hex(&hfe) でもいいけど
171 :
デフォルトの名無しさん :2008/05/06(火) 18:31:12
数値の&HFE と 文字列の"FE" の違いすらわからんヤツがおるのか。
●6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
http://system-trading.jp/news/index.php?cID=3 [シストレFXグランプリとは]
クリック証券が提供するFXのデモ取引環境を利用して、システムトレードにチャレンジできるFX取引のグランプリです。
お客様ご自身で作成したシステムトレードの機能を評価する「シストレソフト部門」とトレード収益を競う「トレード部門」の2部門構成となっております。
●5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
デモトレードの優勝者には賞金三百万円がプレゼントされます。
▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
●
http://www.fx-gp.com/about/ ▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
コピペ君って馬鹿だな、まで読んだ。
InputBox関数使って、入力値を得たいんですが、 255バイト以上の入力値って無視されるのでしょうか? 解決策があれば教えてください。。 InputText = InputBox("文字列を入力してください") Dim Fs Set Fs=CreateObject("Scripting.FileSystemObject") Set newFile = Fs.CreateTextFile("0000test0000.txt",True) newFile.WriteLine(InputText)
ユニコードで254文字+CR+LFの、最大値を超えています。
177 :
デフォルトの名無しさん :2008/06/17(火) 22:19:12
VBScriptを使って、HTTPステータスコードを取得する方法を探しています。 ある任意のWeb画面に対してスクリプトでリクエストを行い、HTTPステータスコード(200 ok 等)を 取得する方法はありますでしょうか。 どなたかご存知の方がいらっしゃいましたら、ご教授下さい。
すいません。スレ違いだった為、WSHのスレに移します。
vbsで、フロッピーのフォーマットを確認なしで実行 する命令ありますか?A:\固定で。
VBSにはファイルにアクセスする命令すらありませんよ
それを言うならC言語にもファイルにアクセスする命令は無いな
ここまで便利そうなコードが殆どない件・・・
>>183 が便利そうなコードを書きまくるそうです><
とりあえずExcelAddinをインスコするコードとかlnk右クリックでリンク先ディレクトリ表示とか あるけど需要あるか?
test1.bin test2.bin test3.bin これらファイルを選択状態にして、VBSファイルにD&Dすると、 ファイル名順にソートして、1つのファイルに結合するには、どうしたら良いのでしょうか? 1つのファイルを、指定サイズに自動分割するVBSはできたのですが、 その逆のことができるVBSファイルを作りたい。。。 ADODB.Recordset ADODB.stream あたりを使えば可能?
copy /b
CIM_DataFileクラスを用いて、ファイルの各種情報を取得したいのですが、 「説明」のプロパティを取得するときに指定するプロパティ名が分かりません。 具体的には、例えばソリティア(C:\WINDOWS\system32\sol.exe)を 右クリックして表示されるプロパティの「バージョン情報」タブの2行目に 「説明:Solitaire Game Applet」と表示されますが、この値を取得したいのです。 ファイルバージョンなどは、「Version」プロパティで取得できております。 ご存知の方、ご教示お願い致します。
189です。 カキコするところ間違えたみたいなので、移動します。スミマセン。
>>186-187 作ってみた。
sdir = "C:\temp\" '出力先フォルダ
soutfb = "output.bin" '出力ファイル名
set osh = createobject("wscript.shell") 'シェルオブジェクト
set ofs = createobject("scripting.filesystemobject") 'ファイルオブジェクト
set oarg = wscript.arguments '引数オブジェクト
stmpf1 = "temp1.txt" '一時ファイル
stmpf2 = "temp2.txt" '一時ファイル
'ドラッグ&ドロップしたファイル名を一時ファイルに格納
set out = ofs.createtextfile(sdir & stmpf1, true)
for each s in oarg
out.writeline s
next
out.close
(つづき) 'ファイル名のリストをソートして一時ファイルに格納 osh.run "cmd /c sort " & (sdir & stmpf1) & " > " & (sdir & stmpf2), 0, true set oin = ofs.opentextfile(sdir & stmpf2) s = oin.readline 'バイナリファイルのコピー ofs.copyfile s, (sdir & soutfb) do until oin.atendofstream s = oin.readline osh.run "cmd /c copy /b " & (sdir & soutfb) & "+" & s & " " & (sdir & soutfb), 0, true loop oin.close '一時ファイルの消去 ofs.deletefile sdir & stmpf1 ofs.deletefile sdir & stmpf2 msgbox "OK" ↑以上、実行時は行頭の空白を半角に。
copyは性能的にしょうがないかもしれんがsortぐらい自前でやれよw
VBSにて、SNMP情報の取得を考えてるんですが、 wsnmp32.dll を利用することはできないんでしょうか? dynwrap.dll というラッパー?も使えないのでしょうか
set shell32 = createobject("shell.application") set fso = createobject("scripting.filesystemobject") function recyclebin(pathname) > path = fso.getparentfoldername(pathname) set there = shell32.namespace(path) set submenus = there.items.item(fso.getfilename(pathname)).verbs I = 0 for each method in submenus if strcomp(method, "削除(&D)") = 0 then submenus.item(I).doit() end if I = I + 1 next end function recyclebin wscript.arguments(0) ファイルやフォルダをドラッグアンドドロップすると、 ごみ箱に移すスクリプト。deletefile とかは 永遠に消えちゃうので不安だ...。
すまん、> は、なし。
それ、ごみ箱のショートカットと比べてどう便利なの?
ファイルをドラッグアンドドロップていうのは サンプル動作のためで、 関数をスクリプト内で deletefile の代わりに使います。
199 :
デフォルトの名無しさん :2008/09/16(火) 20:29:18
200 :
デフォルトの名無しさん :2008/10/05(日) 15:56:24
VBScriptとかJScriptで地味にWSHのプログラム書いてきたのに・・ IronPtythonなんてどうでもいい。 ていうことでVBScriptやJScriptを開発する統合環境みたいなツールってないの? 秀丸で書いてるんだけど、文法チェックや小文字大文字変換で不便でしょうがないんだけど。
そんな愚痴をこのスレで言う理由は・・・つまり VBSで作れと?
202 :
デフォルトの名無しさん :2008/10/05(日) 18:25:17
うん。昔からのVBSやJSユーザを生き伸ばすためにも言語拡張すりゃいいのにとおもって。
一応残るだろうけどVBSはもう進化しないでしょ。 同系としてVBAは今のところ代わりが無いから多少変わるかもしれんが。 WSHは見捨てられた子・・・ JScriptつーかJavaScriptならEclipseで使えると思うけど、それじゃダメ?だよね(w
204 :
デフォルトの名無しさん :2008/10/05(日) 20:01:20
いや。わては、WSHとして使いたいんや。 でも、VisualWebDeveloperExpressEditionにWSH用のテンプレートがあるみたいだ。 インスコしよっと。
俺はサクラエディタでしこしこ書いとるわ。 >でも、VisualWebDeveloperExpressEditionにWSH用のテンプレートがあるみたいだ。 そんなもんがあるんか。そのうち入れてみよっと。
206 :
デフォルトの名無しさん :2008/10/06(月) 05:31:22
WebDevelopper
207 :
デフォルトの名無しさん :2008/10/23(木) 19:41:52
a.vbsで定義したFunctionをb.vbsで使いたいが、 どうやったらいい?
aとかbって何?a.vbsとb.vbsってこと? つWindows スクリプト ファイル (.wsf)
209 :
208 :2008/10/23(木) 19:58:58
レスしたら
>>207 の意味判ったw
wsfファイルを作ってvbsファイルをインクルードしたらいいよ。
もしくはスクリプトファイルを読み込んでExecuteGlobalするか。
210 :
デフォルトの名無しさん :2008/12/11(木) 03:39:01
テーブルから14桁で取得した日付(例:20081210140059)に、 +1秒した日付(20081210140100)を取得するにはどうしたらいいですか? windowsアクセスログの履歴がデータとして格納されているテーブルから最新利用履歴日付を取得し、 そこから1秒後の日付でwindowsアクセスログを再検索したいのです。
取得するじゃなくて自分で計算すればいいんじゃね?
212 :
デフォルトの名無しさん :2008/12/12(金) 21:44:05
>>211 レスありがとうございます。
秒計算のできる関数を発見したので、試してみます!
213 :
デフォルトの名無しさん :2008/12/13(土) 22:10:34
VBSのことでお助け願いたいのですが…どなたかお願いします!
214 :
デフォルトの名無しさん :2008/12/13(土) 22:22:50
用件書かないやつなんか知らんわ
215 :
デフォルトの名無しさん :2008/12/15(月) 23:48:05
助けて下さい。 25個のエクスプローラを起動させるようにプログラミングしたものが あるのですが、3の倍数のエクスプローラーが起動したときのみに ツールバーを表示させるようにしたいのですが どのように、命令すればいいのでしょうか・・・。
>>215 助けて下さい。
25本のチンポを勃起させるようにプログラミングしたものが
あるのですが、3の倍数のチンポが勃起したときのみに
包茎を表示させるようにしたいのですが
どのように、命令すればいいのでしょうか・・・。
ってくらいいみふ
>>215 たとえば 26475
この各桁を足すと 2+6+4+7+5 = 24
さらに各桁を足す 2+4 = 6
この値 6 が 3 の倍数ならば
26475 は 3 で割り切れる。
219 :
デフォルトの名無しさん :2008/12/16(火) 10:08:16
ほほぅ
すいません ど素人なんですがよかったら教えてください CreateObject("WScript.Shell").Run で実行したバッチファイルを停止するスクリプトってどう書くんでしょうか?
>>220 ぱっと思いついたのがそのDOS窓掴んで
sendkeyで^C→Yを送るくらい
もっと賢くてスマートなのは他の有識者に任せる
222 :
デフォルトの名無しさん :2009/01/29(木) 14:36:12
Dim fileXML, objXML Dim node, item, mesg fileXML = "35640864.xml" Set objXML = WScript.CreateObject("MSXML.DOMDocument") objXML.load(fileXML) For Each node In objXML.getElementsByTagName("Message") mesg = ""& id = node.getAttribute("SessionID") For Each item In node.childNodes If mesg <> "" Then mesg = mesg & "," End If mesg = mesg & item.nodeName & ":" & item.firstChild.nodeValue Next WScript.Echo mesg Next XMLの子ノードが;;表示されない・・・ だ・だれか・・・
>>220 そのバッチファイルのタイトルをtitleコマンドで適当に一意なものに変更しておいて
一致するプロセス取得してkillすればいいんじゃね?
>>222 表示できたかな?
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Message SessionID="0001">
<Icon>情報</Icon>
<Text>情報メッセージ</Text>
</Message>
<Message SessionID="0002">
<Icon>警告</Icon>
<Text>警告メッセージ</Text>
<Param>パラ1</Param>
<Param>パラ2</Param>
</Message>
</root>
BASP21はSMTP/POP3サーバ、MAPIはExchangeサーバに使うものだよ
IEでリアルタイムにURLを取得するVBSを書いています 流れはIEが起動してないとき実行すると”IEが表示されていません”と メッセージを出し終了 IEが起動しているとき実行するとバックグラウンドで 10秒ごとのWebページのURLを取得しIEを終了させると今まで取得したURLを メッセージで表示し終了 こんな感じで書いたんですが "IEを終了させると今まで取得したURLを メッセージで表示し終了" この部分がうまく書けません。 具体的にはIEが終了するとオブジェクトが空になるはずなのでその辺をついて わざとエラーを起こしエラー番号を取得しそのエラーだったら終了 させるような感じで書いたんですがちゃんと動作してくれません ご教授お願いします
コードです Dim object1, object2, objectie, ieurl, loopflag, hako loopflag = 0 Set object1 =CreateObject("Shell.Application") set object2 = object1.Windows() do While loopflag = 0 for each objectie in object2 hako=objectie.LocationURL ieurl = ieurl & hako & vbCrLf hako="" next wscript.sleep(10000) on error resume next if objectie.LocationURL="" end if if err.number=424 then exit do end if msgbox ieurl loop If hako = "" Then MsgBox "インターネットエクスプローラーが開いてないか、閉じました。" If ieurl <> "" Then MsgBox ieurl End If End If
229 :
227 :2009/02/15(日) 15:22:14
事故解決しました
VBscriptでiTunesをアクティブにしたあとCtrl+Alt+5、Ctrl+Fと 入力させフルスクリーンにしたいのですが、アクティブに なったあとの入力を受け付けないようなのです。 なぜきちんと動かないのかお分かりになるかたいらっしゃいませんか? 以下スクリプトです。 dim objShell Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "iTunes.exe" WScript.Sleep 10000 objShell.AppActivate "iTunes" WScript.Sleep 1000 objShell.SendKeys "^(%5)" WScript.Sleep 1000 objShell.SendKeys "^f"
EXCEL VBA みたいにステップインできるソフトってない?
コントロールパネル→ネットワーク接続の「ワイヤレスネットワーク接続」を右クリックして「修復」 これをVBSで実行できますか?
ipconfig /renew
>>230 私もこのような現象がありました。
VBScriptでキーを送るのと、
物理キーボードでキーを送るのは、
別物として扱われる事があるのでしょうか?
vbsの管理者実行ってできるんかな? インスコフォルダ削除のスクリプトとかをVistaで実行すると、 アクセス拒否されるじゃん? あぁゅぅのって、管理者実行でアクセス出来ると思うんだけど・・・ 分かるヤツいない?
Vista の UAC の話なら set Shell = CreateObject("Shell.Application") Shell.ShellExecute WScript.FullName, "MyScript.vbs", null, "RunAs" のように ShellExecute に RunAS パラメタを付ければ管理者権限で実行できるらしい 上の例は一般権限のスクリプトから外部の別のスクリプトを管理者権限で呼び出す例だが WTL のセットアップスクリプトに、フラグ制御で自分自身のスクリプトを再度管理者権限で呼び出したり、 UACの判定とかのやり方が入ってるから詳しくはそちらを見てくれ
おぉw レスサンクス!(・∀・) でも、またエラーでたな・・・ 二個くらい出てきて、一個目がコレ↓↓ ━━━━━━━━━━━━━━━━━━━━━━━━ スクリプト: C\Users\*****\Desktop\\TEST.vbs 行: 14 文字: 1 エラー: 書き込みできません。 コード: 800A0046 ソース: Microsoft VBScript 実行時エラー ━━━━━━━━━━━━━━━━━━━━━━━━ 二個目が↓↓ ━━━━━━━━━━━━━━━━━━━━━━━━ スクリプト ファイル"C\Windows\system32\My Script.vbs" が見つかりません。 ━━━━━━━━━━━━━━━━━━━━━━━━ 実行環境はWindowsVista HomePremium テストでiTunesのフォルダを指定してやってみたが何故かエラー レス↓ソースでし ソースに問題があったら指摘してくれ
以下ソース↓↓ ━━━━━━━━━━━━━━━━━━━━━━━━ set Shell = CreateObject("Shell.Application") Shell.ShellExecute WScript.FullName, "MyScript.vbs", null, "RunAs" Dim objFileSys Dim strDeletePath Set objFileSys = CreateObject("Scripting.FileSystemObject") strDeletePath = "C:\Program Files\iTunes" objFileSys.DeleteFolder strDeletePath set objFileSys = Nothing ━━━━━━━━━━━━━━━━━━━━━━━━━ 長文失礼..........。
えー、MyScript.vbsは単なる例なので当然実行はできない あえて全部書くなら適当だけどこんな感じ Dim bElevated bElevated = False If WScript.Arguments.length >= 1 Then If WScript.Arguments.Item(0) = "/elevated" Then bElevated = true End If End If set Shell = CreateObject("Shell.Application") If Not bElevated And Shell.IsRestricted("System", "EnableLUA") Then Shell.ShellExecute WScript.FullName, """" + WScript.ScriptFullName + """" + " /elevated", null, "RunAs" WScript.Quit(0) End If Dim objFileSys Dim strDeletePath Set objFileSys = CreateObject("Scripting.FileSystemObject") strDeletePath = "C:\Program Files\iTunes" objFileSys.DeleteFolder strDeletePath set objFileSys = Nothing
240 :
デフォルトの名無しさん :2009/05/13(水) 21:53:41
age
お、一個エラー消えたヽ(・∀・ )ノ まだ ━━━━━━━━━━━━━━━━━━━━━━━━ スクリプト: C\Users\*****\Desktop\\TEST.vbs 行: 18 文字: 1 エラー: 書き込みできません。 コード: 800A0046 ソース: Microsoft VBScript 実行時エラー ━━━━━━━━━━━━━━━━━━━━━━━━ のエラーが残ってまうな・・・;; んー、このソースに使ってるスクリプトとかってどこで勉強できる? URLor本トヵあったらそっちも覗いててみたいんだけど・・ ご指摘感謝感謝(´;ω;`人)
800A0046 ってのはアクセス権限のエラーなので、既にスクリプトの問題では ないような気がする 最初、アンインストール時に残ったゴミでも削除するのかと思ったんだけど まさかアンイントールせずにフォルダをいきなり削除しようとしてるわけではないよね C:\Program Files\iTunes にサービスなどのプログラムがあってまだ使われているなら権限の問題とは 関係なくフォルダの削除は無理だと思うけど
ダメというか無理やりのファイル削除は、レジストリや作業ファイルのゴミが 残る可能性が高い レジストリや作業ファイルのゴミがあると同じアプリを二度とインストールできなくなったり 最悪OSが不安定になったりするの普通やるものではない そもそも何故正式な方法でアンインストールしないの?
やっぱそうかー;;
OS犠牲にしてまではしたくないな・・・
デスクトップにダイアログ常時表示させといて、選択した必要ないファイル・ソフトの削除を
チャチャッ♪っと済ませられるようにしたいなぁとか、他にも活用できそうだしねー・w・
http://www.whitire.com/vbs/tips0113.html 一応、知恵の糧になるようなものをうpってみる
レジストリのゴミ削除できるかなぁーって(ノ∀`*)
2つのフォルダを比較して 差分ファイルを指定フォルダにコピーすることはvbsで可能?
>>246 vbs自体にハッシュ比較の機能がないから無理
同じ名前、サイズ、タイムスタンプくらいの判定でいいなら当然可能
>>247 さすがにスクリプトでハッシュ比較すると
処理遅いだろうからそれで十分です
ありがとう、今から作ってみます
一度は全部読まんとハッシュも出ないから、全比較でいいんじゃね? 比較するにしてもfcとか使ったほうが早いけど。
VBSからIEを起動して、VBSでIE内のボタン押下処理した後、 「セキュリティで保護されていない接続へリダイレクトされようとしています。 現在のサイトへ送信中の情報は、セキュリティ保護されていないサイトへ再送信される可能性があります。続行しますか?」 っていうダイアログが表示されるのですが、このダイアログの「はい」のボタンを押下するには、VBSではどのようにすればいいのでしょうか?
処理に時間がかかる場合で プログレスバー表示的なことが出来ればいいのだけど みんなはどうしてる? IEを使う方法はわかりにくいし
IEが嫌ならコンソールに出力でもしとけよ。
しとけよじぇねーだろ! したらいいんじゃないですか!だろw
じぇ
。 || ヾ(o゚ω゚o)ノ゙ プニプニ!プニプニ! || ヾ(o゚ω゚o)ノ゙ 他板から乱入だ!プニプニ! || ヾ(o゚ω゚o)ノ゙ プニプニ!プニプニ! || O
>>250 キー送信でAltとかTabとかSpaceとか送信して押せないかね。
>>251 HTAでプログレスバー作るのは?
IE(HTML)でやるよりソレっぽく仕上がるけど。
なんか完全に過疎っているな。 最近、業務での単純作業をvbsで作りこんでみて、使い勝手いいと気づいたんだが。 てか、いつもメモ帳で作っているだが、補完機能とかある軽量の開発環境ツールあったら教えて。
補完機能なんて使うほどのものじゃないからなぁ。 VisualStudioが一応対応してるんじゃあないか? 基本的にはVBAやVisualBasicに近いものだし。 TeraPadで色付けワードにVBScript関係のモノと WSH関係のモノ追加したのでいつも書いてる。
即実行テスト出来るのでwpEditor使ってる
IEの操作について質問です。
下記のように和英辞書サイトで『空港』という単語を検索するようにしたいのですが、
なぜかテキストボックスに文字が入力されません。
どうしたらいいか教えてください。
Option Explicit
On Error Resume Next
Dim strUrl
Dim objIE
strUrl = "
http://dictionary.goo.ne.jp/je/ "
Set objIE = WScript.CreateObject("InternetExplorer.Application")
If Err.Number = 0 Then
objIE.Navigate strUrl
objIE.Visible = True
Else
WScript.Echo "エラー:" & Err.Description
End If
Set objIE = Nothing
objIE.document.all("MT").value = "空港"
>>260 指定方法が違う
対象のHTMLソースを確認しろ
>>260 Dim objIE
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "
http://dictionary.goo.ne.jp/je/ "
WScript.Sleep(5000)
objIE.document.dict.MT.value = "空港"
objIE.document.dict.submit()
263 :
260 :2009/10/06(火) 17:10:24
>>263 基本は一緒でHTMLの知識
最初の
>>260 で動作しない理由は document.all("MT") では単独のコントロールを指定しないため
よって
>>262 ではフォーム名を入れて document.dict.MT で指定している
スレチだよな・・・
ワード、エクセル、画像、HTMLファイルなどを指定した順番に印刷し、 各ページにページ番号をつけることってvbsで作成可能ですか? 可能だったらどのように作成するかヒント教えてください。
ワードとエクセルならそういうフリーソフトがすでにあるけどな ページ番号がついたかどうかは知らんが
>>265 VBSでそういう横断的でかつ細部に至る要求なんて書けたかなってかんじ
ユーザインタフェースへの入力を自動化するのならuwscとかあるんだけど
文字列連結.vbs Function J(arrArg) J = Join(arrArg, "") End Function Wscript.Echo J(Array(1, 2, 3, 4, 5, "A", "B", "C")) &記号に疲れたひと用
どこで聞いたらいいのかわからないので、スレ違いを承知でお聞きしたいのですが、 現在Windows 2003 Serverメインの環境でActive Directoryの運用中です。 ユーザアカウントの新規作成は全て手動で行っているのですが、何とかWSHやADSIを使って CSVファイルから一括で登録処理を行えるようにしたいと思っています。 しかし、プログラムはおろかコードやスクリプトなど今まで全くさわったことが無いので ネット上で公開されているサンプルなどを見ても、何を意味しているのかがほとんどわかりません。 勉強するに当たって、参考になる書籍やサイト、別スレなどがあればアドバイスをお願いします。
271 :
269 :2010/02/17(水) 00:37:23
>>270 ありがとう。
そこも見たんだけど、そもそも一つ一つのメソッドがどういうオブジェクトを生成してるのかや、
何故それをしなければならないのか、っていうところからわからなくて困ってる。
Set objCommand = CreateObject("ADODB.Command")
なんかはドメコンに接続するときにおまじないのように書かれてるけど、これに限らず何をするためのものかわからないレベル。
例えば上記の構文だと、objCommandって変数にどういうオブジェクトが当て込まれてるのかや、
その内容を確認する方法すらわからなくて、ただただ途方に暮れてる。
Scripting guysなんかも読んでるけど、突然理解が追いつかなくなるんだ…
才能無いから諦めた方がいいのかと悩んでしまう
>>271 あきらめるの早すぎ。
ADOは一度使い方を覚えれば使いまわせるよ。
VBSでWSHやる前に、
ExcelのVBE環境で色々試してみてはどうか?
ADOもADSIも使えるよ。
デバッガで変数の中身を確認できるので、イメージが膨らむはず。
>Set objCommand = CreateObject("ADODB.Command") >なんかはドメコンに接続するときにおまじないのように書かれてるけど、これに限らず何をするためのものかわからないレベル。 >例えば上記の構文だと、objCommandって変数にどういうオブジェクトが当て込まれてるのかや、 >その内容を確認する方法すらわからなくて、ただただ途方に暮れてる。 気にすんな ほとんどの自称プログラマはそこらへんのサンプルコピペして 意味も判らず使ってるだけのレベル わからんでもこねくりまわしてるうちにとりあえず動く 全部判って書いてる香具師の方が少数だから安心汁
274 :
269 :2010/02/17(水) 01:23:56
>>272 >>273 アドバイスサンクス。
3ヶ月程悩み続けてたんだが、プログラムとスクリプトの違いすらわからないくらいに初心者なもんで、
参考になる本も探してみたけど、どれも求めているものとは違うから挫けかけてた。
ExcelとかAccessのVBAだと、変数の宣言とかコマンドのプロパティが若干違ってくるから
あえて敬遠してたけど、そっちでも色々試してみる。
もっとも、WSHだと変数はWScript.Echoで確認できるけど、生成したオブジェクトの確認方法が不明だったから
コピペしてきたサンプルが何のために何をしてるのかわからなくて、
その度に途方に暮れてたけど、ちょっと頑張れそうな気がしてきた。
また分からなかったら初心者丸出しの質問をするかもしれないけど、
とりあえず明日から改めて出直してくる。
本当にありがとう!!
キーワードと "MSDN" をあわせてググレばたいていの説明は出てくる。
test <pre> p </pre>
文字列の一部をコメントアウトする.vbs Wscript.Echo "" _ & "aaa" _ & "bbb" _ & C("" & "ccc" _ ) & "ddd" _ & "" Function C(strArg) C = "" End Function rem とかじゃだめなのさ
文字列の一部をコメントアウト2.vbs Set objDic = CreateObject("Scripting.Dictionary") i = 0 i = i + 1 : objDic.Add i, "cmd.exe /c" i = i + 1 : objDic.Add i, "(" i = i + 1 : objDic.Add i, "dir /w" rem i = i + 1 : objDic.Add i, "|" rem i = i + 1 : objDic.Add i, "sort /r" i = i + 1 : objDic.Add i, "|| (pause & exit)" i = i + 1 : objDic.Add i, ")" i = i + 1 : objDic.Add i, "&& (echo well done. & pause)" strCommandLine = Join(objDic.items, " ") CreateObject("Wscript.Shell").Run strCommandLine
だれかEXECメソッドの使い方教えてください;; ググっても分からない。。
wordの.docファイルに埋め込まれた画像をbmpで取り出すプログラムを書いています Office2003以降のwordがインストールされているPCからだとうまく取れたのですが OfficeXP以前のwordがインストールされているPCだとうまく動きません どちらもword2000形式で保存されているファイルに対して操作しています OfficeXP以前のwordがインストールされているPCでも動くように書くにはどうすればよいですか
vistaでファイルを選択するためのダイアログ ボックスを表示するには? Hey, Scripting Guy! にあった Set objDialog = CreateObject("UserAccounts.CommonDialog") objDialog.Filter = "All Files|*.*" objDialog.InitialDir = "C:\" intResult = objDialog.ShowOpen If intResult = 0 Then Wscript.Quit Else Wscript.Echo objDialog.FileName End If では1行目でエラー ActivXコントローラはObjectを作成できないそうです
285 :
デフォルトの名無しさん :2010/07/05(月) 11:44:59
VBSって何?
Virtual Big Size
VESA BIOS Services
Vagina Burst Shower
289 :
デフォルトの名無しさん :2010/07/06(火) 09:19:02
Visual Browsing System
数万件のデータをテキストへの書き出す方法で、軽くて早くしたいわけだが 書き出し方法としては ・データごとに直接書き込み ・変数に格納してから一括書き込み ・クリップボードに格納してから一括書き込み の他になにかある? 配列に格納してエクセルシート経由くらいしか思い付かない
元データの格納場所がDBならSQLって手もあるな
複数箇所のフォルダ管理だからDB化は難しいかな そして変数もクリップボードも足りなくて使えないや 数万件ファイル名に各々文字列連結して全部つぎ込むとかムリゲ txtに書き出すなら配列に格納する意味無さそうだしなあ
クリップボード出来ないことはないが、テキストに書き出す20倍くらい時間かかってる IEクリップボードのせいか? VBなら早いのに バックグラウンド処理するのにこんなに時間も負荷もかかるなら、クリップボードは使えないな
質問です! クリップボード使ってテキスト書き出しってど〜やるの?
IE使うのが一般的かな 上がクリップボードから読み出し 下がクリップボードへ書き出し 書き出すときはクリップボードをクリアしてから格納すること Microsoft Forms 2.0設定できればクリップボードも早くなるかもしらんが objIE.document.parentWindow.clipboardData.GetData( "Text" ) Document.parentWindow.clipboardData.setData "text",""
いや、その後に「一括書き込み」するんでしょ?そっちのやり方。
何を聞きたいのかよくわからんが・・・ objOutFile.WriteLine strDate で書き込めるだろ 改行したいならクリップボードに格納するときに VBCRLFでつなげればテキストには反映される
いや、なにか「速い」機能があるのかと思って・・・ VBだと速いの?
そういうことか 前エクセルVBA使ってたときは、クリップボード経由のデータ貼り付けってかなり早かった気がする。 とはいえエクセルだと配列→セルが強力すぎるからあんまり使わないんだけれども。
300 :
デフォルトの名無しさん :2010/09/30(木) 20:04:17
Set objFSO = CreateObject("Scripting.FileSystemObject") set objOpenFile=objFSO.OpenTextFile("C:\hoge.txt",1,false) msgbox "ロックちゅ〜" なんかもんだいありまっか?
ファイルロックを同期に使うなとあれほど
WshShell.Environment("USER").Item("UNKO") = "うんこ" Wscript.Echo WshShell.ExpandEnvironmentStrings("%UNKO%") 結果:%UNKO% 値を「うんこ」に設定できません。自分で自分の環境変数は変えられないのですか?
303 :
302 :2010/10/22(金) 12:35:04
自己解決しますた
以前、自動生成するファイルの拡張子に .unk ってのを使ってたら(内容不明の場合に作るファイル) 「別に拡張子はナニつかってもいいけどさぁ "うんこ"ってのは、ちょっとどうなのよ」 て先輩に言われたことがあったのを思い出した。
305 :
デフォルトの名無しさん :2010/10/26(火) 01:31:14
shine.unko こんな感じですか?わかりません。
うんこなうんか
>>304 Lotus Notesなんかも添付ファイルが理解できない時に吐くみたいだね>unk
個人的には3文字中「un」で2文字使うのはどうかと思うので
「UKN」の方が好きだけど(天気図等で使うが少数派…)
いっそのこと3文字にこだわらずに拡張子を「.unknown」にしちゃえば?
(dir /xなど)8.3文字表示で見ると、ちゃんと「.unk」になるし
>>308 なるほど、 .ukn か。
.unknownでもまぁ問題は無い気がするが
.unk でも十分伝わると思うんだ。
うんこって読む奴がうんこ。
むしろunkでうんこって読める先輩って kwsk、ktkr、wktk、ksk、gkbrみたいなアブジャド系表記に慣れてる2chねらなんじゃないのかw
311 :
デフォルトの名無しさん :2010/10/31(日) 22:53:19
他コンピューターのパスを返す時に、ネットワークドライブ(\A〜Z)ではなく、 \\サーバー名\フォルダ〜というようにする方法はありますか?
あります
おまえ、わざと意地悪してるだろ 同僚や部下から嫌われるタイプだな
死ねよ
久しぶりになにかをVBSで書きたい。
じゃあ「何か」を書いてみればいい。
317 :
デフォルトの名無しさん :2011/01/02(日) 00:13:10
MsgBox "Hello World!!"
MsgBox "Happy New Year !"
319 :
デフォルトの名無しさん :2011/01/02(日) 00:23:59
ゴサっ -------------------- dim i dim j for i=1 to 1000 j=j+0.1 next MsgBox j
TEXTファイルから 特定の文字や特定の行を抜き出す スクリプトってない? 三次元測定機からCADに XYZ手動で打ち込むのもういやになった。
>>320 ある。というか簡単だよ
テキストファイルを開いて1行ずつ読みながら正規表現等でチェックしていくだけ
2行以上に渡るデータだと少し面倒だけど大した手間ではない
でも仕様によってはわざわざ作らずに
SakuraエディタなどのテキストエディタのGrep機能で充分だったりするけど
textファイルをドラッグアンドドロップで DIM LOC1= LOCATION OF CIRCLE CIR1 UNITS=MM ,$ GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO AX NOMINAL +TOL -TOL MEAS DEV OUTTOL X 469.343 0.050 -0.050 469.343 0.000 0.000 ---#---- Y 2.106 0.050 -0.050 2.106 0.000 0.000 ---#---- Z 412.000 0.050 -0.050 412.000 0.000 0.000 ---#---- D 53.996 0.050 -0.050 53.996 0.000 0.000 ---#---- DIM LOC4= LOCATION OF CIRCLE CIR4 UNITS=MM ,$ GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO AX NOMINAL +TOL -TOL MEAS DEV OUTTOL X 386.074 0.050 -0.050 386.074 0.000 0.000 ---#---- Y 2.461 0.050 -0.050 2.461 0.000 0.000 ---#---- Z 577.913 0.050 -0.050 577.913 0.000 0.000 ---#---- D 44.971 0.050 -0.050 44.971 0.000 0.000 ---#---- ↑こんな感じの中身を こんな風に↓ /469.343/2.106/412.000 /386.074/2.461/577.913 XYZを/に置き換えて さらにXYZのNOMINALの数字だけを残して さらにデスクトップにtextで保存されるようなやつです 難しいですね、すいません
323 :
その1 :2011/01/04(火) 22:51:41
>>322 とりあえず作ってみた
' [仕様]
' NOMINALの位置は固定(XYZの直後)
' X,Y,Zはこの順番で必ず出現
' 数値間はスペース区切り
' 出力ファイルはデスクトップに元ファイル名(拡張しなし)_XYZ.txtというファイル名で出力
Dim fso,wshShell,regXYZ
Dim inFilePath,outFilePath,inFile,outFile,sDeskTopPath,sLine,retMatches
Dim X,Y,Z,isOutput
Const REG_XYZ_NOMINAL = "^([XYZ]) +([^ ]+) " ' 先頭XYZ の後空白があり次に空白が来るまでの値
Const OUT_FILE_TAIL = "_XYZ.txt" ' 出力ファイル末尾
Set wshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set regXYZ = New RegExp
With regXYZ
.IgnoreCase = False ' 大文字小文字区別する
.Global = False ' 先頭の一致のみ
.Pattern = REG_XYZ_NOMINAL
End With
sDesktopPath = wshShell.SpecialFolders("Desktop") ' デスクトップの取得
inFilePath = WScript.Arguments(0) ' 入力ファイル
If Not fso.FileExists(inFilePath) Then MsgBox(inFilePath & "が存在しません"):WScript.Quit
outFilePath = fso.BuildPath(sDesktopPath, fso.GetBaseName(inFilePath) & OUT_FILE_TAIL)
If fso.FileExists(outFilePath) Then
If MsgBox(outFilePath & "ファイルが存在します。上書きしますか?", vbYesNo ) = vbNo Then Msgbox "処理を中止しました":WScript.Quit
End If
324 :
その2 :2011/01/04(火) 22:52:49
Set outFile = fso.CreateTextFile(outFilePath, True) Set inFile = fso.OpenTextFile(inFilePath, 1, False) X="":Y="":Z="":isOutput = True Do While ( Not inFile.AtEndOfStream ) sLine = inFile.ReadLine Set retMatches = regXYZ.Execute(sLine) If ( retMatches.Count > 0 ) Then Select Case retMatches(0).Submatches(0) Case "X" X = retMatches(0).SubMatches(1):isOutput = False Case "Y" Y = retMatches(0).SubMatches(1):isOutput = False Case "Z" Z = retMatches(0).SubMatches(1) outFile.WriteLine("/" & X & "/" & Y & "/" & Z) X = "":Y="":Z="":isOutput = True Case Else End Select End If Loop if ( Not isOutput ) Then outFile.WriteLine("/" & X & "/" & Y & "/" & Z) inFile.Close:outFile.Close set inFile = Nothing:set outFile = Nothing:set WshShell = Nothing set fso = Nothing:set regXYZ = nothing MsgBox "完了" ' その1とその2の内容を一つのテキストファイルに貼り付け XYZ.vbs 等のファイル名で保存してください
325 :
323 :2011/01/04(火) 23:46:30
プログラム板凄すぎワロタw ありがとうございます!
327 :
デフォルトの名無しさん :2011/01/07(金) 15:49:03
どなたかリムーバブルメディアを取り出すvbs作ってください お願いします ジャンクのスロットローディング式のドライブ買ったらボタンがありませんでした
328 :
デフォルトの名無しさん :2011/01/07(金) 16:53:37
011100111111011111 011110000111101111 001111100011110110 111010101101011101 100011101010101010
>>327 ちょっと検索すれば出てくる。少しは自力で探そう
VBSにこだわらないのなら
Vectorで「トレイ 開閉」とかで検索すればフリーソフトがいくらでもあるし
と言ってるうちに見つけた。1行で書けるのが面白かったので個人的にメモ
' 光学ドライブが1台の場合
CreateObject("WMPlayer.OCX").cdromcollection.item(0).eject()
' 光学ドライブが複数ある場合などドライブ指定が必要な時(例は Q: ドライブ)
CreateObject("WMPlayer.OCX").cdromcollection.getByDriveSpecifier("Q:").eject()
>>329 APIしか思い浮かばなかった俺には目から鱗だわ<WMPlayer
331 :
デフォルトの名無しさん :2011/01/08(土) 21:00:10
>>329 もうCで作っちゃったけど
1行で済むんですね
ありがとうございました!
332 :
こいぴ :2011/01/09(日) 21:54:03
業務で、VBSにデジタル署名をする必要が出ました。 各種調査しましたが、どうしても方法が解りません。 どのたか、ご教示願います。
無料RPG製作ツール「ロープレジェネレーター」 直感的操作で簡単なゲームが作れます。 簡単に配布可能な状態に出力することができます。 (HSP製のソースコード付きで、スクリプトの知識があれば自由度の非常に高いカスタマイズ ができます) 他にも仲間預かり機能(100人も)や、仲間の状態/状態異常を細かく設定できたり、 乗り物が作れたりゲーム中に画像を差し込んだり、回転やフラッシュなどのエフェクト なんかも簡単に作れる様です。戦闘はデフォだとドラクエ系。 移動は矢印キーの他に、キャラがマウスを追っかけたりするとのこと。 他にはオートアクションというのがあってオリジナルシステムの製作に役に立つかも しれない機能です。これは、マップエディタで設定することで、「マップに入った時・ 出た時・一歩歩いた時・戦闘開始前」に自動的に実行されるアクションを設定できる 機能です。 ■分からないことや要望は掲示板へどうぞ。他にもいろいろ進化中みたい。
335 :
デフォルトの名無しさん :2011/01/28(金) 13:34:09
デスクトップ上に任意の文字だけを表示するVBSを作るのはむずかしいでしょうか?
336 :
デフォルトの名無しさん :2011/01/28(金) 14:47:38
>>335 目的がよくわからないけど
スクリーンセーバーでテキスを表示しておけばいいんじゃない?
>>336 目的はホットキーに埋め込まれたマクロの実行をする際に
その実行するモードがいま何になっているかをキーを押した時に数秒デスクトップ上に表示させるためです。
何か文字列を数秒間デスクトップ上に表示させるってだけなら、 もし俺ならVBSではなく以下のバッチファイルで手っ取り早く済ませるんだが… @ECHO OFF ECHO 表示したい文字列 PING 0 > NUL PING 0 > NUL EXIT
それ、"デスクトップ上に"ではなく"ウィンドウ内に"だろ それで良いならわざわざバッチファイル使わずWScript.ShellのPopupで良いはず
>>338-340 具体的なイメージで言うと
透明ウィンドウにテキストのみ表示するかバルーンメッセージ的なものを考えていたのですが
VBSで透明ウィンドウはできないっぽいのであきらめようと思います
まあ外部COM使えばどうにでもなる話ではあるが、 それ言うと他も全て「COM使え」で終わってしまう。
343 :
デフォルトの名無しさん :2011/01/30(日) 22:09:09
しまうね
+ + + + + シマウネ━━━━━━━!!!! + /・/\__ + + 丶'\||||||||||)〜 + << ̄>/ _|\∧∧∧MMMM∧∧∧/|_ > < ─ / ──┐ /_ /_ヽ| |ヽ ム ヒ | | ─ / / / ̄ /  ̄/ | ̄| ̄ 月 ヒ | | __ノ \ _ノ //\ / | ノ \ ノ L_い o o
よろしくお願いしまう
346 :
デフォルトの名無しさん :2011/02/08(火) 22:16:59
347 :
デフォルトの名無しさん :2011/02/09(水) 18:09:40
質問です。 フルパスファイル名が書かれているテキストファイルを参照し、ファイル有無をチェックするやり方を教えてください。また、テキストファイルに記述されていないファイルが存在する場合もNGとしたいです。
>>347 詰まる部分があるとは思えない初歩的なプログラムな気がするんだが。
とりあえず書いた所までどこかにアップしてみてよ。
どこかにアップっていうか、ここに貼ればいいんじゃね? そんな長いコードにはならんだろ
いや、かなり長いコードになるかもよ。 前半の >フルパスファイル名が書かれているテキストファイルを参照し、ファイル有無をチェックする コレは簡単だよな。悩むこたぁない。 問題は後半のコレ >テキストファイルに記述されていないファイルが存在する場合もNG やっかいだぜ? 考え方としては、前半の処理と、後半の処理は完全に分けて 2本の別のプログラムを書くような気持ちでコーディングすればいいんじゃないかな。
何処が厄介? テキストに書かれたパスを連想配列に入れて 対象フォルダ内のファイルをループ回しながらExistsでチェックするだけだろ
ほらね。わかってない。
解ってないのは350。恥ずかしい、、、
354 :
347 :2011/02/10(木) 08:01:03
皆さんありがとうございます。 前半部分は大体イメージをつかめているのですが、後半部分でつまってます…
とにかく自分で出来る部分まで書いて貼るなりどこかにアップするなりしろ 話はそれからだ
つまり全ドライブの全フォルダを検索しなきゃならんな
普通に考えれば、対象は一部(特定のフォルダ以下)だろ
>>357 どうしてそう言い切れる。
本人はフルパスファイル名、つまり絶対パスを指定しているんだぞ
特定フォルダでいいなら相対にするだろ常識的に考えて
昨今、相対パスが使われるのは相対パスでなければ困る場合のみで どちらでも構わない場合は絶対パスを使うことの方が多い件について。
>>347 が情報小出しにするからイカンのだ
こういう質問者って大体足りてないよな色々と
>>359 zipとかの書庫ファイルはなんで相対パスで格納してるか理解できる?
何のためにカレントディレクトリって概念があると思う?
何でわざわざ%SystemRoot%とか環境変数を定義してるのか疑問に思わない?
相対パスが絶対的に必要ではない場合はって話をしてるのに 全く的はずれな例を持ってきたな そういうことは相対パスそのものが無意味とか宣ってる奴に言ってやれ
狭量なやつw
>>361 質問者はzipファイルの中身まで調べるなんて設問はして無いだろ。
なんでオマエは論点をずらそうと必死なんだ?
366 :
デフォルトの名無しさん :2011/02/12(土) 11:50:55
vbscriptでmicrosoft bluetooth stackの接続情報を得ることはできませんか?
"E:\hogehoge\hoge" というフォルダが存在した場合、そのフォルダを削除。 存在しなければそのまま終了。 という簡単なスクリプトを教えていただけませんでしょうか?
いいよ。 で、どこを教えて欲しいの? まさか1から10まで丸投げで全部書いてとは言わないよね? しかも質問スレではなく、自分の書いたものを晒すスレで。
いや○投げスレじゃね?ここ。
>367 VBSじゃないが、これで事足りないか? if exist "E:\hogehoge\hoge\." rd/s/q "E:\hogehoge\hoge"
371 :
367 :2011/02/13(日) 14:31:51
なんだか趣旨がよくわからないスレでしたが、どこへ質問すれば良いのかわからず、とりあえず書き込んでしまいました。
申し訳ありません。
>>370 さんのバッチファイルで満足な結果が得られました。
まさか1行で済むとは思いもしませんでした。
ありがとうございました。
hoge\. だとhogeってファイルがあった時も反応するんだよな。 hoge\nul だとディレクトリしか反応しない。
373 :
デフォルトの名無しさん :2011/02/14(月) 23:17:24
質問スレがみつからなかったので、こちらで質問させて頂きます。 Set objShell = WScript.CreateObject("WScript.Shell") Set objExec = objShell.Exec("ipconfig.exe") って実行した時に、標準出力に結果を出さないようにする方法ってありますか? ipconfig 1 > nul みたいな感じで、エラー発生時以外はすべて返ってくる結果を捨てたいのです。 そのまま書いてもうまく動かないです。
つgoogle [wscript Exec 標準出力]
375 :
デフォルトの名無しさん :2011/02/15(火) 00:17:00
>374 トラップされるって事は、読み出さない限り無視されるって事ですか?
> 標準出力に結果を出さない はipconfig.exeが対応してなきゃ出来ないよ WSH(EXEC)が受け取った標準出力を 「コンソールウィンドウに表示しない」 ならどうにでもなるけど
377 :
デフォルトの名無しさん :2011/02/15(火) 00:36:44
>376 コンソールウィンドウに表示しないと、1 > nul って同じ扱いですか? 質問ばかりで申し訳ない。
ipconfigはネットワーク設定を確認する為のプログラムなんだから エラーになるのはexeが見つからない時ぐらいじゃねーの。 ネットワーク設定されて無い時は"設定無し"って正常終了するんだし
pingで表示したくなくて、WMI使ったな こんな感じだったと思う。 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_PingStatus " & _ "Where Address = '" & hoge & "'")
何かすげぇな… CreateObject("SAPI.SpVoice").Speak"Wellcom to VBScript."
CreateObject("SAPI.SpVoice").Speak"KoNoHaYaSaNaRa. Ieru. Null Po."
CreateObject("SAPI.SpVoice").Speak"Gutt."
"null poor" "gad"にしたらそれっぽく聞こえるようになった
こんな化石ネタに乗ってくる奴が居るとは、、、
ほるだー内にあるoutlook6のメッセージファイル.emlを検索して、エクスプローラにリンク表示するプログラムを作ってます が、.emlが開けない アウトルックを軌道してクリックしたメッセージを表示したいのですが、どう書けばいいのでしょう。 wshshell.runでは出来ませんでした……
ISPの切断>接続をしてくれるPGをどなたかキボン! telnetでルータ(Aterm)に入って、PPPoEを再接続してくれる物です。
だからここは自分で作って晒すスレで 質問スレや制作依頼所じゃないと何度言えば…
ほかにいくか……VBSじゃなくてIEの問題な気がしてきた
丸投げされるのはムカつくけど多少の質問ならいいんじゃね?
>>387 telnetで入れるならTeraTerm等でマクロ作ったほうが簡単。
もっとも擬似GUIだとお手上げだが。
昔、telnetをラップするvbs作ったことあったな…
392 :
デフォルトの名無しさん :2011/04/09(土) 21:38:36.77
こんな感じでマイドキュメントをコピーしてバックアップを 取ろうとしてるんですが、Windows 7だとエラーが返ってきて、 コピーできません。 Set objFS = CreateObject("Scripting.FileSystemObject") objFS.CopyFolder "C:\Users\Admin","C:\test" AdministratorでもコピーできないのってUACの仕様ですか?
>>392 UACというかVistaからの仕様です
例え管理者といえど他人の敷地には許可無く進入は出来ません。
今までのウィルスならこれで全て無力化される、そんぐらい厳しい仕様。
因みにAdminとAdministratorは別物だよ。
XPまでのユーザー管理とは似た非なるものと認識しておこう。
ポリシーいじれば同じ感じに出来るけどめんどい。
397 :
392 :2011/04/10(日) 19:18:31.68
>>393 >>394 質問スレじゃないの理解してませんでした。申し訳ない。
>>395 フォローありがとうございます。
>>396 かなりめんどくさそうですね。手作業でやった方が速いのかも…
アクセスフォルダに所有権とかつけてみて、もうちょっとやってみます。
ありがとうございます。
398 :
デフォルトの名無しさん :2011/04/23(土) 17:43:43.24
会社の共有PCの管理のため、Windowsのログオンスクリプトにかまして、 とあるプロセスを監視しています。 なので基本的にユーザーがログイン中は常にWscript.exeが動いているのですが、 ↓のような無限ループでもいいんですかね? なんとなく無理やりな感じがして、もっとスマートなやり方があるでしょうか? Call プロセス監視処理 @ Sub プロセス監視処理 Do 'WMIからプロセス取得して、目標のプロセスがでたらループ抜け Wscript.Sleep 1000 Until Call やりたい処理 End Sub A SUb やりたい処理 'やりたい処理がおわったらまた、プロセス監視処理をCall End Sub
400 :
デフォルトの名無しさん :2011/04/27(水) 22:03:44.07
おまえら
>>399 これくらいも答えられないのかよ
死ねっ!能無しども
会社でもろくな仕事してないんだろうなぁ・・
>>400 あんまし読んでないしてきとーだけど再帰処理っぽいなと思った。
見つかるまで自分自身を呼び続けたらいいべさ
ここで聞いていいのか分かりませんが、分かる方いたら教えてください。 コマンドラインでフォルダを圧縮するためにZIP.VBSというのを使っているのですが、 MakeZIP.VBSでフォルダを圧縮する際、zipファイルにフォルダ名が格納されてしまいます。 photo ├aa.jpg └bb.jpg 上記のような場合に、zipファイルにphotoフォルダも格納されます。 これをphotoフォルダを格納せず、ファイルのみ格納するにはどこを修正すればよいのでしょうか。 よろしくお願いします。
そもそもスレ違いだが、それ解らないレベルならZIP.VBSなんか使わずに コマンドライン型のアーカイバツール使えよ。 GUIで予め設定しておけば渡したフォルダの中身だけ圧縮してくれるものなんて いくらでもあるから。
修正も何もコマンドラインをまず書けよ、なっ?
ブ・・・vbs・・・ わしは・・ワシは今までこんな素晴らしい言語があるなんて知らなかった・・・! APIなんかいらないじゃん!
VBSにD&Dしたものを他のソフトのウィンドウへD&Dとして受け渡すことは可能ですか?
ファイルへのD&Dなら可能 これは単なるコマンドライン実行なので ウィンドウへのD&Dならデフォでは不可 専用のCOMでも作るか探すかすれば出来ないことはないだろうけど
サンプルをいじることしか出来ない私には手に負えないですね… 諦めで別な方法を模索してみます
410 :
デフォルトの名無しさん :2011/06/14(火) 02:40:29.91
2chのhtmlを取得して、vbsで正規表現による抽出と置換をしてhtmlを整形してログを管理するプログラムに読ませたい。 抽出までは上手くいきました。 しかし、正規表現による置換ができません 例えばこのスレのhtml内のコメ409を抜粋するとこうです <dt>409 :<a href="mailto:sage"> <b>デフォルトの名無しさん</b></a>:2011/06/06(月) 00:45:23.45 <dd> サンプルをいじることしか出来ない私には手に負えないですね… <br> 諦めで別な方法を模索してみます <br><br> ここから 409 :2011/06/06(月) 00:45:23.45 <dd> サンプルをいじることしか出来ない私には手に負えないですね… <br> 諦めで別な方法を模索してみます<br><br> にするには\<a.+/a>|(</a>:)|\</?.+?\> で置換して余計なものを取り除けばできました。 しかし、<dd>や<br>などの改行にあたる部分も別途置換しないといけないのでここで詰まってます。 片方づつなら出来るのですが同時に1スクリプト内 でやろうとするにはどうすればいいのでしょうか?
\<a.+/a>|(</a>:)|\</?.+?\> の部分を空白に置換するvbsです Dim objFile ' 対象ファイル Dim oldText ' 置換前テキスト Dim newText ' 置換後テキスト Dim objFSO ' ファイルシステムオブジェクト Dim objRep ' 正規表現オブジェクト Dim repText ' 置換対象文字列 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("読む込むテキストファイル") ' テキストデータ読込 oldText = objFile.ReadAll ' 置換対象文字列 repText = "" Set objRep = New RegExp objRep.Multiline = True ' 正規表現パターンを指定する objRep.Pattern = "\<a.+/a>|(</a>:)|\</?.+?\>" objRep.IgnoreCase = True objRep.Global = True ' テキスト変換 newText = objRep.replace(oldText, repText) objFile.Close ' 書き込み Set objFile = objFSO.CreateTextFile("書き出すテキストファイル") objFile.WriteLine (newText) objFile.Close
' 書き込みの前から' 正規表現パターンを指定するへループして繰り返せればなと考えているのですが上手く思いつきません。 もし、わかるかたがいらっしゃれば教えてください。よろしくお願いします。
やりたい事がいまいちわからないが、 複数回やりたいんであれば、 正規表現パターンを配列に入れて、ループするだけじゃないかな〜
>>411 objRep.Pattern = "<(""[^""]*""|\'[^\']*\'|[^\'"">])*>"
こういうことじゃなくて?
なんでdat使わないで、 わざわざhtmlなんて難しいものを使う?
ちょっと見てみた、確かにhtmlよりdatのほうが容量4割減でおいしいんだけどタイトル取得できないのとコメ番号ないから置換するときどうやって割り当てようか思いつかない
よくみたら1行目の最後にタイトルあったわ
デスクトップから2ch検索するvbs作ってるんだけど、 変数の件でわからないところがある。 Dim 変数 で宣言する このとき変数が、例えば2churlとかだと識別子がありません。とエラーがでる churlなら問題ない、どうして先頭に数字がくるといけないんですか? 識別子がありません。
先頭に数字が来ることを許すと Dim 2 とか Dim 123 という変数が出来てしまう これってどうやって変数の2や123と、数値の2や123を識別するの? ってことになるので、必ず英字を入れなければならないというルールが必要になるわけで 1文字の変数がある以上、その英字が入る位置は1文字目、つまり先頭になり 1文字目が英字でなければいけない=先頭が数字ではいけない ってことになるわけだ 1文字目が英字でさえあれば、1文字変数でも、2文字目以降が数字でも 確実に変数と数値を識別できる
420 :
デフォルトの名無しさん :2011/06/17(金) 20:55:49.75
vbsでpingを打って、通るまで処理を繰り返すスクリプトを 作成しているのだが、どうもうまくいきません。 IF文で分岐をさせるのはうまくいくのですが、以下のスクリプトで 192.168.0.3に対して通るようになった時点でスクリプトを終了 させたいんですが、どこが悪いんでしょうか? dim strIP dim timeOut 'タイムアウト設定(ミリ秒) timeOut = "10" strIP = "192.168.0.3" Set objWMIService = GetObject("winmgmts:\\.") Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_PingStatus " & _ "Where Timeout = " & timeOut & " AND Address = '" & strIP & "'") For Each objItem in colItems do while objItem.StatusCode <> 0 Wscript.echo "NG" Set objWMIService = GetObject("winmgmts:\\.") Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_PingStatus " & _ "Where Timeout = " & timeOut & " AND Address = '" & strIP & "'") loop Next
選択プルダウンボックスとか作れたら便利になるのになぁ
VBSで選択プルダウンボックス使ってるけど、何か? VBSというかWSHは、COM、OCXで拡張してナンボなんだから 欲しいけど言語に備わってない機能は、外部で補えば良いだけだ
自分専用ならそうだろうけど、 comはインストールの壁が越えられない
超えられるけど、何か? USBメモリで持ち歩いて使ってる COMのレジストリ登録を自動化してるとかではなく未登録で
自信満々で「超えられるけど、何か?(キリッ」だもんなあw
自信満々に言った「comはインストールの壁が越えられない(キリッ」 を否定されて悔しかったの?
GetObject
USB股間に忍ばせて持ち歩く男の人って・・・/// きみの端子にプラグ★イン!
429 :
≠423 :2011/06/19(日) 10:02:11.33
>>426 あのね、ある程度の会社ならね、勝手にツール類をインストールする事ができないのね。
USBメモリも、使用禁止、あるいは相当制限されているのが一般的なのよ。
なんか勘違いしてる子が出てきたなw あのね、comにインストールの壁なんて無いって話であって USBメモリなんて、全く関係ない話なのよ それと、『ある程度』レベルの会社だと、勝手にツール類をインストールする事ができないところが多いけど 『ある程度』を超えたまともな会社だと、勝手にツール類をインストールする事が出来るところも多い セキュリティーが確立している上に、VBAやWSHなどの元から入ってる言語でいろいろ作れる奴が多いから 外部からのツールのインストールを制限しても、元から入ってる言語でツールが作れちゃうから意味無いw 逆にまともな会社だでツールのインストールを制限している場合は、WSHもVBAも制限してる
≠423とか必死に否定すると、余計に・・・・・( ̄ー ̄)ニヤリッ
「勝手に出来る」って方がおかしいだろ 今の時代どこもピリピリしてるってのに。 単におまえさん自身か会社がその客に信用されてるってだけじゃねーの? でも普通は申請式だと思うけど。他人の会社で勝手にてのはどうかと思う。
勝手にしてよいと許されていることを勝手にやる上で、何の咎があると? なにか勘違いしてやいないか?
これは突っ込んであげたほうが良いのだろうか?
生温かい目で見守ってあげるのが良いんじゃないかと
batファイルは止められませんね じゃぁバッチ最強じゃん
<a href="
http://upload.jpn.ph/500/bin/やきそば.zip ">こちら</a>
という内容のテキストファイルからURLの部分を抽出して
変数に入れるっていう目的でvbs作ったんですが上手く変数に入りません
Dim objFile ' 対象ファイル
Dim oldText ' 置換前テキスト
Dim newText ' 置換後テキスト
Dim objFSO ' ファイルシステムオブジェクト
Dim objRep ' 正規表現オブジェクト
Dim repText ' 置換対象文字列
var1 = "解析.txt" '保存する名前
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(var1, 1, false, 0)
' テキストデータ読込
oldText = objFile.ReadAll
patrn="(
http:\/\/[^\x22 ]+)" '検索する文字列を入力して下さい。
repText = "$2"
Set objRep = New RegExp
objRep.Multiline = True
' 正規表現パターンを指定する
objRep.Pattern = patrn
oldText = objRep.replace(oldText, repText)
WScript.Echo $2
objFile.Close
どうすればいいのでしょうか、もしわかるかた入れば教えてください。
自分では後方参照とかExecuteやマッチとかが関係ありそうで
調べて試したんですが思うようにいきませんでした。
まずは基本を学べってレベル
正規表現の構文がデタラメ。 パターンがデタラメだし後方参照の仕方もデタラメ。 ヘルプもろくに見てないだろ。
凄い違和感あったんだけど納得
>>433 やっぱ許可貰ってんじゃん
ま、当たり前だよなびっくりした
久しぶりに酷い自演をみた
>repText = "$2" この意味不明っぷりがすごいね
突っ込む所はそこじゃないと思うがw Echoのとことか、パターン自体に突っ込めよ
>>440 > objRep.Pattern = "T..t"
感動的なパターンだなw
>>437 も恥ずかしくて出れこれないんだから、いい加減に許してやれよ
さすが VBSなんていう時代遅れツール使ってるスレはレベルが低い
ゴミみたいな奴だな
文字を文字コードの数値に変換して出力したいんだけど誰か助けて
asc("a")
何その顔文字、ふざけてるの
("з")
456 :
デフォルトの名無しさん :2011/11/20(日) 14:29:12.95
(・∀・)
VBScriptって、1ヶ月もあれば極められるよね あとはCOMを何処まで使いこなせるかだけ
そんな時期もありました
例えば、notepad.exeを起動するvbsは?
>>459 Set shell = CreateObject("WScript.Shell")
shell.Run "notepad"
461 :
459 :2012/02/10(金) 22:23:36.81
>460 分かりました。ありがとう ところで、Option Explicitを書くとshellが宣言されてないと起こられますが この場合、shellの型は何ですか? あるいは、Option Explicitを書くべきじゃない?
>>461 Object 型
VBScript では VB や VBA と違い、宣言で型を記述しないのであまり意識はしないが、
Object 型だけは代入時に Set を必要とするので認識は必要
あと、Option Explicit は書いた方がよい
Option Explicit
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run "notepad"
463 :
459 :2012/02/11(土) 07:35:54.95
>462 ありがとうございました
Option Explicitはtypo無くしてくれるからな 昔のソース改修でstrPrinterとstrPrnterで1週間ぐらいハマった記憶 今なら真っ先に疑うけど当時はまだ慣れてなくて泣いたなぁ
>>462 CreateObject()の戻り値がObject型ってだけで変数に型は無いよ
Object型を変数に代入するのに、Setが必要なだけ
その証拠に、
Set shell = CreateObject("WScript.Shell")
shell = 1 '変数に型は無いので、この代入は有効
shell.Run "notepad" '変数には数値型のデータが入っているので、ここでエラーが発生
細かい事だけど、知っているのと知らないのでは大違い
>>464 typoを無くす為にOption Explicitを宣言してはいけない
Option Explicitの宣言は、ローカル変数とグローバル変数の区別を明確にするために宣言すべき
> 変数に型は無いよ ちょっとハズレ 正しくはVBSの変数の型は、無いのではなくValiant型のみというだけ で、Valiant型は内部型が固定されていないのでどんな型の値をも代入することが可能だが 値が代入されている状態では、内部に歴とした型という概念が存在する 細かい事だけど、内部文字列型と内部数値型では、外がValiant型でも扱いが異なるので、 知っているのと知らないのでは大違い > Option Explicitの宣言は、ローカル変数とグローバル変数の区別を明確にするために宣言すべき それ、VBやVBAの場合ね それらの場合はグローバル変数(全モジュール共通変数)とモジュール内変数の区別に役立つ でもVBSの変数スコープには、グローバル変数、プロシージャ内変数、クラス内変数の3つがあるが Option Explicitはこれらの区別を明確にする役目は果たさない
>>466 だから、違うって
全ての変数は型が無いことを保障されてるの、これをValiant型と言います
そして、型を持っているのは、データ側であって変数ではありません
変数に型がある場合は、オブジェクト型の変数に整数を代入する事は絶対に出来ません
次に、Option Explicitは、全てのスコープにDim文を強制します
VBScriptの仕様では、Dimで宣言された変数は該当スコープでのローカル変数として確実に扱われるが、Dimで宣言されない変数は、同名のグローバル変数がある場合、グローバル変数として扱われます
ようは、使うべきでないグローバル変数を誤って使う事をしない為に使われるのであって、typo問題の為に使われているのではない
考えるまでもなく、typoによって引き起こされる問題よりも、グローバル変数への不用意なアクセスによる影響の方がはるかに大きく深刻です
バリアントの綴りが間違ってた... ValiantではなくVariantでした。
なんだ、この子全然解ってないんだね
>>469 そう、
>>466 のように変数に型があると勘違いしていると、SubやFunction、Propertyに入力されるデータの型を勝手に期待して自爆する事になるよね
特にVBScriptのClass周りには、変数に型が無い事による罠が散りばめられてるからねぇ
痛すぎw
>>471 そう、
>>466 は理解の薄い痛い子だね
無型の変数に内部型があると信じている辺りが痛すぎる
型を持っているのは、変数ではなく値なのにね
たぶん、VBScript以外のプログラミング言語を使った事が無いんだろうね
>>467 横レスだけど
ローカルとグローバルでの変数名は、設計レベルで対応すべき話では?
実際の製造(プログラミング)時はtypo対策の方が重要では
そもそも、グローバルとプロシージャレベルで同名変数使うって
どれだけ可読性の低いプログラムを書くつもりかと。
普通コーディングルールで禁止されていると思うし、自分なら禁止する
個人レベルならともかく企業でもVB系言語を使う以上、Option Explicitは
BASICを、普通の(変数宣言を強制する)プログラミング言語と
同レベルに引き上げるものだと思ってるけど
とMSX-BASIC1から入って業務でVBは2(Win版。流石にDOS版は触って無い)から
使っている年寄りとしては思う
QB「
>>473 だから、Option Explicitをつければ、コードの再利用に際して変数名に関する問題は起こらなくなるの
Dimで解決するだろ
>>476 だからソースの始めに、Option Explicitが必要なんじゃんw
>>477 は?
typoしないんなら必要ないだろ?
ローカルでDimし忘れたらグローバルでDimしてる変数が使われちゃうぞ
>>478 お前、馬鹿だろw
Option Explicitが書いてあれば、ローカルでDim宣言されている証明になるが
Option Explicitが書いてあっても、typoしていない証明にはならない
なんか、自分自身が勘違いしていて痛い奴だってことに気付いてない 蘊蓄野郎が一人でずっと頑張ってるなぁ
Option Explicitでtypo対策する奴の方がよっぽど痛いけどね
普通に考えて、変数名をコピペしてたらtypoなんて起きないだろ... つーかtypoが問題になるって何十年前の開発環境だよ...
入力補完じゃなくてコピペって・・・・・ それこそ何十年前だよって話だなw 程度が知れてきたぜ
うはっ、入力補完機能のあるエディタ使ってて、変数名のtypoがプログラム制作上の重要課題ってw あれだな、うちのメモ帳の方が、あんたの開発環境よりも上って事だなw この10数年の間、変数名のtypoなんて起きた事ねぇもんw
この子、相手が一人だと思ってるのかな? 俺は変数名のtypoがプログラム制作上の重要課題なんて一言も言ってないんだが 必死になりすぎて周りの現実が見えてないんだね 大勢に嘲笑されているという現実が・・・・・
うはっw とうとう、「俺はtypoなんて言ってねぇ」とか言い出しちゃいましたよ このお方w
入れ食い
そもそもプロシージャとグローバルで名前重複なんて、可読性が低くて 絶対保守したくない類のソース。機械が読めても人が読みにくい。 Option Explicit以前にその時点で根本的に間違っていると思う。 それ以前に最近は「グローバル変数自体原則禁止、明示的に引数で渡すべき」 とか言われる事も多くて、高度情報処理試験の午前問題にもあったり。 ま、あくまで「原則」なんでグローバル変数を使わざるを得ない場合もあるが 独立性が低下するので再利用性が低下するのは避けられない。 つまりはスコープの違いをOption Explicitでどうこうして再利用性を上げようとする のは方針自体が間違っている。 引数のオーバーヘッドに関しても昔はともかく今はPCの性能が十分高いので 高速策よりも安全策というか保守性を取る方が多いし。 VBSの場合は短い事もあり汎用的に使うfsoとかはグローバルな事も多いけど。
>>488 馬鹿か
なんの為のスコープ分けだ
もう一度、構造化プログラムについて習いなおせ
互いのスコープが引数と戻り値のみでのみデータの受け渡しをする限り、互いの内部の処理は気にする必要は無いの
そして、VBScriptの場合は、グローバルスコープへ直接コーディングをする可能性があるから、Option Explicitによるコードの再利用性の保障が必要なんだっつうの
Option Explicit「みんな!私のために争わないで!」
>>489 らちが明かないから何かサンプル上げて説明してみて
>>491 まず共通部分
<job id="main">
<script language="VBScript" src="test.vbs" />
<script language="VBScript">
fso = "Hello"
MsgBox Test() & vbCrlf & fso
</script>
</job>
次に、test.vbs部分Option Explicit無しバージョン Function Test() Set fso = CreateObject("Scripting.FileSystemObject") Set File = fso.OpenTextFile("test.vbs") Test = File.ReadAll Set fso = Nothing End Function
こいつも、test.vbsでOption Explicit有りバージョン Option Explicit Function Test() Dim fso, File Set fso = CreateObject("Scripting.FileSystemObject") Set File = fso.OpenTextFile("test.vbs") Test = File.ReadAll Set fso = Nothing End Function
散々蘊蓄垂れてこのレベルか
Option Explicit 云々以前の問題だな
なんと見苦しい負け惜しみw
>>493 >Option Explicit無しバージョン
Option ExplicitよりもローカルのDimが無い事の方が影響大でしょ
> ローカルDim無しバージョン
とした方がよいのでは?
別にOption Explicitによりローカル宣言とグローバル宣言の優先度が
変わったとかじゃないし
「Option Explicit」の有無「だけ」による挙動の違いを説明できないと
Option Explicit Function Test() Dim File Set fso = CreateObject("Scripting.FileSystemObject") Set File = fso.OpenTextFile("test.vbs") Test = File.ReadAll Set fso = Nothing End Function そんだけ言うなら、このパターンでも試してみたらw
やれやれ、「Option Explicit」の使い方をようやく理解したか? まあ、なんで、そのエラーが出るのか理解出来て無いってほうが濃厚だなw なんせ、VBScriptの変数に内部型があるとか言っちゃうぐらいだからなぁw
自身が勘違いしていた事には気付いたが、 最初に強気で蘊蓄かましてしまった手前、 引くに引けなくなって強がりを続ける465萌え
>>501 ぷぷぷっ
もう、技術的な話を出来ずに口先だけかよw
「俺は、MSX-BASIC1からBASICを使ってるんだ」って言う割には大した事は無いなぁ
間違っているなら指摘しなw
ところで、既に
>>499 を提示してからでも丸一日が過ぎようとしているのに、今更、ファイルをクローズしてないとか言わないよねw
おーい、沢山いるはずの
>>501 よーい
技術的な指摘まだかーい
最低限、
>>498 みたいな、間抜けな指摘はすんなよーw
もうそろそろ飽きてきた...
MSDNからのコピペ
−−−
Option Explicit ステートメント
スクリプト内のすべての変数に対して、明示的な宣言を強制します。
解説
Option Explicit ステートメントを使用する場合は、スクリプト内の他のステートメントより前に記述する必要があります。
Option Explicit ステートメントを記述した場合、変数は、Dim、Private、Public、ReDim などの各ステートメントで明示的に宣言する必要があります。宣言されていない変数名を使うと、エラーが発生します。
−−−
以上
ソースコードに、Option Explicitが記述されていると、変数の宣言は明示的に行わなければならない
つまり、
>>493 は、
>>494 に変更しなければエラーが出て実行できない
では、
>>499 で、変数fsoは明示的に宣言されていないのになぜOption Explicitはエラーを出さないのか
それは、グローバル変数としてOption Explicitの効果範囲外で暗黙的に宣言されているから
つまり、ローカル変数とグローバル変数が交じり合い、スコープが明確ではなくなって全ての変数が宣言済みなのでOption Explicitはエラーを出せなかった
この結果の意味するところは、Option Explicitは、スコープがあやふやな場合には、typoを検出する事は出来ない(
>>499 )
逆に、Option Explicitを宣言した状態で、スコープを明確にしデバッグすれば、プロシージャの独立性を保障する事ができる(
>>494 )
あれだ、
>>498 は目の付け所は良かったが、リファレンスぐらいは読んだほうが良いってこった
負け犬の連投・・・
>>506 まだやる気かw
頑張って反論よろしくw
>>462 変数shellがObject型w
間違いを指摘されたら、
>>466 で内部文字型と内部数値型では扱いが違うとかw
つまりあれかw
MsgBox "123"+4+"5"
はエラーなんだw
なんかカッケーなw
こんなとこまで来ちゃうお前らの為じゃねーよ 適当にやったけど動いたからいーや的思考な 困ったくんや困ったチャンの為に書いてんだよOption Explicit 詳しい人が必ずメンテするとは限らないのがVB系の怖いとこで
こんなところに来ない人のための事をここに書いて意味あるんですか?
511 :
デフォルトの名無しさん :2012/06/10(日) 17:05:31.39
今までUWSC(フリーソフト)を使っていましたが、最近、VBScriptを知り、同じような処理ができることを知りました。 VBScriptを勉強中です。 分からないことがあればよろしくね。
513 :
デフォルトの名無しさん :2012/07/16(月) 01:26:02.69
だれか3000円上げるから 24平均律の鍵盤プログラム作ってくれ〜(T_T)
作曲するのに使います 音色はピアノ音だけでOKです
コンパイルしたプログラムなら3'000円でいいけど ソース(ソース丸見えのVBS…というか鍵盤必要ならHTA)で欲しいなら150'000円
>>515 言葉の意味がよくわからないけど
3000円の方でお願いします
白鍵とか黒鍵は ないようなもんなんで ボタンがズラリと並んでるだけでOKです Eの位置だけボタンにEって書いてくれたらOKです
よくわからんけど初音ミクじゃだめなの?
リアルタイムで音を確認しないと何かね……確信持てないっていうか シーケンスでやってその日は納得いっても 次の日に聞いたらアレ?って事ばかりなんで
煽り潰しですね
知恵袋にも登録したのですが、どうしても知りたいのでご教示お願い致します。 マクロを実行して、他のファイルのマクロまで編集できますか。 いろいろグーグルで調べたのですが、どうもヒットせず実行できそうにありません。 作成したいファイルは追記します。 1.エクセルファイル内にボタンフォームを作り(このファイルを便宜上、ファイル@とする)、ボタンフォームを押すと新しいエクセルファイルが作成される(このファイルを便宜上、ファイルAとする)。 2.次にファイル@から1.とは別のボタンフォームを押すと、「挿入>図>ファイルから」と同じ要領で画像を選択でき、Aファイル内のSheet1・セルA1に画像が貼り付けられる。 3.最後にファイル@に設置した1.と2.とは別のボタンフォームを押すと、ファイルAのVBScriptにスクリプトが書き込まれる(出来ればVBScriptをパスワード保護出来れば幸いです)。 という流れをファイル@のVBScriptなり、モジュール等を使って行いたいのです。 3にあるマクロは、上書き保存ができなくなるマクロのため、1の段階で保存ができると幸いです。 また、複数ファイルを処理する必要が有るため、同一ファイル名で保存しない仕様を求めています。
全部出来ますよ 但し、マルチな上にスレ違いなので、具体的な説明は伏せますが
523 :
デフォルトの名無しさん :2012/08/29(水) 19:05:51.32
VB・・・・・Sなのか?
ExcelでVBS…… ワークシートにボタンに見せかけたオブジェクトを貼り、 押すとハイパーリンクで外部のVBScriptを実行する とかならやった事がある
ExcelからVBSを呼ぶだけのパターンか 俺は逆にVBSからExcel.Applicationを使って Excelブックを操作するってことを結構やるな 「ExcelでVBS」ではなく、「Excel"を"VBSで操作」ってこった ExcelからVBSを呼ぶくらいなら、そのVBSを標準モジュールなどに取り込んで わざわざ外部のVBS呼ばずに内部実行するし
526 :
デフォルトの名無しさん :2012/08/31(金) 10:20:07.61
ってか、VBSならふつうそうでしょ
だよな
>>524 がなんんか面倒くさいことやってるだけで
一応、マクロを無効にしたExcelからでも実行できるというメリットはあるけど
officeのマクロはjsに移行するよ おまえらの書いたVBSなんて保守したくないし、頼むからせめてjsで書いてくれ
webで使う場合はjsに軍配挙がるけど wshやテキストエディタのマクロとかはvbsがいいな つーかvbsの前に、jsしか使えないバカを淘汰して欲しい vbsしか使えないバカも同じくね
>>529 VBSの保守をしたくないんじゃなく、VBSを保守する能力が無いの間違いだろ?
VBSにはプログラム言語としての長所は微塵もないよ 既に言語からもユーザーからも加齢臭とか腐敗臭とか漂わせている
533 :
デフォルトの名無しさん :2012/09/03(月) 19:20:10.07
>>532 Win32 APIの呼び出しができればいんだけどね
もう絶望的かな
言語なんてなんでもいいよ
SFC miniかExcel経由で行けるけどキモいよな しかし生のVBSからwin32api呼べたら怖くてエロサイト行けなくなる
いまメモ帳で頑張ってるんだけど、 ("text").Value = rnd このtextに乱数の直前に文章を入れたいんだけどどうすればいい? 必要なら全文載せる
3行目を読み返せ。
乱数の直前に文章を入れる? 単純に & で連結したらいいと思うが… msgbox "文章" & rnd
539 :
537 :2012/10/13(土) 10:55:59.62
>このtextに乱数の直前に文章を入れたいんだけどどうすればいい? 乱数の直前に、このtextに文章を入れたいんだけどどうすればいい?
540 :
デフォルトの名無しさん :2012/10/13(土) 11:01:38.99
ありがとうございます
CreateObjectのIEでブラウザの操作を自動化するスクリプト作っててサイトへのログインは自動化できたんだけど、 その後のページにあるボタンを押す動作ができなくて行き詰まってる… 流れとしては 1. ID、PWを入力してログインボタンを押す 2. TABキー15回+ENTERでボタンを押す (ページが切り替わる) 3. TABキー15回+ENTERでボタンを押す ←ここからうんともすんとも言わない 1、2は処理に成功してるんだけど、3が何も起こらない(エラーも表示されない) 3が動作しない原因はなんなんだぜ?
そこのソース撮ってくれ。
'1.ログイン
.document.all.Item("userId").Value = MemID
.document.all.Item("passWd").Value = UsrPass
.document.all.Item("btnLogin").Click
While .Busy Or .ReadyState <> 4
Wend
'2.切断
WshShell.SendKeys("{TAB 15}")
WshShell.SendKeys("{ENTER}")
While .Busy Or .ReadyState <> 4
Wend
'3.接続
WshShell.SendKeys("{TAB 15}")
WshShell.SendKeys("{ENTER}")
While .Busy Or .ReadyState <> 4
Wend
>>542 これでいいかな?
なぜか「3.接続」を実行できないんよ(´・ω・`)
>>544 ありがとう!できたよ!
↓ReadyStateを3とSleep 1000を組み合わせたらなぜかいけたww
'ログイン
.document.all.Item("userId").Value = MemID
.document.all.Item("passWd").Value = UsrPass
.document.all.Item("btnLogin").Click
While .Busy Or .ReadyState <> 4
Wend
'切断
WshShell.SendKeys("{TAB 15}")
WshShell.SendKeys("{ENTER}")
While .Busy Or .ReadyState <> 3
Wend
'接続
WScript.Sleep 1000
WshShell.SendKeys("{TAB 15}")
WshShell.SendKeys("{ENTER}")
While .Busy Or .ReadyState <> 3
Wend
Explorerを起動して任意のフォルダ(ドライブ)を指定で起動する。 その際、n階層下のフォルダまで自動的に展開した状態で開いて欲しい。 通常 → これを → 1階層指定で展開済み起動 d:[+]フォルダA d:[-]フォルダA [+]フォルダB [+]子フォルダ1 ←孫フォルダ(2階層下は存在してても展開しない) [+]フォルダC 子フォルダ1 : [-]フォルダB : ドライブルートから1階層下までの固定展開する機能は必須です。 可能ならば起点がドライブルート固定では無くて、パス指定で起点となるフォルダの指定と 自動展開する階層数が1階層で無くソースで指定する箇所があれば出来れば最高に嬉しいです。
ここは作ってくれって頼む場ではなく
こんな便利なの作ったけどどうよ?って作ったモノを晒す場だぞ
まあ
>>546 程度のことは多機能ファイラならコマンドやマクロで出来るので
完成したとしても晒してくれなくて結構だがな
548 :
デフォルトの名無しさん :2013/05/04(土) 00:22:48.17
アンカーがズレてるぞ それともスレの趣旨を理解してないおバカさんかな?
550 :
デフォルトの名無しさん :2013/05/31(金) 02:33:30.04
>>547 エクスプローラでやるから意義があるんだろ
ってか4ヶ月もたつのに反応してくんなや
正確悪すぎてきもい
551 :
デフォルトの名無しさん :2013/05/31(金) 19:26:22.45
えっ?ってなったった
552 :
デフォルトの名無しさん :2013/06/14(金) 11:40:12.42
> 4ヶ月もたつのに反応して
るのは
>>548 だなw
553 :
桃白白 ◆9Jro6YFwm650 :2013/06/23(日) 00:49:56.40
|┃三 ∩___∩ |┃ | ノ ヽ |┃ ≡ / ● ● | <あどうも、こんばんわー! ____.|ミ\___| ( _●_) ミ |┃=___ |∪| \ |┃ ≡ ) ヽノ 人 \ ガラッ
会社で入力するのめんどいからいろいろVBSで自動化してる。 会社の規則的にやばいので、今はやってないけど自動的にWindowsにログインするようにしてた。
555 :
桃白白 ◆9Jro6YFwm650 :2013/06/24(月) 23:09:44.12
CSVファイルをドラッグ&ドロップで読み込んで、 2行目の先頭3文字を抽出してください
VBSってどんなプログラム作れるの?
COM使わなきゃ大したことは出来ないが COM使えば大抵のことは何でも出来る まあ組み込みCOMだけじゃまだ貧弱だが COMは優秀なものが腐るほどあるし、自分で作ることも出来る COM使えばGUIだって作れるし、 WinAPIだってNET Frameworkの全てだって使える
WMIが便利そうだけど、あまりにも書籍などが少ない
書籍なんか無くても、ネット上の情報だけで事足りるけどな 余程頭が悪くなければ・・・
暇がある人は時間かけてネットの情報探せばいいさ その暇を惜しむから、まとめて書籍にしてくれと思うわけで
暇ってw まとめてWMIの情報載ってるページに行き着くのに10秒とかからんだろ? あとはサイト内検索とページ内検索を駆使すれば、書籍の目次からページを辿るより早いし それすらも出来ないようなレベルだと、WMIを使いこなすのは無理じゃね?
まとめてって言葉の真意が伝わってないな 情報を集める事だけがまとめる事じゃないぞ
もちろん
565 :
桃白白 ◆9Jro6YFwm650 :2013/07/05(金) NY:AN:NY.AN
>>565 このサイトのセキュリティ証明書には問題がありますww
って表示されるの。白桃おじさん、他のサイトがいいよ。
567 :
桃白白 ◆9Jro6YFwm650 :2013/07/06(土) NY:AN:NY.AN
>>567 バブルソートってやつじゃないのね
よくわかんない
簡単に解説ちょうだい
569 :
桃白白 ◆9Jro6YFwm650 :2013/07/06(土) NY:AN:NY.AN
>>565 と、Scripting.Dictionaryを使った方法(コードは十数行)で
10万行の重複削除の処理時間を比べてみた
>>565 1905.686秒
Scripting.Dictionary 0.178秒
これが、初期状態では入ってないCOMを使った方法と比べて遅いってだけなら
いくら遅くても「新たにCOMをインストールせずに実行できる」って点がメリットになるけど
初期状態で入っていて「新たにCOMをインストールせずに実行できる」Scripting.Dictionaryを
使った方法より遅いのでは、何のメリットも無い
Cとかのまともな言語なら、ライブラリやコンポーネントを使った方法より劣っていても、アルゴリズムの
勉強や研究用として多少は価値あるかもだが、VBSではそういう方向の価値も無いし、完全にゴミ
VBS覚えたてでコード書くのが楽しくて仕方ない時期の初心者さんに言っても無駄かもだが
もう少し適材適所ってものを考えられるようになった方がいいかもな
571 :
桃白白 ◆9Jro6YFwm650 :2013/07/06(土) NY:AN:NY.AN
>>570 ,、-'" ,、-';;;;;;;;;;;;;;;;;;;;;;;`''‐-、 ゙、、
,、-' ,、-'";;;;;;;;;ノ;;;;''-、;;;;;;;;;;;;;;;;;;;`''‐-、__ノ;;;\
/ ,、-'"::;;;;;;,、-'";;;;;;;;;;;;;;;`''- 、_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/ヽ;;;;\
. f_/;;;;;;;、-ニ';;;;;;、-‐ ''''""""''''‐-二、''‐-、___,ノ、 \;;;ヽ
. |;;;;;;;;,、ニ'";;、-'" `"ニ、;;;;;;;;;;;;;;\/;\;;',
. |,-,ニ '::/, -─ .,、-─-゙、-'、;;;;;;;;;;;、-、ノ;;;;)! ええっ!?
. Y::::::::/ .,、 -─- 、 ///:::::::::\ ';;;;;;/;;;;;;;;ヽノ
|::::::;' /://::::::::::ヽ '"""'' .、|:::l /::::::::::::::::ト|;;;;|;;;;;;;O;;;;';ヽ
ヽ:::|. |::l l::::::::::/,, .,-、.\:::::::::::::::::::ノ |;;;|;;;;;;;;;;;;;;;;';;;|
|::::| ̄ヾ;;;;;;;;;;;;/ /_| ヽJ ゙、── '" |;;;|;;;;;;;;;;;;;/;;;;;フ__
/|::::/. ,、_,、ヽ, ___ノ~"ヽ'l |:;;゙;;;;;0;;;:';;- '-"
| |::;'. l;;;;;;;;;;;-'""~__,,,`ヽ;;;;;;ノ |::;;;;;ヾ=;/''"
V:::| ,、-,'二──---、) ./:;;;;;;;;;;;;/-────
`|:|! ,、'ヽ'" _ _/:;;;;;;;;;;;;/ ____
|:|;', `" :::::: ,、-'"/:;;;;;;;;;/-─ '"
|:|;;\ ,、-'" /二フ
|:|;;;;;;;`' .、 _,、-‐'"-'",、-'" ̄
. |:|;;;;;;;;;;;;/ >.、 ,、-‐'",、-‐'" /_,,,、---──-- 、,,__
|:|;;;;;;;;;;/ / -`'" ,、-' ./-'" `"'-、
||;;;;;;;;;/ .ヽ 、__,、-‐'" , _,、-'"
572 :
桃白白 ◆9Jro6YFwm650 :2013/07/06(土) NY:AN:NY.AN
573 :
桃白白 ◆9Jro6YFwm650 :2013/07/06(土) NY:AN:NY.AN
>>570 ____
/ ⌒ ⌒ \
./( ―) ( ●) \
/::⌒(_人_)⌒::::: |
| ー .|
\ /
悔しいけれど論理的な反論が出来ない時にAA使う癖はまだ直らないんだな
>>569 丁寧にありがとう!
直接ではなくわざわざインデックスを用いるメリットがわからないや!
576 :
桃白白 ◆9Jro6YFwm650 :2013/07/07(日) NY:AN:NY.AN
白桃もう夏休みか 先に宿題を片付けた方がいいよ
578 :
デフォルトの名無しさん :2013/07/14(日) NY:AN:NY.AN
WMIってADの鯖側で動かさないと他のクライアントの情報って取って来れないよね?
権限さえあればそんなことはなかったはず
;p;
582 :
桃白白 ◆9Jro6YFwm650 :2013/12/04(水) 19:18:04.29
/゙ミヽ、,,___,,/゙ヽ i ノ 川 `ヽ' / ` ・ . ・ i、 彡, ミ(_,人_)彡ミ にゃーん ∩, / ヽ、, ノ 丶ニ| '"''''''''"´ ノ ∪⌒∪" ̄ ̄∪
583 :
桃白白 ◆9Jro6YFwm650 :2013/12/08(日) 19:45:03.23
tes
585 :
桃白白 ◆9Jro6YFwm650 :2013/12/22(日) 21:09:18.87
相変わらず無駄が多い、、、
587 :
桃白白 ◆9Jro6YFwm650 :2013/12/28(土) 12:55:53.24
どっかから集めたコードを切り貼りして大文字化しただけのものなんて 価値無しなので貼らなくていいよ
'# Baidu IMEがインストールされているかチェックして、インストールされていれば、アンインストーラーを起動するバッチを作ったよ '# メモ帳に以下の内容を貼り付けて「baidu_check.vbs」というファイル名で保存。 '# 「baidu_check.vbs」をダブルクリックして【Baidu IME】がインストールされているかチェック
Option Explicit '#-------------------------------------- ' 管理者になーる Dim WMI, OS, Value, Shell do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7 Set WMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set OS = WMI.ExecQuery("SELECT *FROM Win32_OperatingSystem") For Each Value in OS if left(Value.Version, 3) < 6.0 then exit do Next Set Shell = CreateObject("Shell.Application") Shell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas" WScript.Quit loop '#-------------------------------------- Dim objShell, ret Set objShell = CreateObject("Wscript.shell") Dim winName: winName = "【Baidu IME】インストールチェック" On Error Resume Next If IsNull(objShell.RegRead("HKEY_CURRENT_USER\SOFTWARE\Baidu\")) Then ret = objShell.Popup("このパソコンには【Baidu IME】はインストールされていません。", , winName, vbOKOnly Or vbSystemModal) Else On Error GoTo 0 ret = objShell.Popup("このパソコンには【Baidu IME】がインストールされています。" & vbCrLf & _ "【Baidu IME】をアンインストールしますか?" & vbCrLf & _ "(【猫耳】に泣きつかれても断固アンインストール!!)", , winName, vbYesNo Or vbSystemModal) Select Case ret case 6 objShell.Exec(objShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\Baidu IME\UninstallString")) case else WScript.Quit End Select End If
>>589 >>590 Baidu IMEが「入力情報送信しない」でもサーバーに情報を集めていた件の対応か。
すばらしい。
あれって、アン・インストールが普通の手順ではできないって聞いたが。
593 :
桃白白 ◆9Jro6YFwm650 :2013/12/30(月) 19:16:53.07
∠Y"´゙フ ;' ゝ‘,,ェ) あけおめー ; '(,,゚∀゚) ゙;(ノ ';) ヾ,;' '; ''∪''∪
このスレも桃白白の遊び場みたいだから有効利用しようね
595 :
デフォルトの名無しさん :2014/02/07(金) 16:22:51.04
このスレも桃白白の遊び場みたいだから有効利用しようね
596 :
デフォルトの名無しさん :2014/02/08(土) 19:19:41.23
このスレも桃白白の遊び場みたいだから有効利用しようね
でも桃白白は有効なコード書けないけどね オナニーで自分ではスゴいつもりらしいコードは何度も晒してるけど バグだらけか、皆当たり前に使ってる手法かのどちらかで 有効利用できるようなものを書いた試しがない まあ超初心者の質問に対しては、有効な回答をしたこともあったけど ちょっと質問のレベルが上がると、まったく答えられないし
598 :
デフォルトの名無しさん :2014/03/08(土) 17:13:17.17
どんだけ桃白白に劣等感感じてんだよwさらしあげw
599 :
デフォルトの名無しさん :2014/03/08(土) 17:23:56.33
NAOの気まぐれ独り言:他人を下げる
http://adviser70.ti-da.net/e3259555.html 世の中には、自分の自信やプライド、存在価値や存在意義を保つために“他人を下げる”ことをする人がいます。
(他人を下げるとは、他人をバカにしたり、見下したり、軽視することです。)
コレが良い悪いという話は置いといて、この“他人を下げる”行為について今日は考えてみました。
僕は“他人を下げる”ことは、人間の“自己防衛本能”の一種だと思っています。
人間はとても繊細な生き物ですからね。
特に、自信やプライドは傷つきやすく壊れやすいものですから、皆、それを必死に守ろうとします。
(ただし、本物の自信やプライドは簡単には傷つきませんし、壊れません。)
また、存在価値や存在意義は人によって違い、何が正解という明確な“答え”がなく、自分を保つのには自分自身の強い意志や独自の価値観が必要となります。
でも、強い意志や独自の価値観なんて、そう簡単に得れるものではありません。
だから、“他人を下げる”んです。
だから、自分が傷つかないように、また自分を保つために“他人を下げる”んですよ。
600 :
デフォルトの名無しさん :2014/03/08(土) 17:28:12.18
601 :
デフォルトの名無しさん :2014/03/08(土) 17:31:52.18
拾いモノ。通常はSendToフォルダ経由またはD&Dでファイルを指定する Option Explicit Dim WS,FSO,ie,Ags,Ag0,I Set WS = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set ie = CreateObject("InternetExplorer.Application") Set Ags = WScript.Arguments Ag0 = "" If Ags.Count > 0 Then For I = 0 to Ags.Count - 1 Ag0 = Ag0 & Chr(34) & FSO.GetAbsolutePathName(Ags(I)) & Chr(34) & vbCrLf Next Else Ag0 = Chr(34) & FSO.GetAbsolutePathName(".") & Chr(34) & vbCrLf End If ie.Navigate "about:blank" Do Until (ie.Busy = False) or (ie.Document.ReadyState = "complete") WScript.Sleep 10 Loop ie.Document.ParentWindow.ClipboardData.ClearData ie.Document.ParentWindow.ClipboardData.SetData "text", Ag0 WScript.Echo(Ag0 & vbCrLf & "以上の文字列をクリップボードへ格納しました。") Set Ags = Nothing Set ie = Nothing Set FSO = Nothing Set WS = Nothing WScript.Quit()
>>602 > 拾いモノ。通常はSendToフォルダ経由またはD&Dでファイルを指定する
しばらく、VBSコードから遠ざかっていたけど、
これって、単に、SendToやDDで指定したファイルの.GetAbsolutePathName()
をクリップボードに格納するだけ???
単にそれだけ???
それだけで、こんなに長く直感的でないコードとなるのが VBS なのか?
もともとVBSにはクリップボード操作機能は無いからね たかが > それだけで、こんなに長く直感的でないコードとなるのが VBS なのではなく、 どんな言語でもサポートされていないことをなんとかして実現しようとすれば 直感的とは言えないコードになるのは仕方のないこと 逆に言えば、コードが長く複雑になることを許容すれば サポート外の機能さえ実現方法があるのがVBS まぁ、直感的に使える機能だけを使ったコードしか書いたことの無い人には 理解できない世界かも知れないが
606 :
Westrip ◆cFyu7DKD9w :2014/11/25(火) 15:39:40.09 ID:+Ehd3ZDh
「コンピュータ連続運用時間計測」
(常駐型ではない。ローカルグループポリシーエディターおよびイベントビューアを使えるPC環境でないと無意味)
以下のテキストファイルを適当な名前で保存し、拡張子を.txt→.vbsに変えると使える
使い方や注意点などはテキスト内に書いてあるので、必ず読む事
ttp://alp.jpn.org/up/s/21848.txt (このアップローダは1年4〜5ヶ月くらい持つようだ)
Explzh(フリーのアーカイバ)とExplzh用FTPクライアントアドオンの両方をインストール済の環境において FTP接続ダイアログ表示を自動化するスクリプト 元々どっかのブログで拾ったものに手を加えて、Explzhのインストール先をレジストリから取得する方式に変えた そのためインストール先に関係なく、そのまま使える Dim WS,strPath,strExe Set WS=WScript.CreateObject("WScript.Shell") strPath = WS.RegRead("HKEY_CURRENT_USER\Software\Pon\Explzh\Folders\ExplzhDir") strExe = "EXPLZH.EXE" WS.Run Chr(34) & strPath & strExe & Chr(34) WScript.Sleep 500 WS.AppActivate strExe WScript.Sleep 500 WS.SendKeys "^l" Set WS=Nothing WScript.Quit()
妹に入れますねん
609 :
デフォルトの名無しさん :2014/12/20(土) 09:05:52.58 ID:m+ssCFWe
>>608 このスレに来てまでExplzhの作者をからかうとは何て奴だ
' 0.1秒単位で好きな時間ウェイトをかけるスクリプト Option Explicit Dim WshShell, lngSec, corAg Set WshShell = CreateObject("WScript.Shell") Set corAg = WScript.Arguments ' lngSec = 10 ' 引数省略時は待ち時間を1秒(=10×100ミリ秒)とする If corAg.Count > 0 Then lngSec = corAg(0) lngSec = CLng(Trim(lngSec)) * 100 WScript.Sleep lngSec ' Set WshShell = Nothing Set corAg = Nothing WScript.Quit()
何処が便利なの?
DOSコマンドで実行できるんでしょ 普通は1秒単位でしかできないから
sleep.exeは同名フリーソフトまたは別売りリソースキット内の物を使うしかない timeoutコマンドはVista以降のWindowsにしか搭載されてない上に、1秒単位でしか待ち時間を指定できない >610なら古いWindows95などでも(WSHがあればの話だが)そのまま実行できたはず
まんどくさいなぁ・・・オレならこうする echo wscript.sleep 3000 >temp.vbs & cscript temp.vbs あと、1秒単位のラフなsleepなら、pingを流用するのが定石じゃなかろうか
ブロックスコープをやりたいのだが Rem Blockscope.vbs Option Explicit Sample Function Sample() Dim I I = 10 I = Used Msgbox Typename(I) 'Variant() Rem I = 20 'Error at Erase I Rem Set I = Nothing 'Error at Erase I Erase I End Function Function Used() Dim J() Used = J End Function 人力でErase I てのがバカっぽい なんとかなりませんか
616 :
マッハ五等 :
2015/02/26(木) 00:43:19.72 ID:DaJNGHwl