筑集眺餅 さん 2001年 08月 09日 20時 36分 22秒

To:チョコさん

初めまして。横やりですみませんが。

>実作業としては、c:\OK.BATがあれば、このバッチ(OK.BAT)を実行して、
>無い時にはC:\DATA\CHANGE.BATを実行させようとしています。
>ThenやElse以降の記述に、何か規定はあるのでしょうか??

これなら、素直に全部バッチでやるというのはいかがでしょか?

IF EXIST C:\OK.BAT GOTO OK
CALL C:\DATA\CHANGE.BAT
EXIT
:OK
CALL C:\OK.BAT

ダメ?

土屋 さん 2001年 08月 09日 18時 10分 18秒

To:たる さん

メモ帳で読み込まずに、そのファイルをFileSystemObjectで読み取る手もあるのではないかと。

ちなみに、pingの他、netstatなんかもおもしろいですね。

たる さん 2001年 08月 09日 17時 36分 08秒

To:土屋さん
この一つ前のレス

お、これは良いですね。
出力されるping.txtをそのスクリプトを実行しているときに文字列として取得したいんですけれど、何か良い案はありませんか?

土屋 さん 2001年 08月 09日 15時 29分 38秒

あ。DOCぢゃなかった。それと、objFileはobjFolderのつもりでした。

それでせっかくなので、2000サーバーの登録ユーザーをADOを使って読み取って、一覧をエクセルに書き出してみました。
(98からやると遅い・・・)

Set CN = CreateObject("ADODB.Connection")
CN.Provider = "ADsDSOObject"
CN.Open "Active Directory Provider"

Set CM = CreateObject("ADODB.Command")
Set CM.ActiveConnection = CN
CM.CommandText = "SELECT * FROM 'LDAP://ドメイン' WHERE objectClass = 'user'"
Set RS = CM.Execute

Set XL = CreateObject("Excel.Application")
XL.Workbooks.Add
XL.Visible = True
XL.ActiveSheet.Range("A2").CopyFromRecordset RS

RS.Close
CN.Close

土屋 さん 2001年 08月 09日 15時 19分 14秒

そっかぁ。PING走らせるときは、DOCコマンドをShellで走らせればいいだけだったんだぁ。(今ごろひとりで納得)
(とすると、FTPもできるのかなあ)

Dim strLogPath,strIP,strCommand
Dim objWS,objFS,objFile

strIP = InputBox("調べるIPアドレスを入力して下さい。","PING!")
If strIP = "" Then WScript.Quit

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFolder(objFS.GetParentFolderName(WScript.ScriptFullName))
strLogPath = objFile.ShortPath & "\ping.log"
If objFS.FileExists(strLogPath) Then objFS.DeleteFile(strLogPath)
Set objFile = Nothing
Set objFS = Nothing

strCommand = "command /c ping "& strIP & " -n 1>>" & strLogPath
Set objWS = CreateObject("WScript.Shell")
objWS.Run strCommand,1,True
objWS.Run "Notepad " & strLogPath
Set objWS = Nothing

ひろすけ さん 2001年 08月 09日 13時 51分 57秒

To たる さん

アドバイスありがとうございます。
早速確認してみます。
また、この件でお伺いするかもしれませんが、
宜しくお願いいたします。

ひろすけ

チョコ さん 2001年 08月 09日 13時 00分 45秒

To:むたぐちさん

先日はご回答ありがとうございました。
質問ばかりで大変申し訳なく思っています。
下記の件、いろいろ試したのですが、構文エラー等出たりします。

>> 例えば、ファイルの有無を調べて、あるなら次の作業を進めて、無いなら作業を
>> 中止するような事を行いたいのですが、どういう方法がありますか?
>> FileExistsメゾットを使うというのは判ったのですが、戻り値をどのように
>> 扱ったらいいか判りません。

>FileExistsメソッドの返り値は、ファイルがある場合Trueでファイルがない場合False
>です。
>あとは(VBSなら)If...Then...Elseステートメントを使って、返り値に応じた処理を
>書くだけです。

>If Fs.FileExists("ファイル名") Then
>...処理
>End If

実作業としては、c:\OK.BATがあれば、このバッチ(OK.BAT)を実行して、
無い時にはC:\DATA\CHANGE.BATを実行させようとしています。
ThenやElse以降の記述に、何か規定はあるのでしょうか??

さん 2001年 08月 09日 12時 57分 43秒

