X



VBSで便利なプログラムを作れスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2007/02/03(土) 17:49:47
素人丸出しお粗末で遅くてもいいので
いますぐ使えるちょっぴり便利プログラムを作れ

(例○○を自動処理してくれるプログラム)
0003Windows厨&rlo;wwwね死はCAM。すでXUNILチンアやや
垢版 |
2007/02/03(土) 17:54:41
2ch自動書き込みスクリプト・・・    はVBSなんかじゃなくちゃんとしたプログラムが既にあちこちに存在するか
0007デフォルトの名無しさん
垢版 |
2007/02/08(木) 22:08:15
日経ソフトウェアだったかに乗ってたのですが 動きません 助けて

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)
00087
垢版 |
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
0012デフォルトの名無しさん
垢版 |
2007/02/09(金) 02:01:47
まぁ、COBOLの冗長さには勝てないがな
'VB
For I = 1 To 10
Next

*COBOL
PERFORM VARYING I FROM 1 BY 1 UNTIL I <= 10
END-PERFORM
0015wol.wsf
垢版 |
2007/06/03(日) 10:59:59
<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>
0016computer.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もやってみると意外とできるもんだ。
0017デフォルトの名無しさん
垢版 |
2007/06/04(月) 23:41:38
VBSでダイアログを表示させることってできないものかな?
構造体は使えないはいろいろと細かいところで制約が多い。。
0018デフォルトの名無しさん
垢版 |
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はどうつくればいいんでしょうか?
0019デフォルトの名無しさん
垢版 |
2007/06/27(水) 23:06:22
>>18
ここれは便利なスクリプトを作ってくれとお願いするスレじゃなくて、
自発的に自分が書いた物を晒すスレのような気がするんだが。

漏れの場合は、取得したいファイル名を変数にしてして、毎回
FTPスクリプトを生成して実行する方法にしてる。

ちなみにアカウント情報はcsvにしてるが平文で書いてるので
取り扱いに注意してる。PASVが使いたい場合はGNU版を
使う事。

どっちかっつーとWSHスレ向きジャネ?そのまま質問しても罵倒
されるだけだと思うけど。


0020デフォルトの名無しさん
垢版 |
2007/06/28(木) 09:04:40
漏れの場合は、取得したいファイル名を変数にしてして、毎回
FTPスクリプトを生成して実行する方法にしてる。
上司にも同じこと言われましたね、。
なんとなくイメージできても、いざ作るとなると難しくて…
どう作ったらいいのかわからないですね。
0022デフォルトの名無しさん
垢版 |
2007/06/28(木) 10:19:50
open itsol01
i1125
i1125

get /export/home/backup/mysql/mysql_&YYYYMMDD&.tar.gz
loop
quit

と書いたテキストファイルをコマンドプロンプトで実行したら、指定したファイルは取得できました。
0025VBSって面白いのか?
垢版 |
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
0026VBSって面白いのか?
垢版 |
2007/07/22(日) 23:32:39
訂正 ×ここにメッセージでも ○メッセージ
まあなんでもいいんだが・・。
0027VBSって面白いのか?
垢版 |
2007/07/22(日) 23:36:33
これ便利じゃねえなそれに遊び心だな。
誰かウイルススレでもしよう・・・・。
0028デフォルトの名無しさん
垢版 |
2007/07/29(日) 00:14:47
質問なんだけど
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
0029名無し
垢版 |
2007/08/08(水) 20:23:43
無理でもない
0030デフォルトの名無しさん
垢版 |
2007/08/11(土) 17:05:13
CreatoShortcutで
NumLock状態の1をショートカットキーに適用したいのですが

Hotkey="Num 1"
Hotkey="NumLock 1"

どちらでもできません

