VBSで便利なプログラムを作れスレ

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

(例○○を自動処理してくれるプログラム)
2011/01/28(金) 14:52:47
>>336
目的はホットキーに埋め込まれたマクロの実行をする際に

その実行するモードがいま何になっているかをキーを押した時に数秒デスクトップ上に表示させるためです。

2011/01/28(金) 20:13:40
>>335だけ見ると、そんなの簡単じゃんって思うが。>>337は意味わからんわ。
2011/01/29(土) 01:00:36
何か文字列を数秒間デスクトップ上に表示させるってだけなら、
もし俺ならVBSではなく以下のバッチファイルで手っ取り早く済ませるんだが…

@ECHO OFF
ECHO 表示したい文字列
PING 0 > NUL
PING 0 > NUL
EXIT
2011/01/29(土) 07:18:06
それ、"デスクトップ上に"ではなく"ウィンドウ内に"だろ

それで良いならわざわざバッチファイル使わずWScript.ShellのPopupで良いはず
2011/01/29(土) 08:29:29
>>338-340
具体的なイメージで言うと
透明ウィンドウにテキストのみ表示するかバルーンメッセージ的なものを考えていたのですが
VBSで透明ウィンドウはできないっぽいのであきらめようと思います
2011/01/29(土) 09:14:11
まあ外部COM使えばどうにでもなる話ではあるが、
それ言うと他も全て「COM使え」で終わってしまう。
343デフォルトの名無しさん
垢版 |
2011/01/30(日) 22:09:09
しまうね
2011/02/01(火) 21:14:34

       +           +
         +      +
    +     シマウネ━━━━━━━!!!!  +
          /・/\__       +
     +    丶'\||||||||||)〜  +
             << ̄>/    
      _|\∧∧∧MMMM∧∧∧/|_
     >                  <
  ─ / ──┐  /_   /_ヽ|  |ヽ  ム ヒ | |
 ─ /    / / ̄ /   ̄/  | ̄| ̄ 月 ヒ | |
 __ノ   \    _ノ   //\ / | ノ \ ノ L_い o o
2011/02/01(火) 23:48:04
よろしくお願いしまう
346デフォルトの名無しさん
垢版 |
2011/02/08(火) 22:16:59
VBスクリプトで起動時にリモートデスクトップをマルチセッションで同時起動するスクリプトを書きましたよ

ttp://xbmc.inpane.com/main/omake/windows.php#rdp
347デフォルトの名無しさん
垢版 |
2011/02/09(水) 18:09:40
質問です。

フルパスファイル名が書かれているテキストファイルを参照し、ファイル有無をチェックするやり方を教えてください。また、テキストファイルに記述されていないファイルが存在する場合もNGとしたいです。
2011/02/09(水) 19:43:41
>>347
詰まる部分があるとは思えない初歩的なプログラムな気がするんだが。
とりあえず書いた所までどこかにアップしてみてよ。
2011/02/09(水) 20:24:29
どこかにアップっていうか、ここに貼ればいいんじゃね?
そんな長いコードにはならんだろ
2011/02/09(水) 21:15:33
いや、かなり長いコードになるかもよ。
前半の
>フルパスファイル名が書かれているテキストファイルを参照し、ファイル有無をチェックする
コレは簡単だよな。悩むこたぁない。

問題は後半のコレ
>テキストファイルに記述されていないファイルが存在する場合もNG
やっかいだぜ?

考え方としては、前半の処理と、後半の処理は完全に分けて
2本の別のプログラムを書くような気持ちでコーディングすればいいんじゃないかな。
2011/02/09(水) 21:36:33
何処が厄介?

テキストに書かれたパスを連想配列に入れて
対象フォルダ内のファイルをループ回しながらExistsでチェックするだけだろ
2011/02/09(水) 21:59:35
ほらね。わかってない。
2011/02/10(木) 01:35:05
解ってないのは350。恥ずかしい、、、
354347
垢版 |
2011/02/10(木) 08:01:03
皆さんありがとうございます。

前半部分は大体イメージをつかめているのですが、後半部分でつまってます…
2011/02/10(木) 08:06:41
とにかく自分で出来る部分まで書いて貼るなりどこかにアップするなりしろ