尾鷲 → お世話
でした。すみません。m(_"_)m

さん 2001年 08月 09日 12時 02分 10秒

お久しぶりです。毎度尾鷲になっております。
「DateLastAccessed」だと値が取得できるのですが
なぜか「DataLastModified」だと値が取得できずに
プログラムが途中で止まってしまいます。
なにか考えられる原因はあるでしょうか?

たる さん 2001年 08月 09日 10時 47分 21秒

To:ひろすけさん

>現在、W2000server+Access2000を使用してWSHを活用しています。
>データソース(ODBC)のシステムDNSにてMicrosoft Access Driver(*.mdb)
>のデータソース名やそのファイルのパスを含むすべての登録を
>WSHにて自動化したいのですが、

>データソース名は→Currency
>Accessのfileのpath→C:\Currency\CurrencyDB.mdb
解答そのものではないのですが、もし、ODBDへの登録というのがデータアクセスのためだけならば、
WSHのコードだけでOLEDBへアクセスできますので、そちらのほうがODBC経由しない分
パフォーマンスも良いですしお勧めします。
サンプルコードを以下に記します。
Option Explicit
Function SelfPath
Dim sScriptFullName

sScriptFullName = WScript.ScriptFullName
SelfPath = Left(sScriptFullName, InStrRev(sScriptFullName, "\") - 1)
End Function

Dim axcTest, axtNew, fsTest
Dim sTestFile, lSubQuestion

sTestFile = SelfPath & "\CurrencyDB.mdb"
Set fsTest = CreateObject("Scripting.FileSystemObject")
Set axcTest = WScript.CreateObject("ADOX.Catalog")
If Not(fsTest.FileExists(sTestFile)) Then
lSubquestion = MsgBox(sTestFile & "というデータベースファイルがありません。" & vbCrLf & "新たに作成しますか?", vbQuestion + vbYesNo, "ファイルが存在しない")
If lSubQuestion=vbYes Then
axcTest.Create "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & sTestFile
Else
Set axcTest = Nothing
Set fsTest = Nothing
WScript.Quit
End If
Else
axcTest.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & sTestFile
End If
Set axtNew = WScript.CreateObject("ADOX.Table")
axtNew.ParentCatalog = axcTest
’以下いろいろ作成
Set axtNew = Nothing
Set axcTest = Nothing
---End Of Script
このサンプルは新規作成用なのでADOXを使っていますが
運用ならADOのコネクションオブジェクト.Openメソッドで同じ接続文字列をいれてやれば出来ます。

matu さん 2001年 08月 09日 07時 17分 43秒

To: むたぐち さん

> これすごく興味があります。
> ぜひ見せていただきたいです。

HTML Help Workshopで、プロジェクトファイルを作成し、スクリプトで作成した.hhc
ファイルを指定してコンパイルします。

中身が空のフォルダとか、ローカルのファイルへのショートカットがあると、ちょっと
変です。


Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
Set WshShell = WScript.CreateObject("WScript.Shell")
FavoritePath = WshShell.SpecialFolders("Favorites")
Set RootDir = Shell.NameSpace(FavoritePath)
Set hhc = objFileSys.CreateTextFile("favorites.hhc", True)
hhc.WriteLine "<!DOCTYPE HTML PUBLIC ""-//IETF//DTD HTML//EN"">"
hhc.WriteLine "<HTML>"
hhc.WriteLine "<HEAD>"
hhc.WriteLine "<meta name=""GENERATOR"" content=""Microsoft&reg; HTML Help Workshop 4.1"">"
hhc.WriteLine "<!-- Sitemap 1.0 -->"
hhc.WriteLine "</HEAD><BODY>"
hhc.WriteLine "<OBJECT type=""text/site properties"">"
hhc.WriteLine "<param name=""ImageType"" value=""Folder"">"
hhc.WriteLine "</OBJECT>"
hhc.WriteLine "<UL>"
hhc.WriteLine "<LI> <OBJECT type=""text/sitemap"">"
hhc.WriteLine "<param name=""Name"" value=""" + RootDir.Title + """>"
hhc.WriteLine "<param name=""Local"" value=""about:blank"">"
hhc.WriteLine "<param name=""FrameName"" value=""right"">"
hhc.WriteLine "</OBJECT>"
hhc.WriteLine "<UL>"
Search RootDir.Items.Item
hhc.WriteLine "</UL>"
hhc.WriteLine "</UL>"
hhc.WriteLine "</BODY></HTML>"
hhc.Close
WScript.Echo "終了"

Sub Search(obj)
ItemSu = 0
I = 1
If obj.IsFolder Then
Set objItems = obj.GetFolder.Items
For Each child In objItems
If child.IsFolder Then
buf = "<LI> <OBJECT type=""text/sitemap"">" & vbCrLf
buf = buf & "<param name=""Name"" value=""" + child.Name + """>" & vbCrLf
buf = buf & "<param name=""Local"" value=""about:blank"">" & vbCrLf
buf = buf & "<param name=""FrameName"" value=""right"">" & vbCrLf
buf = buf & "</OBJECT>" & vbCrLf
buf = buf & "<UL>"
dirFlag = 1
ItemSu = 0
Else
buf = "<LI> <OBJECT type=""text/sitemap"">" & vbCrLf
buf = buf & "<param name=""Name"" value=""" + child.Name + """>" & vbCrLf
str = obj.GetFolder.GetDetailsOf(child, -1)
If InStr(str, vbCrLf) Then
str = Right(str, Len(str) - InStr(str, vbCrLf) - 1)
End If
buf = buf & "<param name=""Local"" value=""" & str & """>" & vbCrLf
buf = buf & "<param name=""FrameName"" value=""right"">" & vbCrLf
buf = buf & "</OBJECT>"
ItemSu = ItemSu + 1
dirFlag = 0
End If
If I = objItems.Count Then
If dirFlag = 1 Then
hhc.WriteLine buf
Else
hhc.WriteLine buf & "</UL>"
End If
Else
hhc.WriteLine buf
I = I + 1
End If
Search child
Next
If ItemSu = 0 Then
hhc.WriteLine "</UL>"
End If
End If
End Sub

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 09日 03時 48分 02秒

To:むたぐちさん

OSのバージョンを得る方法、過去記事を見ました。
直接得る方法はないようですね。レジストリに発展するのならと、regeditで調べてみました。
そしたら、
HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion
にある一連の値
Version VersionNUmber SubVersionNUmber
が使えるのかな? 我が家はWin98ですが、一応正しい情報でした。
他のOSの場合も同じところにあるのでしょうか?
確認しようがありませんけど、どなたかレポートしていただければ....
もし、他OSでも同様の場所にあるなら、ココで判断できそうですね。

ついでに、といってはなんですが、
WshNetwork.UserDomain でドメイン名を取得しようとしましたが、

1.きちんとネットワークに参加していなければ、エラーがでます。回避する方法は?
 LOGONスクリプトにてWHSを動かしてドメイン名を表示させようとしていますが、LOGONが完了していなければエラーとなります。

2.きちんとドメイン名が得られるのはWinNT系だけのようです。Win95/98系では「ヌル」となります。どうしてでしょう?


P.S.そちらは猛暑、夏ばて気味だそうですね。こちら(本州最果の地)は、冷夏です。日中でも23℃前後かな? 涼しさを通り越して、寒いくらいです。
(すいません)

たる さん 2001年 08月 09日 01時 15分 52秒

To:むたぐちさん
>まじめな話、WSHから使う場合は問題ないのですが、HTMLに埋め込まれたPerlScript
>を実行するのは凄く危険じゃないのでしょうか。
>PerlScriptって、VBSやJSと違って、ファイル操作とかも可能なんですよね?
はい。他にもモジュールuseすればいろんな事が出来ます。
APIもたたけます。
ただ、ActivePerlがインストールされていない環境で
<script language="PerlScript">
$window->Msgbox("string");
$window->alert("string");
</script>
とかを実行するとIEが強制終了します(スクリプトサンプル自体には意味はないです)。ぜひお試しを。
(だからって、なんの気休めにもならないんですけれど)

>> #ソースに日本語が入ってるとエラー出るみたいです。
>…なら使えないじゃん(^^;
<script src="File.pls" language="PerlScript"></script>
とか外部で使えば日本語もOKです。
もちろん、その結果を$window->document->write出来ます。(全てwindowから省略不可)

To:D-Dayさん
…でもそのままplで動かしたほうが素直だと思います。
IE3の頃のオブジェクトモデル(確かその頃はSOMって言ったっけか)なんて
本読みながらでないとむづかしくて使えません。(私が物覚え悪いだけか(自爆))
任意のタグの中にイベント表記できない
とかその他にもいろいろな制限があります。

Cscriptで使うと言うことなのですが、perl直渡しよりあまり利点を感じないのです。
私は上記のことを知ったら怖くなったので、すぐさまplsの関係付けだけは消してしまいました。

なので素直にWin32::OLE->new(ProgID)しましょう。←PerlでのCreateObject表記

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 09日 01時 12分 43秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

ひどい夏バテだ…。


To: pokopon さん

> HTML以外で、可能なコンポーネントとは?
> できれば、ウィンドウ右にスクロールバーなんかが出れば、最高なのですけど。

うーん、こればっかりは探してみないとわかりませんねえ。
VB等で自作するのが早いかもしれません。

HTAなら可能ですが、「軽さ」が犠牲になりますし…どうしたもんでしょ。


To: 筑集眺餅 さん

> C#・・・ト音記号とか使うんでしょか? (^^)

C#はMML(Music Macro Language)の一種で、携帯の着メロ入力に使われる言語です。
iアプリのJavaに比べると機能的には劣りますが、Microsoftは「Cをもっと
Experienceしてほしい」とコメントしています。

…とか言ってみる。

> なるほど。 DOSからWindows95への切り替わりで、見た目をマック風に変えた時に用語をパクッたのかと思ってましたが、それなりに理由がありそうですね。
> (Windows95 ≒ Mac89との噂も)

よく言われますよね、これ。
でも、はじめてディレクトリをフォルダのメタファーを使って表現したのは、
WinでもMacでもないんですよね(^^;


To: ari さん

> Norton Anti Virus 2001が、フォルダサイズ取得(インストーラーつき)
> (folsize.lzh)の中の、install.vbsに反応して、Bloodhound.VBS.Threatだって
> 言ってきます…一応オートプロテクトを切って中見てみたけど全然ウィルスっぽい
> 事をしていないので誤検出かとは思いますがどうなんでしょう?

これは忌々しき事態ですねえ…。
もちろん、私はinstall.vbsにウィルス的コードを仕組んではおりません。
が、レジストリの書き換えをおこなっているので、その部分がひっかかっているのでは
ないでしょうか。

多くのexeファイルはレジストリの書き換えをおこなうが、それを理由にそのファイルが
ウィルスだと判定されることはないが、VBSファイルだとちょっとでも怪しいコードが
あればとりあえずウィルスと判定しておく…。
まあ、普通の人はVBSファイルなんか使うことはないでしょうから、アンチウィルス
ソフトがこういう挙動を示しても問題ないわけですが、なんだか悲しいぞ。
ウィルスに感染する恐れがあるからWSHをアンインストールすべし、と同じ論法だぞ。
それもこれもあの憎き「I Love Youスクリプトワーム」のせいだ!
うう(泣)


To: Andy さん

> WSHは、いつの間にか5.6になってたんですね・・・・・。
> (私の様な無知って怖いですね・・・・)私の唯一持ってる文献は、WSH2.0のものなので、
> 掲載されてないのでしょうかね...。

WSH5.6はまだβ版です。正式版はWinXP(IE6)リリース時に出ると思われます。
ちなみに、WSH2.0の次のバージョンがWSH5.6です。


To: D-Day さん

> Perl を WSH でお使いの方は少ないのかな?

Perl使いの人はそもそもWindowsなんて使わない、かも。

> レジストリか……
> レジストリはいじったことがないので、ちょっと不安だったりします。
> (レジストリのエディタをどこかで探さなきゃ)

レジストリエディタはOSについてますよん。
regedit.exeです。


To: ひろすけ さん

> 現在、W2000server+Access2000を使用してWSHを活用しています。
> データソース(ODBC)のシステムDNSにてMicrosoft Access Driver(*.mdb)
> のデータソース名やそのファイルのパスを含むすべての登録を
> WSHにて自動化したいのですが、

あっ、この手のネタは私にはわかりません(^^;
みなさん、よろしくです。


To: D-Day さん

> どうやら、Windows Script を 5.5 にアップグレードしたことが
> 功を奏したようです。
> レジストリをいじらずに済んだので、ほっとしています。

良かったですね。

> ところで、cscript を実行するとあいかわらず
> Windows Script Host Version 5.1 for Windows
> というメッセージが表示されるのが気になっています。

私はWSH5.6なのでちょっと確認できないのですが、Windows Script5.5には
たしかWSH2.0(wscript.exe cscript.exe ver 5.1)とVBS5.5・JS5.5の
スクリプトエンジンが入っていたのではなかったかな?


To: matu さん

> 気分転換に、IEのお気に入りをHTML Helpの目次ファイルに変換する
> VBSを作ってみました。 HTML Help Browserが出来上がります。
> ソースは長いので載せてませんが。

これすごく興味があります。
ぜひ見せていただきたいです。


To: kia さん

> >PerlScriptって、VBSやJSと違って、ファイル操作とかも可能なんですよね?
> HTMLファイルではさすがにファイルは読めないみたいですね。

ああ、良かった。
ActiveScriptRubyはどうなんだろ?

> 確かめてないですが、文字によってはうまくいかないということかもしれません。
> エスケープすればいけるのかも。

あれですか、2バイト文字を分解して1バイトにしてみると、制御コードが含まれている
というやつ。
外国産ソフトでは、これがもとで誤動作することが結構ありますよね。

> 「perlでやるならそのままperl.exeを使えばいいのでは?」と言われてしまう可能性が高いとか…(笑)

そうなんですよね(^^;
WSHを通す意味が実はあんまりない。これはRubyでも同じことが言えるんですが。
単体では実行環境を持たないVBSやJSと対照的というか、そもそも考え方が違う世界に
無理やり持ち込んだものですからねえ。

> SELECTの話ですけど、SELECTのオブジェクトにはoptionsというプロパティがあって、
> この中にOPTIONのコレクションが入ってます。
> この中から目当てのオプションを探し出して、そのインデックス番号を
> SELECTオブジェクトのselectedIndexプロパティにセットしてやると多分うまくいくと思います。

あ、そうか。
OPTIONオブジェクトにValueがない場合はその手を使えばいいわけですね。

もしお望みならVBS化しますよ。> てるさん


To: pokopon さん

> WshShell.Environment では環境変数はえられます。Win2K,WinNTではOSが環境としてありますので取り出せますが、Win95/98/MeでOS名を取り出したいのですが。
> というのは、WshNetworkオブジェクトでドメイン名を取り出そうとしていますが、Win95/98系では取り出せません(ヌルとなります)。そこで、OSによって制御を分けたいのです。

28-15 管理人むたぐち 2001-01-14 00:37
28-35 管理人むたぐち 2001-01-18 01:49

を参考にしてください。

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 08日 22時 54分 22秒

最近出没するようになりましたpokoponです (^^ゞ
宜しくお願いいたします。

WSHで、マシンのOSの情報を得る方法はありませんか?
WshShell.Environment では環境変数はえられます。Win2K,WinNTではOSが環境としてありますので取り出せますが、Win95/98/MeでOS名を取り出したいのですが。
というのは、WshNetworkオブジェクトでドメイン名を取り出そうとしていますが、Win95/98系では取り出せません(ヌルとなります)。そこで、OSによって制御を分けたいのです。
宜しくおねがします m(__)m

kia さん (kia@geocities.co.jp) 2001年 08月 08日 22時 27分 45秒

>むたぐちさん
>何気に凄くお久しぶりじゃないですか?
書くのは久しぶりです。(^_^;)

>PerlScriptって、VBSやJSと違って、ファイル操作とかも可能なんですよね?
HTMLファイルではさすがにファイルは読めないみたいですね。
WSHとかHTAならもちろん読めます。

>> #ソースに日本語が入ってるとエラー出るみたいです。
>…なら使えないじゃん(^^;
確かめてないですが、文字によってはうまくいかないということかもしれません。
エスケープすればいけるのかも。

>D-Dayさん
解決したみたいですね。

>Perl を WSH でお使いの方は少ないのかな?
「perlでやるならそのままperl.exeを使えばいいのでは?」と言われてしまう可能性が高いとか…(笑)

>皆さんのところでは、バージョンいくつとなっているか
>お教えいただければ幸いです。
WScript.Versionは5.1で、JScriptとかVBScriptのエンジンが5.5になってます。
WSH5.6というのは入れてません。<ハズ

>てるさん
SELECTの話ですけど、SELECTのオブジェクトにはoptionsというプロパティがあって、
この中にOPTIONのコレクションが入ってます。
この中から目当てのオプションを探し出して、そのインデックス番号を
SELECTオブジェクトのselectedIndexプロパティにセットしてやると多分うまくいくと思います。

var selects = IE.document.getElementsByTagName("SELECT");
loop: for (var i = 0; i < selects.length; i++) {
if (selects.item(i).name == "tenmei") {
var options = selects.item(i).options;
for (var j = 0; j < options.length; j++) {
if (options.item(j).text == "新宿店") {
selects.item(i).selectedIndex = options.item(j).index;
break loop;
}
}
}
}

#もういいのかも知れないですが…。(^_^;)
#はずしてたらすんませn

matu さん 2001年 08月 08日 19時 14分 11秒

To: むたぐち さん

> > >とすると、マシンの目をくらませばよいので、そこの行を
> > >buf = buf & "</sc" & "ript>" & vbCrLf
> > >とかとすれば良いんじゃないでしょか。
> >
> > これには気づきませんでした。
> > 頭の回転悪すぎですね。お恥ずかしいです。
>
> あるいは、<!-- でコメントアウトしておけば大丈夫、とか…?

どうも。
この方法も、うまくいきました。
現在は....別の個所で悩んでいます。 が、もう少し考えます。

気分転換に、IEのお気に入りをHTML Helpの目次ファイルに変換する
VBSを作ってみました。 HTML Help Browserが出来上がります。
ソースは長いので載せてませんが。

お盆に実家に持って帰ってネットします。

D-Day さん 2001年 08月 08日 18時 48分 32秒

Perl スクリプト(.pls) を cscript で実行させようとすると
".pls" に対応するスクリプト エンジンはない
というエラーが出る問題は解決しました。
ありがとうございました。

どうやら、Windows Script を 5.5 にアップグレードしたことが
功を奏したようです。
レジストリをいじらずに済んだので、ほっとしています。

ところで、cscript を実行するとあいかわらず
Windows Script Host Version 5.1 for Windows
というメッセージが表示されるのが気になっています。

5.5 へのインストールは正常に完了したはずなのですが。
(インストール完了というメッセージが出た)
cscript.exe のプロパティでバージョン番号を確認しても
5.1 となっていました。

この画面表示と cscript.exe のバージョン番号は
これで最新のものなのでしょうか?
皆さんのところでは、バージョンいくつとなっているか
お教えいただければ幸いです。

ひろすけ さん 2001年 08月 08日 15時 45分 45秒

たびたび、ご質問させていただきます。

現在、W2000server+Access2000を使用してWSHを活用しています。
データソース(ODBC)のシステムDNSにてMicrosoft Access Driver(*.mdb)
のデータソース名やそのファイルのパスを含むすべての登録を
WSHにて自動化したいのですが、
どなたかご存知のかたはいらっしゃいませんでしょうか?

データソース名は→Currency
Accessのfileのpath→C:\Currency\CurrencyDB.mdb

とします。

宜しくお願いします。

ひろすけ

D-Day さん 2001年 08月 08日 14時 53分 46秒

kia さん、筑集眺餅 さん、お答えありがとうございました。

To: kia さん
>ActivePerlをインストールするときにPerlScriptに関するオプションがあったように思うのですが、
>そのあたりはいかがですか?

そういうオプションがあったかどうか、覚えていませんが (^_^;、
後で ActivePerl のサイトに行って、確かめてみます。

>私のところは、Win98ですが、インストールしただけで使えるようになったみたいです。<使ってないけど(笑)

Perl を WSH でお使いの方は少ないのかな?

>#ソースに日本語が入ってるとエラー出るみたいです。

これは一番恐れています。
Jperl + ActivePerl の組み合わせでは大丈夫なのですが、
これに WSH がからむと駄目になるのでしょうか?

To: 筑集眺餅 さん
>Google で、"Perl WSH"をキーワードにして検索すると、
>"Tipx:WSHでPerlを使う"というページがヒットします。
>レジストリを書き換えて、WScriptにパスを通す方法とか載ってます。
>お約束の「自己責任」ですが、たぶん、この辺りですかね?

レジストリか……
レジストリはいじったことがないので、ちょっと不安だったりします。
(レジストリのエディタをどこかで探さなきゃ)

To:Andy さん
>WSHは、いつの間にか5.6になってたんですね・・・・・。

わっ、知りませんでした。
私のバージョンなんて、5.1 ……
それも原因なのかな?
まずそこからアップグレードしなきゃ。

Andy さん 2001年 08月 08日 14時 32分 51秒

To:管理人むたぐち さん

ご回答ありがとうございました。
WSHは、いつの間にか5.6になってたんですね・・・・・。
(私の様な無知って怖いですね・・・・)私の唯一持ってる文献は、WSH2.0のものなので、
掲載されてないのでしょうかね...。

ari さん 2001年 08月 08日 11時 12分 38秒

Norton Anti Virus 2001が、フォルダサイズ取得(インストーラーつき)
(folsize.lzh)の中の、install.vbsに反応して、Bloodhound.VBS.Threatだって
言ってきます…一応オートプロテクトを切って中見てみたけど全然ウィルスっぽい
事をしていないので誤検出かとは思いますがどうなんでしょう?


ひろすけ さん 2001年 08月 08日 10時 31分 33秒

To むたぐちさん

ご指導ありがとうございます。
さっさく確認してみます。

ひろすけ

筑集眺餅 さん 2001年 08月 08日 07時 21分 34秒

To:むたぐちさん

>> VBSに慣れると、なかなかJSに手が出ないっす。
>> エクセルとかもVBAを使って便利にできるし。
>> ただ、HTMLに埋め込むとネスケで動かないのがねー・・・。
>
>もうすぐOfficeのマクロでC#を使えるようになる時代がきますよ、きっと。

C#・・・ト音記号とか使うんでしょか? (^^)

>> (日本語ではフォルダなのに英語だとディレクトリなのね。
>>  ディレクトリはDOS系用語で、フォルダーはマック系用語でしょか?)
>
>ディレクトリのメタファーとしてのフォルダ、じゃないのかなあと思っていました>が、
>Windowsのエクスプローラでは
>ディレクトリ…フォルダのうち、ファイルを格納するフォルダ(ファイルフォルダ)
>という概念があるようです。
>ファイルフォルダを含めて、仮想フォルダやドライブなど、エクスプローラの
>ノードとなるものはすべて「フォルダ」であるわけです。

なるほど。 DOSからWindows95への切り替わりで、見た目をマック風に変えた時に用語をパクッたのかと思ってましたが、それなりに理由がありそうですね。
(Windows95 ≒ Mac89との噂も)

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 08日 03時 30分 31秒

To むたぐちさん
ご回答、ありがとうございました。
やっぱり....でした。WHSは簡単なものはさくさく動くのでDOSバッチの代わりとして重宝していました。欲が出て体裁にこだわった次第です。

>そういうことが可能なCOMコンポーネント利用する
HTML以外で、可能なコンポーネントとは?
できれば、ウィンドウ右にスクロールバーなんかが出れば、最高なのですけど。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 07日 22時 12分 58秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: pokopon さん

> 1.Popupウィンドウを表示する場所を指定可能ですか?
>   例えば、画面の左上(座標 0,0)にとか
> 2.ウインドウ内に表示させる文字の「湊歡の種類と大きさ」を指定可能ですか?
> 3.同様に、「背景」や「文字色」なんか、指定できますか?

PopupがWshShell.Popupのことであれば、すべて不可能です。
VBSのInputBox関数なら、1.のみ可能です。

そういうことが可能なCOMコンポーネントを利用するか、HTAを使ってHTMLで
ダイアログを自作するしかないでしょう。

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 07日 21時 58分 24秒

初心者です。基本的なことかも知れませんが、教えて下さい。
Popupついてです
1.Popupウィンドウを表示する場所を指定可能ですか?
  例えば、画面の左上(座標 0,0)にとか
2.ウインドウ内に表示させる文字の「湊歡の種類と大きさ」を指定可能ですか?
3.同様に、「背景」や「文字色」なんか、指定できますか?

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 07日 21時 06分 42秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: sato さん

> ログオンスクリプトでレジストリを編集してプリンタのポートを削除するスクリプトを作成したのですが、削除するキーがHKEY_LOCAL_MACHINEにあるので一般ユーザに権限がありません。(一般ユーザはPower Usersグループ)
> そこでプリンタポートの削除するキーだけに一時的にアクセス権を与えたいのですが、スクリプトでレジストリにアクセス権を与えることは可能でしょうか?

WMIのStdRegProvクラスにCheckAccessメソッドというのがあるのですが、
これはどうやらキーに対するアクセス権があるかどうかを調べるだけで、
アクセス権を設定することはできないようですね。

プリンタポートの削除なら、WshNetworkのRemovePrinterConnectionメソッドで
なんとかできませんかねえ?


To: Andy さん

> (*****.EXE)の中に、コマンド実行させるにあたって、作業ディ
> レクトリをこのモジュールと同じ場所から実行させないと動作し
> ないモジュールがあります。このため、このような機能(DOSでい
> うcd(Change Directry)と同じ)は、WSHで何かありませんか?

WSH5.6のWshShellオブジェクトにはCurrentDirectoryメソッドがあります。

また、Shell32のShellExecuteメソッドを使えば、作業フォルダを
指定してファイルを実行できます。
10-19 管理人むたぐち 2000-03-09 00:34

汎用性の面からは、筑集眺餅さんのショートカットを使う方法が
いいでしょう。


To: いちにい さん

> > これっていわゆる免責事項とは違うのでしょうか。
>
> そうなんですか?
> 英語とか弱いんで、そうとは、判らなかったです。

私もよくわからないんですが、コントロールを「サポート」することってあるのかなあ、
と思いまして。

> system.dat と、 user.dat に別れてませんか?

いや、そうなんですが、どちらもregedit.exeで等価にアクセスできるでしょ?

> 何とかして、要らないクラス情報を消せないだろうか?
> scanreg では消えないし、RegCleanを使うと何故か上手く行かない。
> どうして?(笑)

scanregってそういう機能はないですよ。
たしか、消したレジストリキーの残骸を完全に消去してレジストリサイズを減らす
のが、scanreg /fix の効果だったと。

> 家の場合は、スクリプトで自動化してる作業って無いんですよね。
> って、WSHの知識が無いから、どう言ったことが出来るか把握してない。(死)
> でも、regsvr32.exeの登録は、使ってます。(笑)

私の作ったスクリプトも、もしよかったら使ってください(死)


To: matu さん

> >とすると、マシンの目をくらませばよいので、そこの行を
> >buf = buf & "</sc" & "ript>" & vbCrLf
> >とかとすれば良いんじゃないでしょか。
>
> これには気づきませんでした。
> 頭の回転悪すぎですね。お恥ずかしいです。

あるいは、<!-- でコメントアウトしておけば大丈夫、とか…?


To: 筑集眺餅 さん

> VBSに慣れると、なかなかJSに手が出ないっす。
> エクセルとかもVBAを使って便利にできるし。
> ただ、HTMLに埋め込むとネスケで動かないのがねー・・・。

もうすぐOfficeのマクロでC#を使えるようになる時代がきますよ、きっと。

> (日本語ではフォルダなのに英語だとディレクトリなのね。
>  ディレクトリはDOS系用語で、フォルダーはマック系用語でしょか?)

ディレクトリのメタファーとしてのフォルダ、じゃないのかなあと思っていましたが、
Windowsのエクスプローラでは
ディレクトリ…フォルダのうち、ファイルを格納するフォルダ(ファイルフォルダ)
という概念があるようです。
ファイルフォルダを含めて、仮想フォルダやドライブなど、エクスプローラの
ノードとなるものはすべて「フォルダ」であるわけです。

ただ、この流れでいくなら、Active Directoryは、「Active Folder」とした方が
良かったかも。


To: 土屋 さん

> こんにちは。今度は、ドラッグ&ドロップで受け取ったワード文書を、スタイルをタグにして、XML文書に変換するスクリプトを作ってみました。

ありがとうございます。
と言っても、私の持っているファイルをかけてみても、<標準>ばっかりで
あまり面白くないです(^^;
スタイルなんて使わないからなあ…。


To: あきら さん

> 各拡張子毎に設定できますよ。拡張子毎のcfgファイルで設定できます。
> また、このファイルを自作する事で、デフォルト以外の拡張子もサポートする
> 事ができますよ。例えば、cpp.cfg とかもできますし。

なるほどなるほど。
問題は、wsfやhtaなど、複数のスクリプト言語が共存しているファイル形式ですね。


To: kia さん

何気に凄くお久しぶりじゃないですか?

> ActivePerlをインストールするときにPerlScriptに関するオプションがあったように思うのですが、
> そのあたりはいかがですか?

デフォルトではインストールされないのかもしれませんね。
Winampのプレイリストファイルと拡張子かぶるし(笑)

まじめな話、WSHから使う場合は問題ないのですが、HTMLに埋め込まれたPerlScript
を実行するのは凄く危険じゃないのでしょうか。
PerlScriptって、VBSやJSと違って、ファイル操作とかも可能なんですよね?

> #ソースに日本語が入ってるとエラー出るみたいです。

…なら使えないじゃん(^^;


To: 筑集眺餅 さん

> Google で、"Perl WSH"をキーワードにして検索すると、
> "Tipx:WSHでPerlを使う"というページがヒットします。

URL載せちゃってもいいような気がしますが…ま、いいか。

> レジストリを書き換えて、WScriptにパスを通す方法とか載ってます。
> お約束の「自己責任」ですが、たぶん、この辺りですかね?

これって、要するにインストーラーがタコなんでは…(^^;
# Win9xには対応してません! というのならいいんですが。


To: チョコ さん

> 例えば、ファイルの有無を調べて、あるなら次の作業を進めて、無いなら作業を
> 中止するような事を行いたいのですが、どういう方法がありますか?
> FileExistsメゾットを使うというのは判ったのですが、戻り値をどのように
> 扱ったらいいか判りません。

FileExistsメソッドの返り値は、ファイルがある場合Trueでファイルがない場合False
です。
あとは(VBSなら)If...Then...Elseステートメントを使って、返り値に応じた処理を
書くだけです。

If Fs.FileExists("ファイル名") Then
...処理
End If


To: Andy さん

> 開いてるウインドウのアイコン化や最大化などの機能は、WSHにあるのでしょうか?

WshShell.Runを使って、起動時のウィンドウスタイルを指定することはできますが、
開いているウィンドウに対しては基本的にできません。

ただし、二重起動防止機能がついたアプリの場合は、WshShell.Runを使って
ウィンドウスタイルの制御が可能なものもあります。
# というか、この技が使えるのはエクスプローラだけかも…。

また、WshShellのAppActivateとSendKeysを使って、該当ウィンドウに
Alt+Shift→N(最小化)またはX(最大化)を送るという方法もあります。

Andy さん 2001年 08月 07日 18時 27分 28秒

開いてるウインドウのアイコン化や最大化などの機能は、WSHにあるのでしょうか?

チョコ さん 2001年 08月 07日 14時 42分 28秒

すみません。どなたか判る方、お教えて下さい。
例えば、ファイルの有無を調べて、あるなら次の作業を進めて、無いなら作業を
中止するような事を行いたいのですが、どういう方法がありますか?
FileExistsメゾットを使うというのは判ったのですが、戻り値をどのように
扱ったらいいか判りません。

Andy さん 2001年 08月 07日 14時 37分 21秒

To:筑集眺餅 さん

ありがとうございます。

試してみます。

筑集眺餅 さん 2001年 08月 07日 08時 08分 20秒

To:D-Dayさん

Google で、"Perl WSH"をキーワードにして検索すると、
"Tipx:WSHでPerlを使う"というページがヒットします。
レジストリを書き換えて、WScriptにパスを通す方法とか載ってます。
お約束の「自己責任」ですが、たぶん、この辺りですかね?
(Perlは使ってないので無責任モード...)

kia さん (kia@geocities.co.jp) 2001年 08月 07日 07時 23分 04秒

>D-Dayさん
ActivePerlをインストールするときにPerlScriptに関するオプションがあったように思うのですが、
そのあたりはいかがですか?
私のところは、Win98ですが、インストールしただけで使えるようになったみたいです。<使ってないけど(笑)
#ソースに日本語が入ってるとエラー出るみたいです。

あきら さん (ariaki@fh.freeserve.ne.jp) 2001年 08月 07日 00時 46分 59秒
URL:http://www.ariaki.com/

To むたぐち さん

>> *.cfg の [Setting] 内にある Commenter で設定するとできます。
>> デフォルトでは//になっています。行コメントは一種類しか登録できません。
> なるほど。
> VBSでは ' ですが、他のエンジンを併用する場合はどうしましょうかねえ…。
> # Rem もありますけど。

各拡張子毎に設定できますよ。拡張子毎のcfgファイルで設定できます。
また、このファイルを自作する事で、デフォルト以外の拡張子もサポートする
事ができますよ。例えば、cpp.cfg とかもできますし。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 06日 23時 46分 35秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: ひろすけ さん

> WSHでの質問ですが、PCマシン(W2000)で現在インターネットに接続
> しているか、どうかの判断をWSHにてしたいのです。
>
> たとえば、
>
> if インターネットに接続している<> True then
> @ ダイアルアップする
> A 処理をする
> else
>   A 処理をする
> end if

rasdialコマンドを使えば、ダイヤルアップがつながっているかどうかは
わかるみたいです(Win2000)。
rasdialをオプションなしで実行すると、未接続なら「接続なし」という文字列が返るので、
リダイレクトでファイルに落とすなり、WSH5.6の機能を使って標準出力を読むなり
して判断してみてはいかがでしょうか。

また、http://www.borncity.com/WSHBazaar/WSHRas.htm にある、WSHRasというコントロールを
使うと、簡単にできそうです。


To: てる さん

> http://www.monex.co.jp/free/index_frame/MonexFrame_2.html の
> アドレスは分からず、http://www.monex.co.jp だけが分かっている
> 状態で、http://www.monex.co.jp/free/index_frame/MonexFrame_2.html
> のフレームの制御はできますか?

IEのバグかセキュリティ上の問題だと思うのですが、環境によっては、
WSHからIE上のHTMLのDOMにアクセスする際、子フレームのwindowオブジェクトには
アクセスできなくなっています。
そのため、できない可能性が高いです。
とりあえず、26-15 管理人むたぐち 2000-12-15 01:58 とかを参考にして
できるかどうか試してみてください。


To: あきら さん

> *.cfg の [Setting] 内にある Commenter で設定するとできます。
> デフォルトでは//になっています。行コメントは一種類しか登録できません。

なるほど。
VBSでは ' ですが、他のエンジンを併用する場合はどうしましょうかねえ…。
# Rem もありますけど。

> このファイルで、スクリプト毎の各項目の構文強調と色、折り返し関連、
> ブラケット(複数行コメントの両端)などがカスタマイズできます。
> 手動で…編集してみてください。

VBSにはブラケットってないですねえ。不便だ。

> VBS, JScript で検索できます。

失礼しました。全登録ヘルプを串刺し検索とかすると、凄く
遅くなりそうですね(^^;


To: なお さん

> @echo off
> cscript //Nologo C:\PathtoScript\hoge.vbs %1 %2 %3 %4 %5
>
> のようにしていますが、これだと例えば他人に渡す際に、
> 「バッチファイル内のPathtoScriptを置き換えてくれ」と言わねばならないので…
> ぽんっとvbsファイルひとつ渡してPATHの通るとこに置いてもらうだけで良いようにしたかったわけです。

なるほど、そういうことですか。
たしかに、.wshファイルでホストを選択できるようになっていたら、
スマートだったんですけどねえ。
.wshファイルの利用価値も少しは高まると言うものです。要望を出してみましょうか(^^;
# あれ、うちの環境、wshファイルが生成しなくなってる…。なぜ?

土屋 さん 2001年 08月 06日 20時 11分 09秒

こんにちは。今度は、ドラッグ&ドロップで受け取ったワード文書を、スタイルをタグにして、XML文書に変換するスクリプトを作ってみました。
ワードの制御コードは一部しかまだ対応してないようですが、、、

Dim myWord, myDocument, FS, NewXMLName, myFile, FileName, strTag, strText
Set FS = CreateObject("Scripting.FileSystemObject")
j = 0
Set myWord = CreateObject("Word.Application")
'myWord.Visible = True
For Each FileName In WScript.Arguments
Select Case LCase(FS.GetExtensionName(FileName))
Case "doc"
NewXMLName = FS.GetParentFolderName(FileName) & "\"
NewXMLName = NewXMLName & FS.GetBaseName(FileName) & ".xml"
Set myFile = FS.CreateTextFile(NewXMLName, True)
myFile.WriteLine "<?xml version='1.0' encoding='Shift-JIS'?>"
myFile.WriteLine "<DOC>"
Set myDocument = myWord.Documents.Open (FileName, False, True)
For i = 1 To myDocument.Paragraphs.Count
strTag = Replace(myDocument.Paragraphs(i).Style.NameLocal," ","")
strText = Replace(myDocument.Paragraphs(i).Range.Text,Chr(7),"")
strText = Replace(strText,Chr(13),"")
myFile.WriteLine "<" & strTag & ">" & strText & "</" & strTag & ">"
Next
myFile.WriteLine "</DOC>"
myDocument.Close
myFile.Close
j = j + 1
End Select
Next
myWord.Quit
Set FS = Nothing
Set myDocument = nothing
Set myWord = nothing
Set myFile = nothing
msgbox j & "個の文書を変換しました"

D-Day さん (d-day@milk.freemail.ne.jp) 2001年 08月 06日 11時 20分 51秒

初めまして、D-Day と申します。
WSH と Perl をいじり始めてまだ1週間の超初心者です。
WSH で Perl スクリプトを実行したいと思い、
見よう見まねで DOS 窓に
>cscript test.pls file://e:perlscript と入力したところ、
入力エラー: ファイル拡張子 ".pls" に対応するスクリプト エンジン
はありません。
というエラーが出てしまいます。
名前を test.pl に変えても
ファイル拡張子 ".pl" に対応するスクリプト エンジンはありません。
と言われてしまいます。
.pls と Perl のスクリプトエンジンを関連付ける
何か操作が必要なのでしょうか?(レジストリの操作?)
ちなみに cscript で vbs ファイルは実行できました。

環境は:
Windows 2000、WSH Version 5.1、ActivePerl、Jperl
です。

WSH で Perl スクリプトを実行する方法をお教えいただければ幸いです。


筑集眺餅 さん 2001年 08月 04日 06時 34分 28秒

To:matuさん
>>初めまして。
>前に一度、「スクリプトのあるパス名の取得の仕方」でお世話になりました。

あいたたた。では、二度目まして。 ^^;

>>しかし、なぜ "JavaScript" ?
>>JSとVBの両方作るの大変でしょうに。
>そうですね。 偶然です。
>普段は、VBの体験版とかでいろいろと遊んでいるのでVBSのほうがやりやすい
>のでVBSなのです。

VBSに慣れると、なかなかJSに手が出ないっす。
エクセルとかもVBAを使って便利にできるし。
ただ、HTMLに埋め込むとネスケで動かないのがねー・・・。

To:Andyさん

>(*****.EXE)の中に、コマンド実行させるにあたって、作業ディ
>レクトリをこのモジュールと同じ場所から実行させないと動作し
>ないモジュールがあります。このため、このような機能(DOSでい
>うcd(Change Directry)と同じ)は、WSHで何かありませんか?

ども。CDの機能はちょっと判りませんが、WSHではショートカット
が作成できるから、そこの作業フォルダをいぢってやればいいんでは?
WshShortcutオブジェクトの WorkingDirectoryプロパティ。
(日本語ではフォルダなのに英語だとディレクトリなのね。
 ディレクトリはDOS系用語で、フォルダーはマック系用語でしょか?)
ショートカットは、WshShell.Run メソッドで起動できるはず。
実験してないから・・・うまくいったらご喝采。

matu さん 2001年 08月 04日 00時 26分 57秒

To: 筑集眺餅 さん

どうも、ありがとうございます。

>初めまして。

前に一度、「スクリプトのあるパス名の取得の仕方」でお世話になりました。

>たぶん、マシンが </script>を読み出したところでスクリプトが終わったと
>勘違いするのが原因じゃないすか?(バカだね〜)

私も、そう思ってはいたのですが....

>とすると、マシンの目をくらませばよいので、そこの行を
>buf = buf & "</sc" & "ript>" & vbCrLf
>とかとすれば良いんじゃないでしょか。

これには気づきませんでした。
頭の回転悪すぎですね。お恥ずかしいです。

>しかし、なぜ "JavaScript" ?
>JSとVBの両方作るの大変でしょうに。

そうですね。 偶然です。
普段は、VBの体験版とかでいろいろと遊んでいるのでVBSのほうがやりやすい
のでVBSなのです。

いちにい さん 2001年 08月 03日 12時 13分 15秒

To: 管理人むたぐち さん

> これっていわゆる免責事項とは違うのでしょうか。

そうなんですか?
英語とか弱いんで、そうとは、判らなかったです。


> コンポーネントの登録情報と、ユーザー設定が同じファイル(というか同じレジストリという
> 仕組み上)にあるのも、よく考えると変な話だと思いませんか?

system.dat と、 user.dat に別れてませんか?
もしかして、コンポーネント単位での話?

何とかして、要らないクラス情報を消せないだろうか?
scanreg では消えないし、RegCleanを使うと何故か上手く行かない。
どうして?(笑)


>> 何故か、簡単に出来る事ほど、なかなか自動化しない。(笑)

> それありますよねー。
> というか、私の場合、よくやる定型作業ほど自動化しない傾向があります(^^;
> # だから使い捨てスクリプトが死ぬほどある。

家の場合は、スクリプトで自動化してる作業って無いんですよね。
って、WSHの知識が無いから、どう言ったことが出来るか把握してない。(死)
でも、regsvr32.exeの登録は、使ってます。(笑)



Andy さん 2001年 08月 03日 12時 00分 26秒

すみません。初歩的な質問で申し訳ありません。
教えていただきたいのですが、私が所有しているあるモジュール
(*****.EXE)の中に、コマンド実行させるにあたって、作業ディ
レクトリをこのモジュールと同じ場所から実行させないと動作し
ないモジュールがあります。このため、このような機能(DOSでい
うcd(Change Directry)と同じ)は、WSHで何かありませんか?

sato さん 2001年 08月 03日 11時 20分 11秒

はじめまして。早速ですが質問です。

ログオンスクリプトでレジストリを編集してプリンタのポートを削除するスクリプトを作成したのですが、削除するキーがHKEY_LOCAL_MACHINEにあるので一般ユーザに権限がありません。(一般ユーザはPower Usersグループ)
そこでプリンタポートの削除するキーだけに一時的にアクセス権を与えたいのですが、スクリプトでレジストリにアクセス権を与えることは可能でしょうか?
また、その方法はどうしたらよいのでしょうか?
どなたかお教え願います。よろしくお願いいたします。

なお さん 2001年 08月 03日 09時 49分 03秒

ご回答ありがとうございました。

少々舌足らずでしたが、要するにコンソールから起動し、コンソール内で動くようにしたいわけです。
今は仕方ないのでバッチファイルと組み合わせ、バッチの中で
@echo off
cscript //Nologo C:\PathtoScript\hoge.vbs %1 %2 %3 %4 %5

のようにしていますが、これだと例えば他人に渡す際に、
「バッチファイル内のPathtoScriptを置き換えてくれ」と言わねばならないので…
ぽんっとvbsファイルひとつ渡してPATHの通るとこに置いてもらうだけで良いようにしたかったわけです。

一瞬「同フォルダ内にbatファイルが無ければ自動生成するようにしておく」ってのも考えましたが(^^;;(PATHEXTはvbsよりbatの方が優先ですし)

> cscript.exe //H:CScript.exe
> を実行すると、以降実行するスクリプトはcscript.exeで実行されます。

とできないのは、普通にWScriptで利用するvbsもあるからでして....
また他人の環境を勝手に変えるわけにもいきませんし。

> また、設定にかかわらず、つねにcscript.exeで実行させるサンプルを作りましたので、
> 参考にしてください。
> 自己呼び出しをしているので、少し危険なスクリプトなのですが。

これだと別のCMDを開いてしまうのでちょっと使えませんね…すみません。

うーん、.wshで制御できれば一番素直なんですけどね…

筑集眺餅 さん 2001年 08月 03日 08時 00分 39秒

To:matuさん

初めまして。

>buf = "<html>" & vbCrLf
>buf = buf & " <script language=""JavaScript"">" & vbCrLf
>〜 中略 〜
>buf = buf & " </script>" & vbCrLf
>buf = buf & "</html>" & vbCrLf

たぶん、マシンが </script>を読み出したところでスクリプトが終わったと
勘違いするのが原因じゃないすか?(バカだね〜)

とすると、マシンの目をくらませばよいので、そこの行を
buf = buf & "</sc" & "ript>" & vbCrLf
とかとすれば良いんじゃないでしょか。

しかし、なぜ "JavaScript" ?
JSとVBの両方作るの大変でしょうに。

matu さん 2001年 08月 02日 23時 27分 08秒

お久しぶりです。

教えていただきたいのですが、現在、スクリプト入りのHTMLファイルを作成する
HTAを作成しています。
HTMLのソースを変数に代入して、最後に一気にファイルに書き込もうとしている
のですが、

buf = "<html>" & vbCrLf
buf = buf & " <script language=""JavaScript"">" & vbCrLf
〜 中略 〜
buf = buf & " </script>" & vbCrLf
buf = buf & "</html>" & vbCrLf

の、</script>を代入するところでエラーになってしまいます。

</script>が原因なのでしょうか。 もしそうだとしたら、なにかよい方法はあり
ますでしょうか。

よろしくお願いします。

あきら さん (ariaki@fh.freeserve.ne.jp) 2001年 08月 02日 19時 06分 32秒
URL:http://www.ariaki.com/

> ところで、コメント行の色分けって実装されていないのでしょうか。

*.cfg の [Setting] 内にある Commenter で設定するとできます。
デフォルトでは//になっています。行コメントは一種類しか登録できません。
このファイルで、スクリプト毎の各項目の構文強調と色、折り返し関連、
ブラケット(複数行コメントの両端)などがカスタマイズできます。
手動で…編集してみてください。

>> 目的の語をキーワードで検索してウインドウ表示がしたいんです。
>> 今だとまだ完璧ではないんですが、F1 で現在のキャレット位置の
>> 単語を検索します。
> なるほど、そういう機能があるんですね。
> これ、今はVBSのヘルプしか検索しないですよね?

VBS, JScript で検索できます。

てる さん 2001年 08月 02日 16時 10分 14秒

管理人むたぐちさん

ありがとうございます。

ところで、もう一つの質問ですが、フレーム処理されたページの制御は
どのようにすればいいのでしょうか?
というのは、
http://www.monex.co.jp
の場合は、フレームのアドレスが分かっているので、
Ie.Navigate "http://www.monex.co.jp/free/index_frame/MonexFrame_2.html"
で、入力できますが、証券会社のホームページにログインすると、中は
セキュリティの関係からでしょうが、毎回アドレスが変わるので、ログ
イン後に表示された(フレーム処理されている)ページを制御したいの
です。
つまり、アドレスが分からない状態で、フレーム処理された状態のIE
を制御したいのです。
ということで、
http://www.monex.co.jp/free/index_frame/MonexFrame_2.html の
アドレスは分からず、http://www.monex.co.jp だけが分かっている
状態で、http://www.monex.co.jp/free/index_frame/MonexFrame_2.html
のフレームの制御はできますか?


ひろすけ さん 2001年 08月 02日 10時 21分 35秒

こんにちは、ひろすけです。

また、教えて頂きたく、投稿しました。

WSHでの質問ですが、PCマシン(W2000)で現在インターネットに接続
しているか、どうかの判断をWSHにてしたいのです。

たとえば、

if インターネットに接続している<> True then
@ ダイアルアップする
A 処理をする
else
  A 処理をする
end if

P.s.@Aは今回は質問の範囲外です。

ぜひ、宜しくお願いします。
なお、W2000とW98でソースが異なるようでしたら
それぞれ、を教えて頂けないでしょうか?

宜しくお願いいたします。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 01日 20時 00分 28秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: 土屋 さん

> TLBINF32.DLLっておもしろそうだったので、
> 上を参考に、エクセルに書き出すスクリプトを作ってみました。(メイン部分)

> ということでTLBINF32.DLL自身のタイプライブラリ?をエクセルに書き出してます。
> 使い道はわからないですが、とりあえず面白かったのでよしとしよう。

Excelとの組み合わせは面白いですね。
これを発展させると、自分なりのオブジェクトヘルプが作れるかもしれません。
(「オブジェクト解説」も楽に作れるようになるかも)


To: RiffRaff さん

> これらのオブジェクトにも ProgID があったんですね。レジストリでは CLSID から
> ProgID への逆参照が登録されていなかったのでわかりませんでした。これで
> 土屋さんのレスのように VBScript から簡単に呼べるようになるんですね。
> 登録情報としては不親切だと思うのですが、こういう場合もあるのだと勉強になりました。

たまにありますよね。
ProgIDがないのは、コントロールを配置するフォームが必要なCOMオブジェクトに
多いような気がします。


To: いちにい さん

> MSにもサンプル有りました。
> 機能的には、似たようなもんですが…。
> http://support.microsoft.com/support/kb/articles/Q172/9/88.ASP
> なんか、TLBINF32.DLLは、サポート対象外みたい。

これっていわゆる免責事項とは違うのでしょうか。


To: RiffRaff さん

> ちなみに ProgID はレジストリの情報から CLSID を参照するためだけに使われる文字列なので
> 例えばメモ帳で以下のREG ファイルを作成してレジストリに登録すれば私の名前で WshShell
> オブジェクトが取得できたりします。もっとも他のマシンでは動きませんので意味は無いですが(^^;

へえ、こんなことができるんですね。
Scripting.FileSystemObjectをScripting.FileSystemに変えよう!


To: 土屋 さん

> 参考までに(蛇足ですが)、私はレジストリ登録の際に、
> 次のようなファイルを使って、ドラッグアンドドロップで登録してます。(Win98&Me)

あ、これ便利ですね。
ついでに、アンインストーラもつけてみてはいかがでしょう。
(レジストリのUninstallStringに、regsvr32 /u hoge.dllを実行するスクリプトを登録する)

> ところで、
> http://www.netal.com/
> で、System Scripting Runtimeというフリーのコンポーネントを見つけました。
> 主にネットワーク関係で、PingやSendNetMessageなどのメソッドをWSHから使えます。

Pingが使えるのは意外とないかも?

このサイトにある、System Script Host というのが気になります。
WSHと同様、スクリプトエンジンのホスティングをする
アプリらしいのですが、WSHと違ってスクリプトをサービスとして実行できる
ところが大きな特徴です。
また、各種イベント(Timer, IPC, Event Log, Performance Data, Services,
File System, SNMP Traps, Syslog, Registry)をトラップできるそうで、
WSHの苦手とする「常駐」を可能にしています。
MMCスナップインによる管理、リモート実行可能(WSH5.6では可能ですが)、WMI対応、
各スクリプトごとにプロセスが独立している(これはWSHもそうだと思いますが)、
別ユーザー権限でスクリプトが実行できる(これはWin2000のrunasと同じかな?)、
パフォーマンスカウンター、スクリプトデバッグ機能(WSHにもありますが)、
Inter-Script-Communication(いまいちよくわからないですが、スクリプト間での
通信が可能らしいです。ネットワークを介することもできます)


To: てる さん

> 例えば、http://www.monex.co.jp のページで IDとパスワードを入力して、
> コンボボックスで何かを選択して、ログインする方法を教えて頂けないでしょ
> うか?

たとえばですが。

Set Ie = WScript.CreateObject("InternetExplorer.Application","IE_")

Ie.Navigate "http://www.monex.co.jp/free/index_frame/MonexFrame_2.html"
Ie.Visible=True
Do
WScript.Sleep 100
Loop

Sub IE_DocumentComplete(pdisp,url)
Set document=IE.Document
Set form=document.Forms(0)
form("form%SELECT_PAGE").Value="5"
form("form%LOGIN_ID").Value="hoge"
form("form%PASSWD").Value="pass"
form.Submit
WScript.Quit
End Sub

> コンボボックスに Value が設定されていない場合はどうしたらいいのでしょうか?

ちょっと誤解を招く表現だったので、補足しますと、
SELECT要素内のOPTION要素のうち、選択されたOPTION要素のValueプロパティが、
SELECT要素のValueプロパティに格納されます。
逆に、SELECT要素のValueプロパティを指定してやると、そのValueプロパティを持つ
OPTION要素が選択された状態になります。


To: いちにい さん

> と言うか、レジストリが、膨らむ一方で…。

コンポーネントの登録情報と、ユーザー設定が同じファイル(というか同じレジストリという
仕組み上)にあるのも、よく考えると変な話だと思いませんか?

> 何故か、簡単に出来る事ほど、なかなか自動化しない。(笑)

それありますよねー。
というか、私の場合、よくやる定型作業ほど自動化しない傾向があります(^^;
# だから使い捨てスクリプトが死ぬほどある。


To: あきら さん

ところで、コメント行の色分けって実装されていないのでしょうか。

> インストーラでどうにかしようかな…
> まだβ版で危険なので、関連付けはおあずけということで(汗)

インストーラーで、関連付けるかどうかのダイアログを出した方が
いいでしょうね。(インストール後でも設定できると良い)
あと、アンインストール時に関連付けを元に戻す機能をつけておくと
好感がもたれます(^^;

> 目的の語をキーワードで検索してウインドウ表示がしたいんです。
> 今だとまだ完璧ではないんですが、F1 で現在のキャレット位置の
> 単語を検索します。

なるほど、そういう機能があるんですね。
これ、今はVBSのヘルプしか検索しないですよね?

> 僕は経営学部ですよ。一応…

あら、すいません。

> MP3とかが将来的にどうなるか、著作権とかの問題をクリアして、標準で
> CDに取って代わるような戦略ができるか、みたいな事を書きました。

やっぱり、非可逆圧縮である以上はだめですよねえ。

_MP3はMIDIに取って代わられるのである。
# はっ、このネタは通じる人が少なそうだ

> あと、HTML の構文強調ですが、<> が比較演算子に使われてて
> 強調表示を正しくできません。ので、ボツにさせていただきます。
> 申し訳ないです。

そうなんですか、ちょっと残念ですが仕方ないですね。


To: なお さん

> 作成したvbsファイルを、明示的に CScript で走らせるよう指定することはできないのでしょうか?
>
> vbsファイルをパスの通った場所に置くだけで利用したいので、いちいち cscript fullpath\hoge.vbs とするのも面倒ですし、かといってデフォルトはwscriptのままにしておきたい....という状況なのです。

cscript.exe //H:CScript.exe
を実行すると、以降実行するスクリプトはcscript.exeで実行されます。
(と言ってもレジストリの記述を書き換えているだけなんですけど)

また、設定にかかわらず、つねにcscript.exeで実行させるサンプルを作りましたので、
参考にしてください。
自己呼び出しをしているので、少し危険なスクリプトなのですが。

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
If Fs.GetFileName(LCase(Wscript.FullName))="wscript.exe" Then
WshShell.Run "cscript.exe " & WScript.ScriptFullName ,1,False
WScript.Quit
End If

WScript.Echo "必ずcscript.exeで実行するサンプル"
WScript.Sleep 3000

なお さん 2001年 08月 01日 17時 08分 51秒

質問です。

作成したvbsファイルを、明示的に CScript で走らせるよう指定することはできないのでしょうか?

vbsファイルをパスの通った場所に置くだけで利用したいので、いちいち cscript fullpath\hoge.vbs とするのも面倒ですし、かといってデフォルトはwscriptのままにしておきたい....という状況なのです。

あるいは .wsh ファイルのオプションでできないかとも思いましたが、どう探しても[Options]の項目が、あちこちの「例」に載っている3ヶ条以外見つからず投稿いたしました。

何か手はないでしょうか....?


Return