直接作成は無理なのでしょうか?
0031デフォルトの名無しさん
垢版 |
2007/08/12(日) 20:21:53
俺もNumlockは悩んだ
なんとかいうAPI使って実行ファイル作ったけど無理だった
敗北の想い出が蘇る
0033デフォルトの名無しさん
垢版 |
2007/09/06(木) 20:53:01
こんばんは。
C#からVBSのFunction呼び出そうしてるんですが
複数の値を返すことができません。
教えてください。
0034デフォルトの名無しさん
垢版 |
2007/09/06(木) 20:54:08
C#側からvbsを走らせるときにC#側のFor文だと処理するたびに
vbsが走るのでだめでした。
vbs自体が複数値を返す処理をするためにはどのようにすればよいでしょうか。
値は、Excelのセルからとります。
0035デフォルトの名無しさん
垢版 |
2007/09/06(木) 22:08:15
俺が考え付く方法は次の2つ。
1. そのVBScriptの内容をC#へ書き換える。
2. VBScriptをC#プログラム内でホストする。
0036デフォルトの名無しさん
垢版 |
2007/09/06(木) 22:13:43
>>35
は1は実行済みですけどVBSにも全く一緒のコードを書くことになって
かなり冗長的なコードになるんですよ。
2もしたが取り出すとき複数の値をとるほうほうが不明です。
0037デフォルトの名無しさん
垢版 |
2007/09/06(木) 22:27:49
配列を返せばいいのでは?
それが無理なら、C#から戻り値を受け取るオブジェクトを渡すってのはどう。
0038デフォルトの名無しさん
垢版 |
2007/09/06(木) 22:33:48
>>37
配列を返すって考えましたけどVBScriptのリターン文ってありませんよね。
関数名 = 処理
↑こんな感じがリターン文なのかな。
0039デフォルトの名無しさん
垢版 |
2007/09/06(木) 22:40:58
そう。関数内では関数名と同名の変数が存在する。
型は関数の戻り値の型と同じ(と言ってもVBSは常にVariantだが)。
関数を抜けるときにその変数に入っていた内容が戻り値になる。

これはVB系一般で通用する文法。
0040デフォルトの名無しさん
垢版 |
2007/09/06(木) 23:14:36
なるほどね。けど、関数名と同名の変数が定義されてるって時点で
配列とか返せないと思うんですがいかがでしょう。
0042デフォルトの名無しさん
垢版 |
2007/09/07(金) 00:05:36
>>41
情報量が少ないから断定的な判断はできないんですよ。
0043デフォルトの名無しさん
垢版 |
2007/09/07(金) 00:10:31
>>40
Array関数で配列を作れる。
その戻り値を関数名の変数に代入すれば
配列を返す関数の出来上がり。
0044デフォルトの名無しさん
垢版 |
2007/09/07(金) 00:11:37
>>42
調べるのも大事なことだが、試すのだって大事なことだぞ

msgbox a()(2)

function a()
dim b()
redim b(10)
b(2)=100
a=b
end function

こんな感じで出来ない?
0045デフォルトの名無しさん
垢版 |
2007/09/07(金) 00:13:35
おおきにおおきに、明日試してみる。
しかし、型なしには驚いた・・・
0048デフォルトの名無しさん
垢版 |
2007/11/01(木) 17:26:59
JavaScriptなら<script src=a.js
VBSなら<script src=a.vbs ですか?
0049デフォルトの名無しさん
垢版 |
2007/11/01(木) 18:21:37
>>48
ああ拡張子はなんでもいいが
typeなりlanguage書こうぜw

それとタグは閉じような
気になってしょうがないw
0050デフォルトの名無しさん
垢版 |
2007/11/02(金) 13:45:30
PPPOEをVBSで切断できないですかね?
2つプロバイダ登録してあって、ショートカットで無理やり接続はできたのですが、
なぜだか切断の時に1%くらいの確率で失敗します。
(slect case でやって、引数を保持しているのですが何故か極まれに間違えます)
タスクトレイの接続の所では、何処に繋がっていても切断できますので、せめてこれが
呼び出せればSENDKEYSでなんとかなるんですが…
0051デフォルトの名無しさん
垢版 |
2007/11/02(金) 15:42:00
JavaScriptでの o = new Option(); をVBScriptに書き直すとどうなりますか?
0052デフォルトの名無しさん
垢版 |
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>
0054デフォルトの名無しさん
垢版 |
2007/11/04(日) 13:13:19
プリンタの管理ユーティリティにある自動電源ONオプションをタスク
スケジューラで週一自動実行したいんですけど、VBSで可能でしょうか?
0055デフォルトの名無しさん
垢版 |
2007/11/18(日) 23:11:59
HTMLのVBSで
<a href="javascript:f();void(0)">
というJavaScriptをVBSで書けますか?
0059デフォルトの名無しさん
垢版 |
2007/11/26(月) 08:03:28
BASP21でダウンロードソフトを作ろうと思っているんですが、
FTPだとFTPサーバーの名前を知らないとアノニマスでも接続できませんよね?
どうすれば良いのでしょうか?
0060デフォルトの名無しさん
垢版 |
2007/11/26(月) 16:00:11
>>59
たとえばスーパーに買い物に行きますよね
でもスーパーの住所を知らなければ買い物できませんよね?
どうすれば良いのでしょうか?
006159です
垢版 |
2007/11/26(月) 20:59:22
Iriaとかのダウンロードソフトはどうしてるんでしょうか?
HTTPからでもダウンロード可能なようですが、全くやり方が不明です。
勉強中の身でして、質問が多くなりますが、お願いいたします。