話はそれからだ
2011/02/10(木) 11:30:54
つまり全ドライブの全フォルダを検索しなきゃならんな
2011/02/10(木) 11:48:49
普通に考えれば、対象は一部(特定のフォルダ以下)だろ
2011/02/10(木) 13:09:11
>>357
どうしてそう言い切れる。
本人はフルパスファイル名、つまり絶対パスを指定しているんだぞ
特定フォルダでいいなら相対にするだろ常識的に考えて
2011/02/10(木) 13:17:09
昨今、相対パスが使われるのは相対パスでなければ困る場合のみで
どちらでも構わない場合は絶対パスを使うことの方が多い件について。
2011/02/10(木) 15:02:25
>>347が情報小出しにするからイカンのだ
こういう質問者って大体足りてないよな色々と
2011/02/10(木) 20:22:36
>>359
zipとかの書庫ファイルはなんで相対パスで格納してるか理解できる?
何のためにカレントディレクトリって概念があると思う?
何でわざわざ%SystemRoot%とか環境変数を定義してるのか疑問に思わない?
2011/02/10(木) 20:26:38
相対パスが絶対的に必要ではない場合はって話をしてるのに
全く的はずれな例を持ってきたな

そういうことは相対パスそのものが無意味とか宣ってる奴に言ってやれ
2011/02/10(木) 21:27:12
どちらでも構わない場合、ってどういう場合だよ
レスにアンカー付けるときにわざわざ
http://hibari.2ch.net/test/read.cgi/tech/1170492587/362
なんてする奴はいないだろ
逆に「絶対パスが使われるのは絶対パスでなければ困る」時でしかないだろ
2011/02/10(木) 21:49:46
狭量なやつw
2011/02/10(木) 22:58:35
>>361
質問者はzipファイルの中身まで調べるなんて設問はして無いだろ。
なんでオマエは論点をずらそうと必死なんだ?
366デフォルトの名無しさん
垢版 |
2011/02/12(土) 11:50:55
vbscriptでmicrosoft bluetooth stackの接続情報を得ることはできませんか?
2011/02/13(日) 08:23:52
"E:\hogehoge\hoge"
というフォルダが存在した場合、そのフォルダを削除。
存在しなければそのまま終了。

という簡単なスクリプトを教えていただけませんでしょうか?
2011/02/13(日) 08:51:10
いいよ。

で、どこを教えて欲しいの?
まさか1から10まで丸投げで全部書いてとは言わないよね?
しかも質問スレではなく、自分の書いたものを晒すスレで。
2011/02/13(日) 14:02:19
いや○投げスレじゃね?ここ。
2011/02/13(日) 14:18:16
>367
VBSじゃないが、これで事足りないか?
if exist "E:\hogehoge\hoge\." rd/s/q "E:\hogehoge\hoge"
371367
垢版 |
2011/02/13(日) 14:31:51
なんだか趣旨がよくわからないスレでしたが、どこへ質問すれば良いのかわからず、とりあえず書き込んでしまいました。
申し訳ありません。

>>370 さんのバッチファイルで満足な結果が得られました。
まさか1行で済むとは思いもしませんでした。

ありがとうございました。
2011/02/13(日) 14:32:35
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
みたいな感じで、エラー発生時以外はすべて返ってくる結果を捨てたいのです。
そのまま書いてもうまく動かないです。
2011/02/15(火) 00:05:35
つgoogle [wscript Exec 標準出力]
375デフォルトの名無しさん
垢版 |
2011/02/15(火) 00:17:00
>374
トラップされるって事は、読み出さない限り無視されるって事ですか?
2011/02/15(火) 00:19:20
> 標準出力に結果を出さない
はipconfig.exeが対応してなきゃ出来ないよ

WSH(EXEC)が受け取った標準出力を
「コンソールウィンドウに表示しない」
ならどうにでもなるけど
377デフォルトの名無しさん
垢版 |
2011/02/15(火) 00:36:44
>376
コンソールウィンドウに表示しないと、1 > nul って同じ扱いですか?
質問ばかりで申し訳ない。
2011/02/16(水) 00:51:30
ipconfigはネットワーク設定を確認する為のプログラムなんだから
エラーになるのはexeが見つからない時ぐらいじゃねーの。
ネットワーク設定されて無い時は"設定無し"って正常終了するんだし
2011/02/16(水) 02:01:02
>>373
ttp://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_03.html
2011/02/16(水) 09:26:36
pingで表示したくなくて、WMI使ったな

こんな感じだったと思う。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PingStatus " & _
"Where Address = '" & hoge & "'")
2011/02/16(水) 13:03:00
何かすげぇな…

