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

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

(例○○を自動処理してくれるプログラム)
229227
垢版 |
2009/02/15(日) 15:22:14
事故解決しました
2009/02/26(木) 23:01:07
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"
2009/04/30(木) 22:38:51
EXCEL VBA みたいにステップインできるソフトってない?
2009/05/04(月) 01:07:57
コントロールパネル→ネットワーク接続の「ワイヤレスネットワーク接続」を右クリックして「修復」
これをVBSで実行できますか?
2009/05/04(月) 01:54:59
ipconfig /renew
2009/05/05(火) 19:33:28
>>230
私もこのような現象がありました。
VBScriptでキーを送るのと、
物理キーボードでキーを送るのは、
別物として扱われる事があるのでしょうか?
2009/05/12(火) 22:25:37
vbsの管理者実行ってできるんかな?

インスコフォルダ削除のスクリプトとかをVistaで実行すると、

アクセス拒否されるじゃん?

あぁゅぅのって、管理者実行でアクセス出来ると思うんだけど・・・

分かるヤツいない?
2009/05/13(水) 00:50:00
Vista の UAC の話なら

set Shell = CreateObject("Shell.Application")
Shell.ShellExecute WScript.FullName, "MyScript.vbs", null, "RunAs"

のように ShellExecute に RunAS パラメタを付ければ管理者権限で実行できるらしい

上の例は一般権限のスクリプトから外部の別のスクリプトを管理者権限で呼び出す例だが
WTL のセットアップスクリプトに、フラグ制御で自分自身のスクリプトを再度管理者権限で呼び出したり、
UACの判定とかのやり方が入ってるから詳しくはそちらを見てくれ
2009/05/13(水) 19:52:57
おぉw

レスサンクス!(・∀・)

でも、またエラーでたな・・・
二個くらい出てきて、一個目がコレ↓↓
━━━━━━━━━━━━━━━━━━━━━━━━
スクリプト:  C\Users\*****\Desktop\\TEST.vbs
行:    14
文字:   1
エラー:  書き込みできません。
コード: 800A0046
ソース:  Microsoft VBScript 実行時エラー
━━━━━━━━━━━━━━━━━━━━━━━━
二個目が↓↓
━━━━━━━━━━━━━━━━━━━━━━━━
スクリプト ファイル"C\Windows\system32\My Script.vbs"
が見つかりません。
━━━━━━━━━━━━━━━━━━━━━━━━
実行環境はWindowsVista HomePremium
テストでiTunesのフォルダを指定してやってみたが何故かエラー
レス↓ソースでし
ソースに問題があったら指摘してくれ
2009/05/13(水) 19:53:38
以下ソース↓↓
━━━━━━━━━━━━━━━━━━━━━━━━

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
━━━━━━━━━━━━━━━━━━━━━━━━━

長文失礼..........。
2009/05/13(水) 21:44:14
えー、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
2009/05/13(水) 22:07:38
お、一個エラー消えたヽ(・∀・ )ノ

まだ
━━━━━━━━━━━━━━━━━━━━━━━━
スクリプト:  C\Users\*****\Desktop\\TEST.vbs
行:    18
文字:   1
エラー:  書き込みできません。
コード: 800A0046
ソース:  Microsoft VBScript 実行時エラー
━━━━━━━━━━━━━━━━━━━━━━━━
のエラーが残ってまうな・・・;;

んー、このソースに使ってるスクリプトとかってどこで勉強できる?
URLor本トヵあったらそっちも覗いててみたいんだけど・・

ご指摘感謝感謝(´;ω;`人)
2009/05/13(水) 22:34:44
800A0046 ってのはアクセス権限のエラーなので、既にスクリプトの問題では
ないような気がする
最初、アンインストール時に残ったゴミでも削除するのかと思ったんだけど
まさかアンイントールせずにフォルダをいきなり削除しようとしてるわけではないよね

C:\Program Files\iTunes
にサービスなどのプログラムがあってまだ使われているなら権限の問題とは
関係なくフォルダの削除は無理だと思うけど
2009/05/13(水) 22:41:42
あぁー・・やっぱそうなるのかー

http://www.whitire.com/vbs/tips0186.html
コレとかで停止してからってのは駄目なん(・ω・`)?
2009/05/13(水) 23:06:26
ダメというか無理やりのファイル削除は、レジストリや作業ファイルのゴミが
残る可能性が高い
レジストリや作業ファイルのゴミがあると同じアプリを二度とインストールできなくなったり
最悪OSが不安定になったりするの普通やるものではない