>60
そのスーパーの住所の調べ方を伝授してください
お願い致します
006559です
垢版 |
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ツールが許可もらってやっているように
思えませんので(失礼…)何かしら打開策があると思うのですが
0067デフォルトの名無しさん
垢版 |
2007/11/27(火) 09:23:50
>>65
> Connect("pc11.2ch.netのFTPサーバー", "ユーザー(anonymousでいける?)", "パス") 
> で繋いで 
> .GetFile("pc11.2ch.netのFTPサーバー/1170492587/*.*", "c:\dowsodata") 
> となると思いますが、 
いいえ違います
pc11.2ch.netのFTPサーバなんてありません
0068デフォルトの名無しさん
垢版 |
2007/11/27(火) 14:48:35
全員がこの後に及んでスレ違いと言い出さないのは、
あまりの事にあきれ果てているから?

>>59
釣られたのかもしれないが、マヂレスしておくと君の考えて
いる事は全くの見当違い。

ttp://www5e.biglobe.ne.jp/~aji/3min/index.html
ここのFTP、DNS、HTTPの所でも読んでくれ。

で、理解したら、これ以上聞かないでね。
006959です
垢版 |
2007/11/28(水) 08:57:51
すみません、質問を変えます!
<a href="*.dat">download</a>
を、VBSで書くとどうなりますか?
(ダウンロードしますか?と言うダイアログが出ます)
VBSで書いてる途中なのでできれば全部VBSで書きたいんです。

皆さんいろいろ教えていただいてありがとうございました
FTPはファイル交換、DNSはネット接続の中間、HTTPはHTMLを見るため
位の感覚で覚えていましたので、どうやってファイル転送機能なしでファイル転送するんだろう?
ドメイン(biglobe.ne.jp)の部分が同じなので探す方法があるのかと思い、質問しました。
興味が出ましたので、細かく調べようと思いますが、解らないところは「ネットワーク板」で
訊けばいいんですよね?
0070デフォルトの名無しさん
垢版 |
2007/11/28(水) 13:45:34
>>69
ネットワークの勉強ついでにVBSとかクライアントスクリプトも調べて来い
質問の意図が分からなさ過ぎる
きっと用語を正しく理解していない

> 興味が出ましたので、細かく調べようと思いますが、解らないところは「ネットワーク板」で 
> 訊けばいいんですよね? 
責任もてないので、「はいそうです」とは言わない
調べられなければ調べられるまで調べつくせ
007159です
垢版 |
2007/11/28(水) 20:59:50
>70
すいません、知りたかったのはIriaなどのHPを丸ごとダウンロードしてくるソフトが
どのようにダウンロードをしているのかを知りたかったんです。

よく考えたらこの命令は単純にアドレス指定してアクセスするだけですね、
ちょっとやってみます。

0072デフォルトの名無しさん
垢版 |
2007/11/28(水) 22:39:14
>>71
知らないのは罪では無い。
だが、知らないという事を盾にして、初歩的な事を人に聞きまくるのは迷惑。

>すいません、知りたかったのはIriaなどのHPを丸ごとダウンロードしてくるソフトが

こんな事は最早ネットワークすら関係無い。通信技術板で聞こう物なら、
即氏ねと言われてもおかしくない。

初歩的なhtmlを知っていてIriaを使っていれば、どういう仕組みで丸ごと
ダウンロードしているのか、一般的な知能を持っていればわかるはず。

まず人に聞くな。自分で考えろ。
0074デフォルトの名無しさん
垢版 |
2007/11/29(木) 02:24:51
>>72
html知っててもhttpの仕組みがわかるわけ無いだろ。

>>59
「XMLHTTP VBS」あたりでググればいくらでもサンプル出てくる。

でも、VBSでリストだけ作ってダウンローダーに渡すのがいろんな意味でおすすめ。
007559です
垢版 |
2007/11/29(木) 07:20:59
>72
ありがとうございます、貴方のおっしゃっているように、私のやろうとしている事は
ネットワークとはあまり関係がありませんね。