CreateObject("SAPI.SpVoice").Speak"Wellcom to VBScript."
2011/02/17(木) 05:50:16
CreateObject("SAPI.SpVoice").Speak"KoNoHaYaSaNaRa. Ieru. Null Po."
2011/02/17(木) 12:24:42
CreateObject("SAPI.SpVoice").Speak"Gutt."
2011/02/17(木) 22:51:24
"null poor" "gad"にしたらそれっぽく聞こえるようになった
2011/02/17(木) 23:00:22
こんな化石ネタに乗ってくる奴が居るとは、、、
2011/02/20(日) 20:13:23.14
ほるだー内にあるoutlook6のメッセージファイル.emlを検索して、エクスプローラにリンク表示するプログラムを作ってます
が、.emlが開けない
アウトルックを軌道してクリックしたメッセージを表示したいのですが、どう書けばいいのでしょう。
wshshell.runでは出来ませんでした……
2011/02/21(月) 01:17:30.92
ISPの切断>接続をしてくれるPGをどなたかキボン!
telnetでルータ(Aterm)に入って、PPPoEを再接続してくれる物です。
2011/02/21(月) 07:28:22.68
だからここは自分で作って晒すスレで
質問スレや制作依頼所じゃないと何度言えば…
2011/02/21(月) 09:56:31.24
ほかにいくか……VBSじゃなくてIEの問題な気がしてきた
2011/02/21(月) 21:02:49.69
丸投げされるのはムカつくけど多少の質問ならいいんじゃね?

>>387
telnetで入れるならTeraTerm等でマクロ作ったほうが簡単。
もっとも擬似GUIだとお手上げだが。
2011/02/26(土) 01:19:27.04
昔、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の仕様ですか?
2011/04/09(土) 21:50:40.23
>>392
 >>388
2011/04/10(日) 00:04:08.05
>>393
 >>390
2011/04/10(日) 00:16:29.59
>>390を引き合いに出すなら、それを引き合いに出した>>394自身が答えてやらないとなw
2011/04/10(日) 06:02:52.24
>>392
UACというかVistaからの仕様です
例え管理者といえど他人の敷地には許可無く進入は出来ません。
今までのウィルスならこれで全て無力化される、そんぐらい厳しい仕様。
因みにAdminとAdministratorは別物だよ。
XPまでのユーザー管理とは似た非なるものと認識しておこう。
ポリシーいじれば同じ感じに出来るけどめんどい。
397392
垢版 |
2011/04/10(日) 19:18:31.68
>>393
>>394
質問スレじゃないの理解してませんでした。申し訳ない。

>>395
フォローありがとうございます。

>>396
かなりめんどくさそうですね。手作業でやった方が速いのかも…
アクセスフォルダに所有権とかつけてみて、もうちょっとやってみます。
ありがとうございます。
398デフォルトの名無しさん
垢版 |
2011/04/23(土) 17:43:43.24
唐突ですがウサギ型ロボットをR2D2にするためのVBSを公開しましたよ
ttp://xbmc.inpane.com/sub/nabaztag/
2011/04/23(土) 23:30:59.78
会社の共有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これくらいも答えられないのかよ
死ねっ!能無しども
会社でもろくな仕事してないんだろうなぁ・・
2011/04/27(水) 22:11:12.36
>>400
あんまし読んでないしてきとーだけど再帰処理っぽいなと思った。
見つかるまで自分自身を呼び続けたらいいべさ
2011/04/27(水) 22:38:33.12
>>825
http://mackerel.axfc.net/uploader/Img/l/7923901924/v/Img_114179.jpg
2011/05/20(金) 13:19:16.79
ここで聞いていいのか分かりませんが、分かる方いたら教えてください。
コマンドラインでフォルダを圧縮するためにZIP.VBSというのを使っているのですが、
MakeZIP.VBSでフォルダを圧縮する際、zipファイルにフォルダ名が格納されてしまいます。

photo
 ├aa.jpg
 └bb.jpg

上記のような場合に、zipファイルにphotoフォルダも格納されます。
これをphotoフォルダを格納せず、ファイルのみ格納するにはどこを修正すればよいのでしょうか。
よろしくお願いします。
2011/05/20(金) 14:38:03.93
そもそもスレ違いだが、それ解らないレベルならZIP.VBSなんか使わずに
コマンドライン型のアーカイバツール使えよ。
GUIで予め設定しておけば渡したフォルダの中身だけ圧縮してくれるものなんて
いくらでもあるから。
2011/05/23(月) 11:47:33.82
修正も何もコマンドラインをまず書けよ、なっ?
2011/06/05(日) 10:08:34.52
ブ・・・vbs・・・
わしは・・ワシは今までこんな素晴らしい言語があるなんて知らなかった・・・!
APIなんかいらないじゃん!
2011/06/05(日) 11:18:49.84
VBSにD&Dしたものを他のソフトのウィンドウへD&Dとして受け渡すことは可能ですか?
2011/06/05(日) 18:56:55.67
ファイルへのD&Dなら可能
これは単なるコマンドライン実行なので

ウィンドウへのD&Dならデフォでは不可
専用のCOMでも作るか探すかすれば出来ないことはないだろうけど
2011/06/06(月) 00:45:23.45
サンプルをいじることしか出来ない私には手に負えないですね…
諦めで別な方法を模索してみます
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スクリプト内
でやろうとするにはどうすればいいのでしょうか?