そもそも何故正式な方法でアンインストールしないの?
2009/05/13(水) 23:40:01
やっぱそうかー;;
OS犠牲にしてまではしたくないな・・・

デスクトップにダイアログ常時表示させといて、選択した必要ないファイル・ソフトの削除を
チャチャッ♪っと済ませられるようにしたいなぁとか、他にも活用できそうだしねー・w・

http://www.whitire.com/vbs/tips0113.html
一応、知恵の糧になるようなものをうpってみる
レジストリのゴミ削除できるかなぁーって(ノ∀`*)
2009/05/17(日) 09:32:28
2つのフォルダを比較して
差分ファイルを指定フォルダにコピーすることはvbsで可能?
2009/05/17(日) 10:20:08
>>246
vbs自体にハッシュ比較の機能がないから無理
同じ名前、サイズ、タイムスタンプくらいの判定でいいなら当然可能
2009/05/17(日) 10:43:25
>>247
さすがにスクリプトでハッシュ比較すると
処理遅いだろうからそれで十分です
ありがとう、今から作ってみます
2009/05/17(日) 10:50:01
一度は全部読まんとハッシュも出ないから、全比較でいいんじゃね?
比較するにしてもfcとか使ったほうが早いけど。
2009/05/17(日) 13:19:10
VBSからIEを起動して、VBSでIE内のボタン押下処理した後、

「セキュリティで保護されていない接続へリダイレクトされようとしています。
現在のサイトへ送信中の情報は、セキュリティ保護されていないサイトへ再送信される可能性があります。続行しますか?」

っていうダイアログが表示されるのですが、このダイアログの「はい」のボタンを押下するには、VBSではどのようにすればいいのでしょうか?
2009/05/18(月) 08:45:15
処理に時間がかかる場合で
プログレスバー表示的なことが出来ればいいのだけど
みんなはどうしてる?
IEを使う方法はわかりにくいし
2009/05/18(月) 12:35:47
IEが嫌ならコンソールに出力でもしとけよ。
2009/05/18(月) 13:04:55
しとけよじぇねーだろ!

したらいいんじゃないですか!だろw
2009/05/18(月) 18:23:55
じぇ
2009/06/24(水) 00:20:51
   。
   ||
ヾ(o゚ω゚o)ノ゙ プニプニ!プニプニ!
   ||
ヾ(o゚ω゚o)ノ゙ 他板から乱入だ!プニプニ!
   ||
ヾ(o゚ω゚o)ノ゙ プニプニ!プニプニ!
   ||
   O
2009/09/21(月) 08:47:26
>>250
キー送信でAltとかTabとかSpaceとか送信して押せないかね。

>>251
HTAでプログレスバー作るのは?
IE(HTML)でやるよりソレっぽく仕上がるけど。
2009/10/03(土) 01:28:39
なんか完全に過疎っているな。

最近、業務での単純作業をvbsで作りこんでみて、使い勝手いいと気づいたんだが。

てか、いつもメモ帳で作っているだが、補完機能とかある軽量の開発環境ツールあったら教えて。
2009/10/03(土) 09:02:10
補完機能なんて使うほどのものじゃないからなぁ。
VisualStudioが一応対応してるんじゃあないか?
基本的にはVBAやVisualBasicに近いものだし。

TeraPadで色付けワードにVBScript関係のモノと
WSH関係のモノ追加したのでいつも書いてる。
2009/10/03(土) 12:38:11
即実行テスト出来るのでwpEditor使ってる
2009/10/05(月) 20:34:03
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 = "空港"

2009/10/05(月) 20:43:28
>>260
指定方法が違う
対象のHTMLソースを確認しろ
2009/10/05(月) 21:13:09
>>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()
263260
垢版 |
2009/10/06(火) 17:10:24
>>261-262
回答ありがとうございます。
http://www2s.biglobe.ne.jp/~iryo/vba/IE/index00.html
のサイトを見てフォームの指定をやってみたのですがvbaとはまた違うのですかね?
vbsのIE操作のやり方が載っているサイトなどありましたら教えてください。
2009/10/06(火) 17:49:49
>>263
基本は一緒でHTMLの知識
最初の>>260で動作しない理由は document.all("MT") では単独のコントロールを指定しないため
よって>>262ではフォーム名を入れて document.dict.MT で指定している

スレチだよな・・・
2009/12/23(水) 20:50:33
ワード、エクセル、画像、HTMLファイルなどを指定した順番に印刷し、
各ページにページ番号をつけることってvbsで作成可能ですか?
可能だったらどのように作成するかヒント教えてください。
2010/01/02(土) 21:28:53
ワードとエクセルならそういうフリーソフトがすでにあるけどな
ページ番号がついたかどうかは知らんが
2010/01/05(火) 23:43:38
>>265
VBSでそういう横断的でかつ細部に至る要求なんて書けたかなってかんじ
ユーザインタフェースへの入力を自動化するのならuwscとかあるんだけど
2010/02/15(月) 21:42:27
文字列連結.vbs

Function J(arrArg)
J = Join(arrArg, "")
End Function

Wscript.Echo J(Array(1, 2, 3, 4, 5, "A", "B", "C"))

&記号に疲れたひと用
2010/02/16(火) 23:08:22
どこで聞いたらいいのかわからないので、スレ違いを承知でお聞きしたいのですが、
現在Windows 2003 Serverメインの環境でActive Directoryの運用中です。

ユーザアカウントの新規作成は全て手動で行っているのですが、何とかWSHやADSIを使って
CSVファイルから一括で登録処理を行えるようにしたいと思っています。

しかし、プログラムはおろかコードやスクリプトなど今まで全くさわったことが無いので
ネット上で公開されているサンプルなどを見ても、何を意味しているのかがほとんどわかりません。
勉強するに当たって、参考になる書籍やサイト、別スレなどがあればアドバイスをお願いします。
2010/02/16(火) 23:16:13
>>269
このあたりが基本
http://technet.microsoft.com/ja-jp/scriptcenter/default.aspx
スクリプト一覧からカテゴリ別サンプルが探せる
271269
垢版 |
2010/02/17(水) 00:37:23
>>270
ありがとう。
そこも見たんだけど、そもそも一つ一つのメソッドがどういうオブジェクトを生成してるのかや、
何故それをしなければならないのか、っていうところからわからなくて困ってる。

Set objCommand = CreateObject("ADODB.Command")
なんかはドメコンに接続するときにおまじないのように書かれてるけど、これに限らず何をするためのものかわからないレベル。
例えば上記の構文だと、objCommandって変数にどういうオブジェクトが当て込まれてるのかや、
その内容を確認する方法すらわからなくて、ただただ途方に暮れてる。

Scripting guysなんかも読んでるけど、突然理解が追いつかなくなるんだ…
才能無いから諦めた方がいいのかと悩んでしまう
2010/02/17(水) 00:50:43
>>271
あきらめるの早すぎ。
ADOは一度使い方を覚えれば使いまわせるよ。

VBSでWSHやる前に、
ExcelのVBE環境で色々試してみてはどうか?
ADOもADSIも使えるよ。
デバッガで変数の中身を確認できるので、イメージが膨らむはず。
2010/02/17(水) 01:06:45
>Set objCommand = CreateObject("ADODB.Command")
>なんかはドメコンに接続するときにおまじないのように書かれてるけど、これに限らず何をするためのものかわからないレベル。
>例えば上記の構文だと、objCommandって変数にどういうオブジェクトが当て込まれてるのかや、
>その内容を確認する方法すらわからなくて、ただただ途方に暮れてる。

気にすんな
ほとんどの自称プログラマはそこらへんのサンプルコピペして
意味も判らず使ってるだけのレベル
わからんでもこねくりまわしてるうちにとりあえず動く

全部判って書いてる香具師の方が少数だから安心汁
274269
垢版 |
2010/02/17(水) 01:23:56
>>272>>273
アドバイスサンクス。
3ヶ月程悩み続けてたんだが、プログラムとスクリプトの違いすらわからないくらいに初心者なもんで、
参考になる本も探してみたけど、どれも求めているものとは違うから挫けかけてた。

ExcelとかAccessのVBAだと、変数の宣言とかコマンドのプロパティが若干違ってくるから
あえて敬遠してたけど、そっちでも色々試してみる。
もっとも、WSHだと変数はWScript.Echoで確認できるけど、生成したオブジェクトの確認方法が不明だったから
コピペしてきたサンプルが何のために何をしてるのかわからなくて、
その度に途方に暮れてたけど、ちょっと頑張れそうな気がしてきた。

また分からなかったら初心者丸出しの質問をするかもしれないけど、
とりあえず明日から改めて出直してくる。

本当にありがとう!!
2010/02/17(水) 01:38:07
キーワードと "MSDN" をあわせてググレばたいていの説明は出てくる。
2010/02/21(日) 17:08:50
test
<pre>
p
</pre>
2010/02/21(日) 17:29:45
文字列の一部をコメントアウトする.vbs

Wscript.Echo "" _
& "aaa" _
& "bbb" _
& C("" & "ccc" _
) & "ddd" _
& ""

Function C(strArg)
C = ""
End Function

rem とかじゃだめなのさ
2010/02/28(日) 16:55:49
文字列の一部をコメントアウト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
2010/04/21(水) 01:42:59
だれかEXECメソッドの使い方教えてください;;
ググっても分からない。。
2010/04/21(水) 06:59:22
wordの.docファイルに埋め込まれた画像をbmpで取り出すプログラムを書いています
Office2003以降のwordがインストールされているPCからだとうまく取れたのですが
OfficeXP以前のwordがインストールされているPCだとうまく動きません
どちらもword2000形式で保存されているファイルに対して操作しています
OfficeXP以前のwordがインストールされているPCでも動くように書くにはどうすればよいですか
2010/04/21(水) 07:42:42
>>279
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=e74494d3-c4e1-4e18-9c6c-0ea28c9a5d9d
scd56jp.exeが日本語版ドキュメントだったはず。
2010/06/09(水) 01:05:23
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を作成できないそうです
2010/06/09(水) 02:17:23
>>282
XPでファイルを選択するためのダイアログ ボックスを表示するには?
の間違いだろ。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct07/hey1026.mspx
2010/06/28(月) 17:05:36
>>282
http://technet.microsoft.com/ja-jp/scriptcenter/ee695752.aspx
>UserAccounts.CommonDialog オブジェクトは、セキュリティ上の問題から Windows Vista で廃止されました。
285デフォルトの名無しさん
垢版 |
2010/07/05(月) 11:44:59
VBSって何?
2010/07/05(月) 11:59:08
Virtual Big Size
2010/07/05(月) 22:22:36
VESA BIOS Services
2010/07/05(月) 22:46:32
Vagina Burst Shower
289デフォルトの名無しさん
垢版 |
2010/07/06(火) 09:19:02
Visual Browsing System
2010/07/24(土) 17:30:04
数万件のデータをテキストへの書き出す方法で、軽くて早くしたいわけだが
書き出し方法としては

・データごとに直接書き込み
・変数に格納してから一括書き込み
・クリップボードに格納してから一括書き込み

の他になにかある?
配列に格納してエクセルシート経由くらいしか思い付かない
2010/07/26(月) 11:43:18
元データの格納場所がDBならSQLって手もあるな
2010/07/26(月) 13:40:13
複数箇所のフォルダ管理だからDB化は難しいかな

そして変数もクリップボードも足りなくて使えないや
数万件ファイル名に各々文字列連結して全部つぎ込むとかムリゲ
txtに書き出すなら配列に格納する意味無さそうだしなあ
2010/07/26(月) 14:02:03
クリップボード出来ないことはないが、テキストに書き出す20倍くらい時間かかってる
IEクリップボードのせいか?
VBなら早いのに

バックグラウンド処理するのにこんなに時間も負荷もかかるなら、クリップボードは使えないな
2010/07/26(月) 18:15:12
質問です!
クリップボード使ってテキスト書き出しってど〜やるの?
2010/07/26(月) 18:37:47
IE使うのが一般的かな
上がクリップボードから読み出し
下がクリップボードへ書き出し
書き出すときはクリップボードをクリアしてから格納すること
Microsoft Forms 2.0設定できればクリップボードも早くなるかもしらんが

objIE.document.parentWindow.clipboardData.GetData( "Text" )
Document.parentWindow.clipboardData.setData "text",""
2010/07/26(月) 18:40:17
いや、その後に「一括書き込み」するんでしょ?そっちのやり方。
2010/07/26(月) 19:17:44
何を聞きたいのかよくわからんが・・・
objOutFile.WriteLine strDate で書き込めるだろ
改行したいならクリップボードに格納するときに VBCRLFでつなげればテキストには反映される
2010/07/26(月) 19:27:58
いや、なにか「速い」機能があるのかと思って・・・

VBだと速いの?
2010/07/26(月) 20:30:10
そういうことか

前エクセルVBA使ってたときは、クリップボード経由のデータ貼り付けってかなり早かった気がする。
とはいえエクセルだと配列→セルが強力すぎるからあんまり使わないんだけれども。
300デフォルトの名無しさん
垢版 |
2010/09/30(木) 20:04:17
Set objFSO = CreateObject("Scripting.FileSystemObject")

set objOpenFile=objFSO.OpenTextFile("C:\hoge.txt",1,false)

msgbox "ロックちゅ〜"



なんかもんだいありまっか?
2010/09/30(木) 20:45:49
ファイルロックを同期に使うなとあれほど
2010/10/22(金) 12:09:59
WshShell.Environment("USER").Item("UNKO") = "うんこ"
Wscript.Echo WshShell.ExpandEnvironmentStrings("%UNKO%")

結果:%UNKO%

値を「うんこ」に設定できません。自分で自分の環境変数は変えられないのですか?
303302
垢版 |
2010/10/22(金) 12:35:04
自己解決しますた
2010/10/25(月) 20:30:58
以前、自動生成するファイルの拡張子に
.unk ってのを使ってたら(内容不明の場合に作るファイル)
「別に拡張子はナニつかってもいいけどさぁ
 "うんこ"ってのは、ちょっとどうなのよ」
て先輩に言われたことがあったのを思い出した。
305デフォルトの名無しさん
垢版 |
2010/10/26(火) 01:31:14
shine.unko
こんな感じですか?わかりません。
2010/10/26(火) 18:43:40
>>305
unknownだっつってんだろダラズ
2010/10/26(火) 21:42:34
うんこなうんか
2010/10/29(金) 23:53:34
>>304
Lotus Notesなんかも添付ファイルが理解できない時に吐くみたいだね>unk
個人的には3文字中「un」で2文字使うのはどうかと思うので
「UKN」の方が好きだけど(天気図等で使うが少数派…)

いっそのこと3文字にこだわらずに拡張子を「.unknown」にしちゃえば?
(dir /xなど)8.3文字表示で見ると、ちゃんと「.unk」になるし
2010/10/30(土) 03:10:54
>>308
なるほど、 .ukn か。

.unknownでもまぁ問題は無い気がするが
.unk でも十分伝わると思うんだ。
うんこって読む奴がうんこ。
2010/10/30(土) 09:52:51
むしろunkでうんこって読める先輩って
kwsk、ktkr、wktk、ksk、gkbrみたいなアブジャド系表記に慣れてる2chねらなんじゃないのかw
311デフォルトの名無しさん
垢版 |
2010/10/31(日) 22:53:19
他コンピューターのパスを返す時に、ネットワークドライブ(\A〜Z)ではなく、
\\サーバー名\フォルダ〜というようにする方法はありますか?
2010/11/01(月) 00:28:50
あります
2010/11/06(土) 00:05:55
おまえ、わざと意地悪してるだろ
同僚や部下から嫌われるタイプだな
2010/11/06(土) 00:06:48
死ねよ
2010/12/25(土) 06:45:27
久しぶりになにかをVBSで書きたい。
2010/12/26(日) 21:35:06
じゃあ「何か」を書いてみればいい。
317デフォルトの名無しさん
垢版 |
2011/01/02(日) 00:13:10
MsgBox "Hello World!!"
2011/01/02(日) 00:18:17
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
2011/01/04(火) 13:34:29
TEXTファイルから
特定の文字や特定の行を抜き出す
スクリプトってない?
三次元測定機からCADに
XYZ手動で打ち込むのもういやになった。
2011/01/04(火) 15:12:23
>>320
ある。というか簡単だよ
テキストファイルを開いて1行ずつ読みながら正規表現等でチェックしていくだけ
2行以上に渡るデータだと少し面倒だけど大した手間ではない

でも仕様によってはわざわざ作らずに
SakuraエディタなどのテキストエディタのGrep機能で充分だったりするけど
2011/01/04(火) 17:00:53
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 等のファイル名で保存してください
325323
垢版 |
2011/01/04(火) 23:46:30
追記
ソースを短くするために複数ファイルのドラッグ&ドロップには対応していません
# 複数の関数に分かれていたのを1つにまとめたりしたので

↓辺りを参考にすれば変更は容易です
ttp://msdn.microsoft.com/ja-jp/library/cc364473.aspx
2011/01/05(水) 10:04:58
プログラム板凄すぎワロタw
ありがとうございます!
327デフォルトの名無しさん
垢版 |
2011/01/07(金) 15:49:03
どなたかリムーバブルメディアを取り出すvbs作ってください
お願いします
ジャンクのスロットローディング式のドライブ買ったらボタンがありませんでした
328デフォルトの名無しさん
垢版 |
2011/01/07(金) 16:53:37
011100111111011111
011110000111101111
001111100011110110
111010101101011101
100011101010101010
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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