>74
XMLHTTPですね、ありがとうございます。
タグ辞典読んだり、「VBS ダウンロード」とか組み合わせてググっても
それに対応出来そうな命令が全く出てこなかったんで、困っておりました。
これでやっと点が線で繋がりました!!
0076デフォルトの名無しさん
垢版 |
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メソッドで作成する
ことは不可能でしょうか。可能とした場合はどのようにすればよいでしょうか?
なにとぞよろしくお願いします。
0078デフォルトの名無しさん
垢版 |
2007/11/30(金) 20:58:14
ドメインユーザーのSID(S-x-x-x....)
から、ユーザーID(Domain\UserID)を知りたいんだけど、
ActiveDirectoryにどんな方法でアクセスすれば良いですか?
ADSIを使うっぽいのですが、いまいちわかりません。
007976
垢版 |
2007/12/03(月) 23:26:26
>>77
ご指導ありがとうございます。
おっしゃってくださったことから、今もう一度やってみましたら確かに
今度は動作致しました!
昨日やったときはページが移動しなかったのですが、IE系のトラブルか何か
が重なっていたのかもしれません・・・、お手数おかけしてすみません。
ご指導ありがとうございました。
0080デフォルトの名無しさん
垢版 |
2007/12/08(土) 06:36:58
>>56
だめだ。それは結局JavaScriptを使っているから。
HTML内にVBSオンリーで同等の機能を実装してくれ。
0082デフォルトの名無しさん
垢版 |
2007/12/08(土) 15:04:43
>>81
VBSが分からないから日本語に着目して自己満足ですか。
はいはい、あなたは正しく理解し、適切な回答をなさいました。
キミにはたぶん質問者が知りたがっていることを回答するのは無理だね。
>>57は漢字が間違ってるし。
0089デフォルトの名無しさん
垢版 |
2007/12/10(月) 12:02:32
>>86
何を期待してるのかわからんが,
とりあえず「f()の後にvoid(0)を置く意味を知りたい」という要求の原因を教えてもらおうか
0092デフォルトの名無しさん
垢版 |
2007/12/11(火) 18:08:58
void(0);だけじゃ何の効果も示さないみたいな
f();は今のところ自端末じゃ何も設定されてなくて

voidの()内に後でチェックコードでも書くとか?

今は何を作るか知られたくないから意味のないコードしか書いてないとか
0093デフォルトの名無しさん
垢版 |
2007/12/14(金) 10:35:11
360: 2007/06/16 11:58:31 ??? [sage]
みんな最後にvoid(0)やfocus()を付けるのはなんでだぜ?

361:ぼけなす 2007/06/16 12:12:44 P+YI6MXb
>>360
Location Bar 本来の機能が邪魔することがあるから.
全体を function として記述してもうまくいくようだ.
0096デフォルトの名無しさん
垢版 |
2007/12/17(月) 11:54:28
Excelの2003と2007がインストールされた環境で、以下のVBSを実行すると2007が起動します。
2003を起動するには、どう書けばいいんでしょう?

Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.WorkBooks.Add()
ExcelObj.Visible = True
0097デフォルトの名無しさん
垢版 |
2007/12/17(月) 13:01:46
それってWindowsの設定の問題じゃないの?
xlsファイルを2003のExcelで動作するように設定すれば動くんじゃない?
0098デフォルトの名無しさん
垢版 |
2007/12/18(火) 01:05:13
>>97
すいません。説明不足でした。
常に2003を起動したいわけではなく、2003と2007を必要に応じて使い分けたいのです。
そういう区別はVBSでは無理なんでしょうか?

あと、regmonでVBS実行中に参照されるレジストリを調べてみたところ、どうやら
HKCR\Applications\excel.exeを見て、起動するアプリを決定しているようでした。
つまり、>>96のような書き方では最後にインストールしたバージョンしか起動できないのです。
0100デフォルトの名無しさん
垢版 |
2007/12/18(火) 04:06:22
>>99
ありがとうございます。さっそく調べてみたところ、

2000 → 9
2002 → 10
2003 → 11
2007 → 12

のように対応していることがわかりました。そこでプログラムを

Set ExcelObj = CreateObject("Excel.Application.11")

と修正してみたのですが、これではまだ2007が起動してしまいます。
もう少しオブジェクトの扱い方を調べる必要があるようです。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況