2011/06/14(火) 02:45:14.28
\<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
2011/06/14(火) 02:45:45.67
' 書き込みの前から' 正規表現パターンを指定するへループして繰り返せればなと考えているのですが上手く思いつきません。
もし、わかるかたがいらっしゃれば教えてください。よろしくお願いします。
2011/06/14(火) 04:43:26.73
やりたい事がいまいちわからないが、
複数回やりたいんであれば、
正規表現パターンを配列に入れて、ループするだけじゃないかな〜
2011/06/14(火) 07:48:13.52
>>411
objRep.Pattern = "<(""[^""]*""|\'[^\']*\'|[^\'"">])*>"
こういうことじゃなくて?
2011/06/14(火) 19:38:12.72
なんでdat使わないで、
わざわざhtmlなんて難しいものを使う?
2011/06/15(水) 11:59:02.32
ちょっと見てみた、確かにhtmlよりdatのほうが容量4割減でおいしいんだけどタイトル取得できないのとコメ番号ないから置換するときどうやって割り当てようか思いつかない
2011/06/15(水) 12:03:32.40
よくみたら1行目の最後にタイトルあったわ
2011/06/15(水) 19:08:23.10
デスクトップから2ch検索するvbs作ってるんだけど、
変数の件でわからないところがある。
Dim 変数 で宣言する
このとき変数が、例えば2churlとかだと識別子がありません。とエラーがでる

churlなら問題ない、どうして先頭に数字がくるといけないんですか?
識別子がありません。
2011/06/15(水) 19:30:46.07
先頭に数字が来ることを許すと
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
2011/06/19(日) 01:45:19.27
選択プルダウンボックスとか作れたら便利になるのになぁ
2011/06/19(日) 02:28:19.04
VBSで選択プルダウンボックス使ってるけど、何か?

VBSというかWSHは、COM、OCXで拡張してナンボなんだから
欲しいけど言語に備わってない機能は、外部で補えば良いだけだ
2011/06/19(日) 07:13:15.16
自分専用ならそうだろうけど、
comはインストールの壁が越えられない
2011/06/19(日) 07:17:25.40
超えられるけど、何か?
USBメモリで持ち歩いて使ってる
COMのレジストリ登録を自動化してるとかではなく未登録で
2011/06/19(日) 07:43:48.47
自信満々で「超えられるけど、何か?(キリッ」だもんなあw
2011/06/19(日) 08:09:56.20
自信満々に言った「comはインストールの壁が越えられない(キリッ」
を否定されて悔しかったの?
2011/06/19(日) 08:19:38.57
GetObject
2011/06/19(日) 08:29:07.02
USB股間に忍ばせて持ち歩く男の人って・・・///
きみの端子にプラグ★イン!
429≠423
垢版 |
2011/06/19(日) 10:02:11.33
>>426
あのね、ある程度の会社ならね、勝手にツール類をインストールする事ができないのね。

USBメモリも、使用禁止、あるいは相当制限されているのが一般的なのよ。
2011/06/19(日) 12:12:42.62
なんか勘違いしてる子が出てきたなw

あのね、comにインストールの壁なんて無いって話であって
USBメモリなんて、全く関係ない話なのよ

それと、『ある程度』レベルの会社だと、勝手にツール類をインストールする事ができないところが多いけど
『ある程度』を超えたまともな会社だと、勝手にツール類をインストールする事が出来るところも多い
セキュリティーが確立している上に、VBAやWSHなどの元から入ってる言語でいろいろ作れる奴が多いから
外部からのツールのインストールを制限しても、元から入ってる言語でツールが作れちゃうから意味無いw
逆にまともな会社だでツールのインストールを制限している場合は、WSHもVBAも制限してる
2011/06/19(日) 18:14:48.56
≠423とか必死に否定すると、余計に・・・・・( ̄ー ̄)ニヤリッ
2011/06/19(日) 21:27:41.80
「勝手に出来る」って方がおかしいだろ
今の時代どこもピリピリしてるってのに。
単におまえさん自身か会社がその客に信用されてるってだけじゃねーの?
でも普通は申請式だと思うけど。他人の会社で勝手にてのはどうかと思う。
2011/06/20(月) 00:02:07.13
勝手にしてよいと許されていることを勝手にやる上で、何の咎があると?
なにか勘違いしてやいないか?
2011/06/20(月) 00:33:54.55
これは突っ込んであげたほうが良いのだろうか?
2011/06/20(月) 00:59:30.37
生温かい目で見守ってあげるのが良いんじゃないかと
2011/06/20(月) 10:20:41.11
batファイルは止められませんね
じゃぁバッチ最強じゃん
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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