お前ら、wsh使ってますか? Part2

このエントリーをはてなブックマークに追加
100名無し~3.EXE
>>99
キモイので
101名無し~3.EXE:02/06/27 19:28
>>102
キモイので
102にゃんこ:02/06/27 20:14
たくさん釣れてるにゃ。
今日はごちそうにゃ。
103名無し~3.EXE:02/06/27 20:14
(゚Д゚;≡;゚д゚)
104名無し~3.EXE:02/06/27 20:16
盛り上がってまいりますた!
105名無し~3.EXE:02/06/27 20:16
しまたぁー!釣り職人だったか。吊られたよ。もうだめポ。
106名無し~3.EXE:02/06/27 20:20
釣れた【つれた】[名]
自分の当てずっぽうレスを大勢に突っ込まれ&馬鹿にされた時に厨房が悔し紛れに言う単なる逃げ口上の最後っ屁。その後放置される。
107にゃんこ:02/06/27 20:25
>>106
当てずっぽうかにゃ?
今回の場合、文体じゃにゃいかにゃ?
でも、大漁だったからいいにゃ。
108名無し~3.EXE:02/06/27 21:13
>>107
つーかキモイので
109名無し~3.EXE:02/06/27 21:14
>>107
お前好きだいいやつうんこ。
110名無し~3.EXE:02/06/27 21:42
Windowsの凋落と共に消え去る言語を覚える漢達に敬礼ッ!!
111名無し~3.EXE:02/06/27 21:56
今後は、全員、語尾にニャなどを付けるニャ。
義務にゃ。

指定したURLのファイルを取ってきて
ローカルHDDにコピーするという
単純なスクリプトを書こうとして
挫折したにゃ。
どうしたらいいにょ?

とかいう感じでよろしくにぇ。
112名無し~3.EXE:02/06/27 22:22
>>111
キモイ
113名無し~3.EXE:02/06/28 00:08
>111
キモイにゃ。Σ(゚Д゚)
114名無し~3.EXE:02/06/28 12:29
今後は、全員、語尾にニャなどを付けるりゅん。
義務りゅん。

指定したURLのファイルを取ってきて
ローカルHDDにコピーするという
単純なスクリプトを書こうとして
挫折したりゅん。
どうしたらいいりゅん?

とかいう感じでよろしくりゅん。

時代は仙台りゅん。
115とある人:02/06/28 12:36
>>114
む…(意味深
116名無し~3.EXE:02/06/28 16:31
>>114
キモイ
117しぞー:02/06/28 18:15
今後は、全員、語尾にぴょんなどを付けるぴょん。
義務ぴょん。

入力した単語で複数の検索エンジンで検索して、
結果を検索エンジンごとのフレームに分けて表示するという
単純なスクリプトを書こうとして
挫折したぴょん。
どうしたらいいぴょん?

とかいう感じでよろしくぴょん。
118名無し~3.EXE:02/06/28 18:25
>>117
キモイ
119<丶`∀´> :02/06/28 18:49
今後は、全員、語尾にニダなどを付けるニダ。
義務ニダ。

入力した単語で複数の検索エンジンで検索して、
結果を検索エンジンごとのフレームに分けて表示するという
単純なスクリプトを書こうとして
挫折したニダ。
どうしたらいいニダ?

とかいう感じでよろしくニダ。
120名無し~3.EXE:02/06/28 18:50
>>119
キムチ
121名無し~3.EXE:02/06/28 18:54
>>119-120
warota
122名無し~3.EXE:02/06/28 22:41
IEのコンテキストメニューで「Bookshelfで単語を検索」って可能ですか?
当方2.0しか持ってないんです。
秀丸のマクロでそのようなものがあり非常に重宝してるんですが。
123前スレ680:02/06/29 00:20
>>85
ご紹介ありがd

MKEditorでも使えるようにしてみました。
>84
インストーラのバイナリ解析しないと無理

>88
・期待通りのこと
WSHと.NET Frameworkの統合版
言語はC#, JScript.NET, J#, VB.NET等。
変数が厳密に型付けされている。
・期待はずれのこと
まだ英語ベータ版のみで現在配布していない。
開発中のこと。

>90
なんで?

>91
あぁ、やっぱり。AppActivateはProcessIDも引数に取れます。
ProcessIDならWMIで取得できるし、似たタイトルでSendkeys誤爆しないので確実といった意味ですよ。
WMIを使わないならば、11さんの言ったとおり返り値判別ですけど。

>110
言語なんて頭が固くなければ何種類かは入るし。

>113
(・∀・)イイ!

>123
すいませんでした。その目的でTeraPadのインストールまではしたんだけどチェック漏れました。
これ以上は言い訳だから書かないけど。
それとウチDanaなんだけど、…ダメ?
いつからここは小学校になったのだ?

>111>114
windowをIEのインスタンスとおくと、
window.document.body.parentElement.outerHTML
をテキストストリームに書く。

>117>119
どこで挫折したのかを書かないと答えられない。
おそらく検索結果はGETで出力するだろうから、locationURLを取得して、
WSHで作ったframeに押し込んでやればいいのではないかな。

>122
"BookShelfがインスコされたパス\bs98jl.exe" -h -d "検索対象文字"
をシェル実行。

あと、わからないことがあったら放課後、職員室にくるように。
126名無し~3.EXE:02/06/29 11:00
おまえら全員職員室に正座だ!
127前スレ680:02/06/30 00:14
>>124
Dana落としてみました。普通のメッセージではダメみたいです。
ソースは当然公開されてないし、技術情報みたいのもないようなので、
どうやら無理っぽいです。スイマセン・・・。
答える都合上まとめて括ってしまったが、それは正座ものの質問ではないです。
気を悪くされたらスマソ。

>127
あ、試みて頂いてくれてありがとうございます。
その通りですね。状況が状況なので強いる気は全くないです。

#2chブラウザによっては名前数字、E-mail省略しないにするとこの場の該当ログを拾ってくれることに気がついて、
余計なことを言い放ってしまったと鬱。
↑上のほうは122さんへのレスね。
130にゃんこ:02/07/01 13:04
>>124
VC++やエスプレッソを使えばできますにゃ。
131名無し~3.EXE:02/07/01 16:25
>>130
いやキモイから
132にゃんこ:02/07/01 16:51
>>131
釣られ好き?
133名無し~3.EXE:02/07/01 16:52
>>132
ネコにゃので。
134名無し~3.EXE:02/07/01 17:05
>>132
キモイから
135名無し~3.EXE:02/07/01 17:07
>>136
ネコにゃので。
136名無し~3.EXE:02/07/01 17:09
>>135
だからキモイっつってんだろおおおおおおおおうおおおあああああ!!!!!!!
137名無し~3.EXE:02/07/01 17:13
>136
ごめんにゃさい
138名無し~3.EXE:02/07/01 17:13
>>136
ネコにゃので。
139にゃんこ:02/07/01 17:24
今年35ですにゃ
140にゃんこ:02/07/01 17:47
>>139
・・・
141名無し~3.EXE:02/07/01 18:17
>>139
さらにキモイので
142にゃんこ:02/07/01 20:03
>>141
ほんとのにゃんこじゃないから・・・
143名無し~3.EXE:02/07/01 20:17
144名無し~3.EXE:02/07/01 20:41
>>142
キモイので
145にゃんこ:02/07/01 20:48
>>144
出た、馬鹿が・・・
146にゃんこ:02/07/01 20:57

つーか、なんなの?おまえら
147 :02/07/01 21:00
にゃんこ大好きだよ
148名無し~3.EXE:02/07/01 21:16
>>146
キモイから
149名無し~3.EXE:02/07/01 21:19
wmiの使い方が詳しく載ってるところ教えて。
どういうメソッドとかあるのかさっぱり分からん。
150名無し~3.EXE:02/07/01 21:27
き・も・い
151にゃんこ:02/07/01 23:12
きもくないにゃん
152名無し~3.EXE:02/07/01 23:37
>>にゃんこ

荒らすのは止めてくれ。あなたが普通の言葉で書き込めば済むこと。
153にゃんこ氏ね:02/07/01 23:48
>>151おまえでていけにゃ
154名無し~3.EXE:02/07/01 23:52
>>153
キモイから
155名無し~3.EXE:02/07/01 23:57
>>154
アフォは放置しる!
>130
エスプレッソ? なに、それ?
つーか本当にインストーラでよく出てくる青地に白抜きの文字タイトルが取得したかったの?
ネタかと思ったよ。
その語尾で言われると加減がようつかめん。

>149
・使い方
ttp://homepage2.nifty.com/tcubic/wmifun/
ttp://www.microsoft.com/japan/msdn/thisWeek/wmi/koj990811.asp
ら辺は前スレ既出か。
ConnectServerメソッドの引数なら私も知りたい。
・クラス、メソッド等
WMIのクラス自体が拡張可能だからなぁ。
標準のをしりたいのならSDKが一番だろうと思う。(英語だけど)
VS.NETがあるなら
http://www.microsoft.com/downloads/release.asp?ReleaseID=38501&area=search&ordinal=1
で型付けされたクラスが取得できるんだけど、もはやスレ違い。
157名無し~3.EXE:02/07/02 00:44
>>156
おお、こりゃなかなかいい感じ。
どもども。
158にゃんこ:02/07/02 01:10
>>152
アラーシが途中から戦法変えてきてんの気付けよ。
煽られんなっつーの。
本物は3回しか書き込んでないっつーの。
159名無し~3.EXE:02/07/02 01:15
>>158
おいおい、責任転嫁かよ。いいわけレスでいちいちageないでくれ。
160名無し~3.EXE:02/07/02 01:18
反応してる奴が一番ウサイにゅ
161にゃんこ:02/07/02 01:29
というか本物が一番うざい
16211:02/07/02 01:33
メール欄参照。

>>156
ConnectServerメソッドの引数ですが、Rubyを256倍使うための本p.206-207に詳しい
解説があります。
もちろんSDKにはリファレンスがあると思いますけど、日本語なのがありがたいですね。

SDKに含まれるツール群も、オブジェクトモデル理解に役立つと思います。
今インストールしてないので詳しくは忘れましたけど、なんとかオブジェクトブラウザとかいう
名前のツールですね。現在のインスタンスを読み込んでプロパティの値を調べたりできます。

SDK今どこで落とせるんだろう…。
MSDN Web版は、しょっちゅうURLが変わって困るなぁ。
163にゃんこ:02/07/02 10:03
>>159
この場合、「責任転嫁」という言葉は適切じゃないだろ・・・
よーく文章を読んでみろ。
これじゃ知っている言葉を並べただけのヴァカだぞ。

>>161
負け犬が吠えてますな・・・
煽れないのがそんなに悔しいか?
(・∀・)カエレ!!
164にゃんこ ◆NYA9/moE :02/07/02 10:19
偽物が場を盛り上げてる間に
トリップつけてみましたにゃん
165にゃんこ:02/07/02 17:37
>>164
きもいにゃん
166名無し~3.EXE:02/07/03 04:39
にゃんで1000を目指しますか?
>162
すいませんでした。

あ、引数の件。解説ありましたね。邪道本再度読み返しました。
各ユーザの偽装レベルでも詰まっていたので、Securityプロパティもということになります。
それにしてもよくGetObjectでの書き方ってわかるよなぁ。

ビューワとしてみるのはCIM Studioですね。

現在SDKはここ
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
ただしCIM Studioは入っていない。

ttp://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?URL=/MSDN-FILES/027/001/566/msdncompositedoc.xml
SDKとしてみると古いが、CIM Studioを入手したいならここ。
168名無し~3.EXE:02/07/14 21:35
  ,,,,.,.,,,,
 ミ`Д´ミ <ほしゅ
  """"
169名無し~3.EXE:02/07/18 01:50
tes
170前スレ680:02/07/18 06:45
WSH補完クン ver0.32
いろいろバグがあったので修正しました。

http://www.geocities.co.jp/SiliconValley-Oakland/4672/
171名無し~3.EXE:02/07/19 06:17
ぐは!便利よ、これ。ついさっきwsh始めました。で、私にどうしろと?
172名無し~3.EXE:02/07/19 11:59
sendkeys を使って 無変換 キーを送りたいのだけど、
無変換 ってどう表せば良いの?
173名無し~3.EXE:02/07/19 17:57
29じゃないの?
174名無し~3.EXE:02/07/20 05:27
175172:02/07/20 07:54
>173 >174 サンクス!
dat落ちしたかと思った…。

>171
まずは、自動実行に関する汎用のアイデアがあったらカキコしてください。
って言うかお願い。

>172
2バイト文字、NFER、XFERも同様に送れない。
なので、>174さんのURLに書いてあるプログラムかなんかで送るのが常道か。
と、思ったけど送れるの?
WshShell.SendKeys 29
WshShell.SendKeys "{29}"
WshShell.SendKeys "29"
全部ダメだったけど???
177名無し~3.EXE:02/07/20 14:22
前スレHTML化キタ━(゚∀゚)━!!!!
178名無し~3.EXE:02/07/21 05:51
>>176
WshShell.SendKeys "{NONCONVERT}"
でもダメですなあ。

WSHOM.OCXを覗いた限りでは定義されてるっぽいんだが、
ヘルプに載ってないってことは使えないってことか・・・。(-"-
179前スレ680:02/07/22 00:51
180名無し~3.EXE:02/07/22 13:10
>178
教えて、キー定義はどこに書いてあるの?
オブジェクトブラウザでは見えなかったYO。
181178:02/07/22 13:56
>>180
バイナリエディタ

私のWSHOM.OCX(5.6.0.6626)では、0xCBA0から。
ただし、>>178でも言ってるとおり「それっぽい」ってだけなんで、
この部分がSendKeysの定義であるかは保証しない。
182名無し~3.EXE:02/07/23 21:59
age
183名無し~3.EXE:02/07/23 22:15
分かった。ありがとう。ウチのでも同じところにあった。
どっから参照しているのかとか
区切り子であるはずのnull文字の個数の規則性がつかめないので
少し残念だがここまでであきらめるしかない。
184名無し~3.EXE:02/07/24 00:29
>>183
普通に4バイトごとになってると思うけど・・・。>nullの個数
185名無し~3.EXE:02/07/24 11:00

WSH(VBScript) で外部サーバのデータベース(Oracle)に
接続したいのですが、どうすればいいのでしょうか?

ほかのサイト見ても、
サーバの指定方法まではなかったので。

おねがいします
186名無し~3.EXE:02/07/24 11:22
>>185
ADO使ってODBCデータソースを指定すればそのまま行けるんでわ?
187名無し~3.EXE:02/07/24 15:41
>186
具体的なやり方を教えていただけますか?
厨でスマソ
>187
こういうこと。
VBSに限らないで、VBでも一緒だからそれを含めて調べたほうがいいな。
環境がなく未確認だがADO2.1以上でいけるはず。

Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set cnn = Wscript.CreateObject("ADODB.Connection")
Set rec = WScript.CreateObject("ADODB.Recordset")

' Oracleとの接続を確立する
cnn.Open "Provider=MSDAORA;" & _
"Data Source=NT;", "scott", "tiger"

' SQLステートメントを指定してレコードセットを作成する
rec.Open "select * from EMP", cnn, _
adOpenKeyset, adLockOptimistic
↑元ソース(VB)を参考に示しておく。
ttp://homepage2.nifty.com/inform/vbdb/ado_oracle.htm

ほとんど変わらない。
違いはWSHの制限として明文化されたことだけです。

>183
多分180と同人物だよね。
趣味ならいいんだけど、コレまでの経緯で定義文字は参照しないこともあるっていう
結論が出ているのだからそれ以上(180-183の間)は時間の無駄としか思えない。

そこまでするのならWScript.exeを逆汗した方がイイのでは?
…とか提案しておいて言えた義理じゃないが、自分だったらやりたくねぇ(w
190185:02/07/24 22:59
>>188 - 189

なるほど、VB と同じやりかたでいいんですか。
どうもありがとうございました m(__)m
191名無し~3.EXE:02/07/25 02:16
以下のスクリプトがうまく動かないのですが、原因わかる方教えて下さい。
ウチの環境では「8」、「9」が返されるべきところで「0」が返って来るんだが...。
Win98SE/WSH5.6

var re = /hoge(\d+)\.txt/i;
var i;

for (i = 1; i < 10; i++)
{
   WScript.Echo(getNum('hoge0' + i + '.txt'));
}

function getNum(Path)
{
   if (Path.match(re) != null)
      return parseInt(RegExp.$1);
   return null;
}
192191:02/07/25 02:49
すまん、解決した。よってレス無用。
193名無し~3.EXE:02/07/25 03:50
>>191
レス
>191-192
レス無用と書かれてもなぁ。
正規表現の一般的な罠なんだから、解決方法書こうよ。お願い。

冒頭コレにすれば取得したい範囲では問題はなくなる。
var re = /hoge0*(\d+).txt/i;
いまさら8進法も使うこともなさそうなんだが、メタキャラクタマッチよりも後回しで優先順だけ高い。
195名無し~3.EXE:02/07/25 18:51
191は聞くだけ聞いて自分は貢献しようとしない厨ですから
196191:02/07/26 00:26
>>194
>>195
おお、スマンスマン。俺の解決法は、

parseInt(RegExp.$1)
     ↓
parseInt(RegExp.$1, 10)
197名無し~3.EXE:02/07/30 01:32
すいません、さっきはじめたばかりの初心者なんですが、
「C:\WINDOWS\Temp\*.tmp」を消そうとして以下をつくったのですが、
そんなファイルは存在しませんといわれてしまいました。
こういうときどうするのがスマートなんでしょうか?

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\WINDOWS\Temp\*.tmp")
objFile.Delete True
198名無し~3.EXE:02/07/30 02:41
>>197
GetFileメソッドの引数にはワイルドカード使えないんじゃ・・・。

Const TemporaryFolder = 2
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.DeleteFile Fs.GetSpecialFolder(TemporaryFolder).Path & "\*.tmp", True
199197:02/08/02 22:40
>>198

ありがとうございます。
ただ、いただいたコードを実行したところ
行:3
文字:1
エラー:書き込みできません。
コード:800A0046

と怒られてしまいました。。。

なお、WinXP-Proで、いつもAdminitaratorで作業しています。
200名無し~3.EXE:02/08/02 23:44
>>199
多分、*.tmpファイルの中にどっかのプロセスが現在使用してる
ファイルが含まれてるんだろう。
例えば、HTMLHelpを開いてたりするとそうなる。

エラーは一応、On Error Resume Nextを入れれば回避できる。

ただこれでは、エラーが出た時点で、メッセージを出さずに削除処理を
中止して次へ進むだけなので、使用中のファイルを除いて削除
したいのなら、TEMPフォルダのFilesコレクションを、For Eachで回して、
一つづつ削除するのがいいのでは。
201名無し~3.EXE:02/08/09 20:43
このスレ イイ
202名無し~3.EXE:02/08/13 19:11
人居ます?質問したいんだけど・・・。
あまりいません。
204名無し~3.EXE:02/08/13 22:20
>>202
一応みてる。
質問来たら、答える気になればきっと答える。
205名無し~3.EXE:02/08/14 01:47 ID:Yxxqk002
点呼3

全く居ないわけじゃない様子。
20611:02/08/14 03:38 ID:AxCXFV0k
点呼4
207202:02/08/14 11:18 ID:t/R3SZGG
では よろしくお願いします。

'---ScriptRun.vbs------------------------------

Set TP = CreateObject("DoMacro.TeraPad")

FilePath = TP.FilePath
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "FilePath"

Set TP = Nothing


DoMacroなんですが 編集中のVBS・JSを実行したいんですよ。
勘だけでやっていたので 詰まってしまいました。勉強してこよ・・・。
208名無し~3.EXE:02/08/14 13:17 ID:C+kV5/v3
>>207
TeraPadにマクロ機能もたせるDoMacro使ってないので
よくわかんないけど、一応。

FilePathはまずいんじゃないか?
FP = TP.FilePath
とでもしてみるとか。

あとはwsript.exeの引数に編集中のファイルのパスを指定する形で起動とか

実験するのメンドイので、適当な答えでスマソ

# 埋もれてるスレなので
# 質問の時くらいはageても良いかもとか思う。
# 強制IDになったから荒らしも少しは減るだろうし。
209名無し~3.EXE:02/08/14 13:23 ID:C+kV5/v3
連続スマソ

TeraPadで単に編集中のvbs/jsファイルを実行するだけなら、
WSHにこだわらなくても、
ツールに

実行ファイル wscript.exe
コマンドラインパラメータ "%f" %*
上書き保存する

を登録して使うとかでもいいんでない?
210202:02/08/14 19:09 ID:t/R3SZGG
レスありがとうございます。

>>208
FilePathをFPにしても 無理みたいですね・・・。
エラー内容は『行:8 文字:1 エラー:指定されたファイルが見つかりません。』
ってなってます。

>>209
あー そういう方法もあるんですか・・・
DoMacroでやる事にこだわりすぎていました(笑)

『%*』はなくてもいいみたいですね。
入れた方が良いのかな?
211名無し~3.EXE:02/08/15 06:36 ID:GgE5oKhT
>>207
8行目
WSHShell.Run "FilePath"

"で括る必要はないだろ。
212名無し~3.EXE:02/08/15 06:49 ID:GgE5oKhT
ついでに俺の使ってるスクリプト

var fso = new ActiveXObject('Scripting.FileSystemObject');
var shl = new ActiveXObject('WScript.Shell');
var tp = new ActiveXObject('DoMacro.TeraPad');
var arg = WScript.Arguments;
var tmp = fso.GetSpecialFolder(2).Path + '\\wshtmp.';
var ext, prm = '';
if (arg.length > 0) {
  ext = fso.GetExtensionName(arg(0)).toLowerCase();
  if (arg.length > 1) {
    prm = arg(1);
  }
  if (fso.FileExists(arg(0)) && (WScript.ScriptFullName != arg(0)) && ((ext == 'js') || (ext == 'vbs')))
  {
    try {
      fso.DeleteFile(tmp + '*');
    }
    catch(e) {
    }
    var tf = fso.CreateTextFile(tmp + ext);
    tf.Write(tp.GetAllText());
    tf.Close();
    if (prm != '/c') {
      shl.Run('wscript ' + tmp + ext);
    }
    else {
      shl.Run('COMMAND /K cscript ' + tmp + ext);
    }
  }
}
213202:02/08/15 12:41 ID:xTVZ2osb
>>211
ホントですね。
括りを外したら きちんと動作しました。
スペースが入りのフォルダ対策に括っておいたんですけど 入らないんですね。
# スペース入りのフォルダなんて作りませんが 一応。
214名無しさん募集中。。:02/08/15 14:31 ID:mc8sO6oz
>212
これいいなぁ。
GetAllTextメソッドをGetSelTextに変えたのも作っておいて選択範囲を実行なんてのも
問題点の絞込みに役立ちますね。

>213
そういう意味なら
"""" & FilePath & """"
じゃないの?
215211:02/08/15 23:43 ID:OHF1rEI2
>>214どもです。さすがに>>212のままではチトあれなんで、
ご意見を踏まえつつ、VBSで書き直し。

Dim Fso, Shl, Tp, Arg, Temp, tmp, ext
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Shl = CreateObject("WScript.Shell")
Set Tp = CreateObject("DoMacro.TeraPad")
Set Arg = WScript.Arguments
tmp = Fso.GetSpecialFolder(2).Path & "\wshtmp."
If Arg.Count > 0 Then
   ext = LCase(Fso.GetExtensionName(Arg(0)))
   If Fso.FileExists(Arg(0)) And ((ext = "js") Or (ext = "vbs")) Then
      On Error Resume Next
      Fso.DeleteFile(tmp & "*")
      Set Temp = Fso.CreateTextFile(tmp & ext)
      If Tp.GetSelStart = Tp.GetSelEnd Then
         Temp.Write Tp.GetAllText
      Else
         Temp.Write Tp.GetSelText
      End If
      Temp.Close
      If ArgExists("/c") Then
         Shl.Run "COMMAND /K cscript " & tmp & ext
      Else
         Shl.Run "wscript " & tmp & ext
      End If
   End If
End If

Function ArgExists(Prm)
   Dim i
   ArgExists = False
   For i = 1 To Arg.Count - 1
      If Arg(i) = Prm Then
         ArgExists = True
         Exit For
      End If
   Next
End Function
216名無し~3.EXE:02/08/16 05:15 ID:Tm/LIADi
Hourglass・・・何でダメなんだろう

こんな初歩的すぎるような質問じゃ怒られるかな。
大した使い方はしてません。
いくつかのファイルをあっちのマシンからからこっちのマシンににコピーするだけのvbsなんですが、ものがデカいのでちょっと処理に時間がかかる。
いまはマシンが処理中だぞと、だから余計な手出しはするなと(みんな必ずマウ
スをカチカチやってる)、砂時計を出したいんです。

MousePointer = "Hourglass"
・・・処理・・・
MousePointer = "Default"
Msgbox "コピー完了"

web上のどこだったかお役立ちサイトみたいなところで拾ってきた書き方なんで
すが、これじゃダメみたいです。
217名無しさん募集中。。:02/08/17 12:31 ID:xO6Kd2EI
>216
その質問は初歩でなくとても高度なものです。
なのでコピー中の表示だったら、ShellオブジェクトのCopyHereメソッドを使ってダイアログを表示させ注意を促すのが得策かも。
VBと違って、Screenオブジェクトって無いんスよ。だから上記のプロパティも書き方もダメ、と。
とかいってAPI叩いてどうにかなんないかなとか試していたのは秘密。

Dim Shell, oFolder
Set Shell = WScript.CreateObject("Shell.Application")
Dim sFolder,sFile
sFolder="C:\WinNT\Temp"
sFile="D:\Documents and Settings\hogehoge\Local Settings\Temp\bigfile.tmp"
Set oFolder=Shell.NameSpace(sFolder)
oFolder.CopyHere sFile

な感じで。
218名無し~3.EXE:02/08/17 16:11 ID:aGwvq6Ld
( ゚Д゚)・・・MousePointerってなんだろう?

って思ってたのは秘密にしておいて良いでつか?

それはそうと、スクリプト処理中に手を出して欲しくない時は、
MsgBoxをループさせてます。
しかも画面一杯に近い大きさのMsgBox( ゚∀゚)y--┘~~~
219名無しさん募集中。。:02/08/18 00:53 ID:t9Hz/bk7
「このフォルダのカスタマイズ」 って一体どうなっちゃうんだろう。

>218
彼はVBでいうところの
Screen.MousePointer = Hourglass
がやりたかったのだと思われ。
できたら応用は利くと思うんだが、私の方はちょっとあきらめムード…。

最大化ダイアログそれいいなぁ、アイデア頂きます。
こんな感じで。

Dim window, txtDisp, i
Set window = WScript.CreateObject("InternetExplorer.Application", "IE_")
window.Navigate2 "about:blank"
With window.document.parentWindow
.document.write "<html><head><style>body{height:100%;font-family:'MS ゴシック';text-align:center;font-size:60;" & _
"background-color:menu;overflow:hidden;border-style:none;border-width:1pt;cursor:wait;}" & _
"</style><head><body><div id='txtDisp'></div></body></html>"
.moveTo 0,0
.resizeTo .screen.availWidth,.screen.availHeight
.document.title = "作業中"
Set txtDisp = .document.getElementById("txtDisp")
txtDisp.innerText = "作業中だ、邪魔するなYO"
End With
window.toolbar = False
window.statusbar = False
window.menubar = False
window.Visible = True
WScript.Sleep 5000 ' ここで時間のかかる作業
window.Quit
Set window = Nothing
220216:02/08/18 12:25 ID:WfqKi9Zo
>>217
レス感謝します
プログレスバー(っていうんでしたっけ)簡単に出せるんですね
ちょっとびっくり
↓みたいな感じでやってて、プログレスバーを出すのは無理だと
思ったので、砂時計を考えたんです。

Dim source, destination, fs
Set fs = CreateObject("scripting.FileSystemObject")
source = ("-----")
destination = ("-----")
fs.CopyFile source, destination, True

>>219
Screen.MousePointer = Hourglass
そう、たしか原文はそんな感じでした。
でも何だかエラーで怒られ、ためしにScreenを消してみたらエラーが出
なくなった。
これでOKかと思ったら、けっきょく何もしてくれなかった、と。

スミマセン
おバカな質問で流れを乱してしまいました
221名無し~3.EXE:02/08/19 01:00 ID:99GW24bS
プログレスバーを出せるというよりも、Shell.Applicationにお任せすると、
あのダイアログが勝手に出ると思ったほうがいいかも。

VBSで利用できるグラフィカルなインターフェイスはメッセージボックスと
インプットボックスだけ。
222age2ch.pl 0.03.24:02/08/19 21:44 ID:g41Au0n0
223名無し~3.EXE:02/08/19 23:31 ID:sTdCePWu
wshを使って右クリックを表示させることは可能ですか?
224名無し~3.EXE:02/08/26 21:54 ID:Auq8je+P
>>223
右クリックを表示???
質問ならばageれ。
225名無し~3.EXE:02/08/26 23:51 ID:kynNWzrc
WScript.Echo "右クリック"
226名無し~3.EXE:02/08/27 13:02 ID:hzdkbXyS
ブラウザ上で、表示されているHTMLの操作(例えば文字や背景の色を変える、
画像を消したり、拡大する)ということは可能でしょうか?
よろしくお願いします。
227名無し~3.EXE:02/08/27 13:42 ID:VZWRmaRN
>>226
可能。
228名無し~3.EXE:02/08/27 18:57 ID:NEnobPxp
Perlでも可能と聞いたんですが、詳しく解説してある本もしくは
サイトを知っていたら教えて下さい。
今の所これしか見つかってません。
http://www2f.biglobe.ne.jp/~takan/javac/js/wsh/tip_perl.htm
229名無し~3.EXE:02/08/27 19:25 ID://2QUyaL
ActivePerl 入れて、
eg\Windows Script Components\First.wsc
を右クリック->登録でよくない?
230名無しさん募集中。。:02/08/28 01:02 ID:svHcx3Ry
>223
微妙にウケタ。
まぁマジに返すと、自動実行と自動操縦はちっと違うんですがねー。

>226
IEならばDOMレベル、Shellレベル双方に可能。227さんの言った通り。
レベル的にはもう一つあるような感じだがなし崩しでやっているのでようわからんのですわ。
サンプル挙げとく。開いているGoogleを黒くします。
Set oShell = WScript.CreateObject("Shell.Application")
For Each window In oShell.Windows
Set oDocument=window.document
If TypeName(oDocument)="HTMLDocument" Then
If oDocument.title="Google" Then oDocument.body.style.backgroundColor = "black"
End If
Next

>228
自分はPerlScriptは逃げました。
だったらPerlを使った方がコミュニティも確立しているし、文法的には変わらないけど
荒野を好きこのんで迷走する感じで。
モジュールが使えたのはちと感動しましたが。
というわけで力になれなくてスマソ。
231名無し~3.EXE:02/08/31 23:04 ID:COirDX1R
アクティブなウィンドウ(タイトル?)を取得し、
それが xyzzy なら Ctrl+c Ctrl+f 、MDIBrowser ならAlt+↑といった具合に、
アプリケーションごとに異なるキーを Sendkeys で送るスクリプトを作り、
マウスのホイールボタンを押した時に呼び出して使おうかと思っているのですが、
Sendkeys 以外は、さっぱりわかりません!

アクティブなウィンドウの取得と、その比較って、
JScript では、どのようにすれば良いですか?
232名無し~3.EXE:02/09/01 00:29 ID:OTLFH7bW
>>231

> マウスのホイールボタンを押した時

ホイールボタンのクリックをどうやって判断してるんですか?
233名無し~3.EXE:02/09/01 01:45 ID:+LtYv4sw
マウスのユーティリティーにそういう機能があるんじゃないの?
単なる推測だけど。
234前スレ680:02/09/01 04:16 ID:OTLFH7bW
変な時間に目が覚めた。

>>231
JScriptでは、うまくいかんかったのでVBScriptで。
とりあえず、タイトル取得まで。あとはがんばれ。

Dim Dc1, Dc2, hWnd, cap, l

Set Dc1 = CreateObject("DynamicWrapper")
Set Dc2 = CreateObject("DynamicWrapper")
Dc1.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc2.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"

hWnd = Dc1.GetForegroundWindow
if hWnd <> 0 Then
   cap = String(256, 0)
   l = Dc2.GetWindowTextA(hWnd, cap, 255)
   if l > 0 Then MsgBox cap
End If
235前スレ680:02/09/01 04:22 ID:OTLFH7bW
>>233
なろほど、そうかも。それなら納得。
236231:02/09/01 07:53 ID:9F64xAy5
おはようございます。

>>232
ほぼ233さんのいうとおりで、
ClockLauncher というソフトを常駐させていて、
そのソフトにホイールクリックを監視して
任意のプログラムを実行する機能があるのです。

前スレ680さん、朝早くから有り難うございます。
ここまで教えていただければ後は自分で補えるかもと思い
早速実行してみたのですが、
ActiveX コンポーネントはオブジェクトを作成できません。:'DynamicWrapper'
というエラーが Set DC1 の行で発生してしまうのです。
環境に問題があるのでしょうか?

環境は、
Win2kSP3
wsh 5.6
IE 5.5SP2
です。
237名無し~3.EXE:02/09/01 11:25 ID:kDlAqiHy
>>236
DynaCall
238名無し~3.EXE:02/09/01 11:29 ID:kDlAqiHy
というか、Intelli Mouse互換マウス使ってるんなら、
マウスドライバでアプリごとに、各ボタンの挙動を指定できるから、
それでやれば良いんじゃないの?

とか、思った。
239231:02/09/01 20:06 ID:utY+/SER
>>237
>>3のリンクから dynawrapNt.zip をダウソしたのですが、
これってどうすれば利用できるようになるのでしょうか?
240231:02/09/01 20:37 ID:utY+/SER
MAKE.BATを実行すれば良かったんですね。スマソ

>>236のエラーは出なくなったのですが、
今度はDc2.Registerの行で、
プロシージャの呼び出し、または引数が不正ですというエラーが出てしまうのです。

どうすれば良いでしょうか?
241前スレ680:02/09/01 23:32 ID:pddX4pKI
>>240
もしかして、環境依存なのかも・・・。
ウチの環境では>>234をコピペするだけで動くけど。

Win98SE
WSH 5.6
IE 5.01sp2
242231:02/09/01 23:59 ID:utY+/SER
>>241
そうですか・・・。
私にはエラーが出る原因がわからないので、
タイトル取得と比較はCで作成してしまいました。
ただ、CでSendkeysを再現しようとすると非常に面倒なので、
そこだけJScriptを呼び出すという、非常に不恰好な仕上がりになりました。
ありがとうございました。
243前スレ680:02/09/02 23:42 ID:/lIkpGnE
>>242
終了した話題を蒸し返してすいませんが、エラーの原因と思われるもの
が分かりました。

DynaCallのNT版のソースや、>>3のページを見た限り、
NT版では引数の型指定で r (参照)が定義されてないので、
Dc2.Registerの行の"i=hrl"がエラーになるみたい。

NT版は参照渡しが出来ないのだろうか?
244 :02/09/05 19:15 ID:qqlWL1jz
19に書き込んでいる方と同じような質問なんですが、
submitボタンを自動でクリックするする方法がわかりません。
例えば、
>34の
google検索のボタンを自動で押すのではなく
I'm Feeling Luckey
のほうのボタンを押すためには
window.document.f.submit()
をどう書き換えれば良いのでしょうか。
245244:02/09/05 19:17 ID:qqlWL1jz
すみません。
>34 ×
>39 ○
246244:02/09/05 19:27 ID:qqlWL1jz
すみません。もうひとつ質問させてください。
例えば、
<select name="KAZU">
<option value="">▼数を選択してください</option>
<option>1</option><option>2</option><option>3</option>
</select>
のように、<option>にvalueが定義されていない場合、
自動的に選択するにはどうすれば良いのでしょうか。
247244:02/09/06 12:27 ID:I9u5zhZr
244の方は何とか自分でわかりました。
246誰か教えてください。
248名無し~3.EXE:02/09/06 13:26 ID:aRHJq4gH
window.document.all.KAZU.selectedIndex = 1
では?
249244:02/09/06 13:43 ID:I9u5zhZr
ありがとう。
selectedIndexの部分がわかりませんでした。
250名無し~3.EXE:02/09/06 23:31 ID:xN6oAzsE
あの、がいしゅつかもしれませんが。

JScriptxで、URLのラベル(?)を見て処理したいのですが、

<a href="http://www.where.to.go">Label</a>

みたいになっていて、この</a>の前のLabelという文字列はどうやったら取得できるでしょうか。
この文字列を比較して、条件を満たしたらその前のURLにジャンプしたいんです。

ぶしつけな質問ですみません。よろしくお願いします。
251名無し~3.EXE:02/09/06 23:47 ID:Kyi/Xc3Z
domれ。
252名無し~3.EXE:02/09/06 23:52 ID:zMlS15qY
文字列中で " を扱うにはどうしたらいいですか?
253名無し~3.EXE:02/09/07 00:11 ID:9NbA7xQL
>>252
\"
254名無しさん募集中。。:02/09/07 09:07 ID:+qAlWGGu
>243
NT系もAnsiでいいんでしたっけ?半可通発言ですまんです。
APIいじりは面白いんですが、時間を取られるのが、一番つらいです。
強制終了繰返して不安定→再起動とか。
なので、うまくいくラッパーの関数、クラスとか持ち寄ってWSH版Win32Api.txtみたいなのを
作っていけないかなぁ、と妄想を垂れ流してみる。

>250
ttp://www.openspc2.org/html_v3/
ttp://www.microsoft.com/japan/developer/library/jpisdk/dhtml/references/dhtmlrefs.htm
ここら辺をじっくり読む事をお勧めする。
簡単なサンプルを示す。今起動しているIEのアンカー全てを列記します。

Set oTS = WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile("anchorlist.txt", 2, True)
Set oShell = WScript.CreateObject("Shell.Application")
For Each oWindow In oShell.Windows
Set document = oWindow.document
'MsgBox TypeName(document)
If TypeName(document)="HTMLDocument" Then
For Each oAnchor In document.all.tags("A")
oTS.Write oAnchor.href & "," & oAnchor.innerText & vbNewLine
Next
End If
Next
oTS.Close
255250:02/09/07 10:35 ID:VTrRLQIF
>>254

innerTextですね!できました。
リンクも大変参考になります。
どうもありがとうございました。
256名無し~3.EXE:02/09/07 11:02 ID:BXJhH6jp
タブブラウザのスクリプト対応からか、DHTML関係の質問ばっかりに見えるんだけど、
スレ違いではないのかな。
ヘタすると乗っ取られそうな気が。
257名無し~3.EXE:02/09/07 17:41 ID:TMpBirwd
>>252
VBScriptなら "" (ダブルクォーテーション2つ)
258名無し~3.EXE:02/09/07 23:52 ID:hXONB4T8
スレテンプレートの外部コンポーネント
BASP21 - メール、ファイルエンコード、文字コード変換、FTP/HTTPアップ、その他
ttp://www.hi-ho.ne.jp/babaq/basp21.html

を使ってメールの送信を行おうとしています。

その機能自体は、なんとか実装できそうなのですが
ひとつ疑問があります。


メールの送信時にパスワードって不要なんですか?
パスワードの設定をしないでメールが送れてる
ようなのですが・・・???



当方、excelの延長でちょっとVBAがわかる程度のスキルです。
ちょっと気になるので
わかるかたお答えお願いします。
259名無し~3.EXE:02/09/07 23:57 ID:pUxgxmR8
普通SMTPにはパスワードが設定されてないから大丈夫なんじゃないの?
260名無し~3.EXE:02/09/08 00:00 ID:29xq9xoD
>>259
解答ありがとうございます。


すると
SMTPってのは、どこのプロバイダのものを使ってもいいってことですか?
261名無し~3.EXE:02/09/08 00:04 ID:x9goP+Ed
>>258
ん?メールの送信にユーザーは必要無いと思うけど。
WSHとは関係無いが。

別に差出人のメールアドレスが存在しないアドレスでもメールは出せるよね。
サーバーのほうで制限しない限り。
262名無し~3.EXE:02/09/08 00:11 ID:29xq9xoD
>>261


ただ単に、メールを送るのにもなんらかの制限があるもんだと
思い込んでいました。

ようは出す分には、そこら辺の郵便ポストみたいに
気軽に誰でも出せるけど
郵便受けには鍵が掛かっているってイメージですね。

勉強になりました。ありがとうございました。


**
スレ汚し失礼しました
263名無し~3.EXE:02/09/08 00:15 ID:5MKk6T8p
>>郵便受けには鍵が掛かっているってイメージですね。
つか、そのまんま受け取り拒否と言う表現でいいと思う。
264前スレ680:02/09/08 02:01 ID:gjB9L3lO
>>254
むむぅ・・・。バイナリ見てみたら、r も定義されてるみたいだ。>NT版

よくわかりませんが、アーカイブに入ってるccupd.vbsがそのままで
動くんであれば、Ansiでいいんだと思いますが。
ついでに r が使えることもわかるし。

もしそうなら、>>243は全くの見当違いということになるな。(-_-
265名無し~3.EXE:02/09/08 05:23 ID:n4AN3fBn
D&Dしたファイルを開くスクリプトってどうやって書いたらよろしいんでしょうか?
たとえば、txtファイルをD&Dしたらメモ帳で開く、みたいなスクリプトがほしいんですけど
266名無しさん募集中。。:02/09/08 07:13 ID:VNMtUvq7
>256
そうですね。順全にDHTMLのみならむしろ板違いかな。
Web製作板の方が合っているような気がします。
http://pc3.2ch.net/test/read.cgi/hp/1030162756/
http://pc3.2ch.net/test/read.cgi/hp/1030814342/
とか誘導してみる。

>264
すみませんね。ちょっと言ってみたかっただけなんです。
その後、気になってDocument見ていたら(←その後かよ)
NT系ではAnsiとUnicode両方サポートとかいてありましたので。

メモリが"read"になることはできませんでした のエラーと
VBScriptでサポートされていないオートメーションです のエラーが出る。
どっちのほうが正解に近いんだかもわからない。

>265
WScript.CreateObject("WScript.Shell").Run "notepad " & WScript.Arguments(0)
デバッグしてないんで後よろしく〜。(ぉ
267265:02/09/08 17:42 ID:n4AN3fBn
>>266
おぉ!できました。
なるほどって感じです。なぞってもんはわかってみると大したことないもんですね
268名無し~3.EXE:02/09/08 19:02 ID:/69PnI1O
>>267
謎というか、リファレンスに書いてあるけど。
269前スレ680:02/09/10 01:08 ID:Ba65DTfO
>>266
いや、別に謝んなくてもいいと思いますが。
私は実際に試せないので、所詮、推測に過ぎませんから。

> メモリが"read"になることはできませんでした のエラーと
> VBScriptでサポートされていないオートメーションです のエラーが出る。

ってことはUserWrap.Registerの行は無事に通過してるってことでしょうか?
NT系でも r は使えるみたいですね。>>234はドコが駄目なのかな?

Dim Dc, hWnd, cap, L

Set Dc = CreateObject("DynamicWrapper")
Dc.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"

hWnd = Dc1.GetForegroundWindow
If hWnd <> 0 Then
   cap = String(256, 0)
   L = Dc2.GetWindowTextA(hWnd, cap, 255)
   If L > 0 Then MsgBox cap
End If

とかかな?9x版と、NT版の仕様の違いがよくわからん。(-"-;
270前スレ680:02/09/10 01:11 ID:Ba65DTfO
間違えた・・・。スレ汚しスマソ。

Dim Dc, hWnd, cap, L

Set Dc = CreateObject("DynamicWrapper")
Dc.Register "user32.dll", "GetForegroundWindow", "f=s", "r=h"
Dc.Register "user32.dll", "GetWindowTextA", "i=hrl", "f=s", "r=l"

hWnd = Dc.GetForegroundWindow
If hWnd <> 0 Then
   cap = String(256, 0)
   L = Dc.GetWindowTextA(hWnd, cap, 255)
   If L > 0 Then MsgBox cap
End If
271名無しさん募集中。。:02/09/10 23:21 ID:qg0jQu7R
ほぼ雑文モード。

>269-270
いや、私はAPIを使って目的を果たしたことないから、
使える680さんを尊kの目で見ているんですよ。

270の方で出来ました。
ただし、取得できるアプリとそうでないものがあります。
デスクトップ(Program Manager)とIrvineは取得できる。
A BoneとDanaは取得できない。(スレタイとかファイル名とかでどうしても長くなる所為か)
タイトルの文字数が多いと取得できない感じです。

また、出るエラーは
"read"になることはできませんでした の方。

あ、言い遅れてましたが当方W2kSP3です。

自分としては急いてはいないつもりなんだけど、提案としては初めてだし、
やりたい事の初めの取っ掛かりが形にならないのでもどかしく思っている。
↑9x系とNT系の違いを吸収できるアクティブウィンドウのタイトル文字取得関数の事。のみならず、今後の方針も含めてね。

WSHで普通に取得できるリテラル群と親和性が高いものであるべきだとか。
かつ、標準では出来ないが、出来たら応用性が高くなるものだとか。
ブラックボックス化しても特に困らない事だとか…。
272前スレ680:02/09/11 06:57 ID:OKPUkhW1
おお、>>270でいけましたか。

9x版とNT版の違いは
9x ・・・ 各関数ごとにDynamicWrapperのインスタンスを作成しなければならない。
NT ・・・ 2つ以上のインスタンスを作成してはいけない。
ってとこなんでしょうかね?って、まったく逆じゃん・・・。Σ(´Д`ズガーン

取得できないのはこちらでも確認しました。
Win98SEでは、タイトルバーの文字列が39バイト以下でないと駄目でした。
(それ以上の時は空、もしくは文字化け。さらに84バイト以上は強制終了)
ってことで結局、

L = Dc.GetWindowTextA(hWnd, cap, 40)

が正解っぽいです。こうすれば、長いタイトルのときも始めの39バイトだけ取得できるので、
あとはスクリプト側でなんとかすると。でも、NT系では取得可能バイト数が違うかも。
273名無し~3.EXE:02/09/11 07:03 ID:mN/JRWjS
(´-`).。oO(JScriptからてっとりばやくInputBox使うにはどうするのが良いかな・・・)
274名無し~3.EXE:02/09/11 16:16 ID:wjRu52ce
var oIE = WScript.CreateObject("InternetExplorer.Application");
oIE.Navigate2("about:blank");
var s = oIE.document.parentWindow.prompt("何か");
じゃだめ?
275名無し~3.EXE:02/09/11 17:20 ID:mN/JRWjS
>>274
今はそんな感じでやるか、
.wsfでVBScriptとJScriptを混在させるかどっちかでやってます。
どっちにしろ、あまりスマートじゃないなぁと思ったので、
いいアイディア無いかなぁと。

InputBox表示する.vbsファイル作っておいて、
それを呼び出すとか言う方法もあるみたいですね。
http://www.borncity.com/WSHBazaar/WSHEnvironment.htm

ちなみに友人には
「JScriptにこだわらないで、InputBox必要ならVBScriptでやれば良いじゃん」
って言われて終わりでした。
ごもっとも。

なんで欲しいかって言ったら、
決め打ちで処理しちゃう適当極まりないJScriptファイル作ったら、
それが意外に使うので、
いちいちファイルの中身を書き換えないで、対話式に出来るようにしようと思ったら、
InputBox作れないので、VBScriptに書き換えるということが何度かあったのですよ。

InputBoxだせるActiveX Control導入は、
出先とかで使えないので、ちと辛いしなぁ・・・。

# JScript.NETコンパイラって.NET framewrok SDKに付いてるのか?
276名無し~3.EXE:02/09/14 00:10 ID:89qx8XwE
> # JScript.NETコンパイラって.NET framewrok SDKに付いてるのか?

付いてる
277sage:02/09/15 01:18 ID:eH1Nj97e

自薦許して、http://yuriken.hoops.ne.jp/ (jsです)
ここで話題になっている様な事(コンポーネントとか、APIとか)は、
ちょっと歯が立たないというか、紹介されている所を見ても
理解の前提が欠けているのだなと思い知らされるばかりで、、

278名無し~3.EXE:02/09/15 01:23 ID:eH1Nj97e
間違った、こっちに入れるのか、
279名無し~3.EXE:02/09/15 22:10 ID:1PQY6rwP
Cでアルゴリズムの講義を受けた程度なんだけど
VBSとJscript、はじめるならどっちがとっつきやすいかしら?
280名無し~3.EXE:02/09/15 22:22 ID:VuYDDQ+z
VBS
281名無し~3.EXE:02/09/15 23:23 ID:Ke7giJGJ
VBScriptよりはJScriptの方がCに似てはいる
282名無し~3.EXE:02/09/16 11:38 ID:A+ENFHFF
CからならJSだろ。
283名無し~3.EXE:02/09/16 12:37 ID:W8UkWrwl
>>279
End Ifが許容できるならVBS、if構文は{}で囲ませろというのならJS
284名無し~3.EXE:02/09/16 13:28 ID:eUUqbFAL
>>279
; 打つのが怠いならVBS
癖になってるならJS
285名無し~3.EXE:02/09/16 13:29 ID:eUUqbFAL
上げちまった
スマソ
286名無し~3.EXE:02/09/16 15:02 ID:tMOJQdxd
HTML内のスクリプトで自身のパスを取得するために、
GetAbsolutePathName("ABC.html")としたのですが、
どこに置いてもC:\Windows\デスクトップ\ABC.HTML
と帰ってきます。
VBSで同じ処理をすると正しいパスを返してくれるのですが...
ブラウザはIE6.0を使っています。
287名無しさん募集中。。:02/09/16 16:37 ID:zNu0ixwi
>286
Mid(self.location.pathname, 2)
288名無し~3.EXE:02/09/16 19:43 ID:kGUhlVmI
>287
解決しました!!
ありがとうございました m(_ _)m
289名無し~3.EXE:02/09/20 10:49 ID:cJhSPTWD
c:\folder\001.txt
c:\folder\002.zip
c:\folder\003.txt
c:\folder\004.zip
c:\folder\005.zip
c:\folder\006.log
c:\folder\007.log
c:\folder\008.txt



c:\folder\LOG\006.log
c:\folder\LOG\007.log
c:\folder\TXT\001.txt
c:\folder\TXT\003.txt
c:\folder\TXT\008.txt
c:\folder\ZIP\002.zip
c:\folder\ZIP\004.zip
c:\folder\ZIP\005.zip

な感じに拡張子毎分けるスクリプトおながいします。
290名無しさん募集中。。:02/09/20 14:48 ID:EajrKnHu
>289
これって…、種類でソートして振分けのほうが早くない?(語尾上げ)
用途が共感できるものなら作るけど。
それ次第ということで。
291スレ違いだが:02/09/21 01:54 ID:9oZFiyu+
>>289
Cygwinのshell scriptだとこんなん。
--
#!/bin/sh
for i in /c/folder/*; do
case $i in
*.log)
if [ ! -d LOG ]; then mkdir LOG; fi; mv $i LOG/ ;;
*.txt)
if [ ! -d TXT ]; then mkdir TXT; fi; mv $i TXT/ ;;
*.zip)
if [ ! -d ZIP ]; then mkdir ZIP; fi; mv $i ZIP/ ;;
*)
echo "unknown: $i" 1>&2 ;;
esac
done
--
別にWSHでもできなくはないだろうが、道具は用途によって使い分ける
方がいいかと。
292名無し~3.EXE:02/09/21 03:28 ID:ftZoRJ9l
>>291
Cygwinインスコできて、ある程度使える奴が、
こんなこと質問すると思うか?(w
293名無し~3.EXE:02/09/21 10:12 ID:/J9U9e7B
// js だけど
path = "c:\\"
folder = new Enumerator( (new ActiveXObject("Scripting.FileSystemObject")).GetFolder(path).Files )
files = new Array()
for ( ; ! folder.atEnd(); folder.moveNext() ) files.push( folder.item()+'' )// .Path .Name
// でこの、ファイルの配列 files を?

files.sort() // これは要らないけど気持ち。// files.push(folder.item()) でも、sort() はできるみたい

// 拡張子順に並べ替えるとしたら
function sortfunc(l,r){
    var lext = l.replace(/^.+\.(.+)/,'$1')
    var rext = r.replace(/^.+\.(.+)/,'$1')
    //↓マッチしない場合(拡張子なし)、(どちらもは除く)
    if(lext==l){ if(rext!=r)return -1; }
    else if(rext==r) return 1;
    //↓拡張子あり、(またはどちらもなし)
    lext = lext.toLowerCase(); rext = rext.toLowerCase()
    if(lext > rext)return 1; if(lext < rext)return -1; return 0;
    // 文字列をそのまま大小比較できるのだっけ?
}
files.sort(sortfunc)
WScript.Echo(files.join('\n'))
294名無し~3.EXE:02/09/21 10:15 ID:/J9U9e7B
// 拡張子別の配列の配列を作るとしたら。
function xxxxx(files){
    var A = new Array() // A[i].ext にその拡張子、A[i][j] に各ファイル(パス)
    A[-1] = new Array() // 拡張子ないのは、ここに。
    for(var i=0, f, ext, flag; i<files.length; i++){
        f = files[i]
        ext = f.replace(/^.+\.(.+)/,'$1').toLowerCase()
        if(ext == f.toLowerCase() || ext=='' ){ A[-1].push(f); continue }
        flag = 0
        for(var a=0; a<A.length; a++)
            if(A[a].ext == ext){ A[a].push(f); flag=1; break }
        if(flag)continue
        var Aa = new Array()
        Aa.ext = ext; Aa.push(f)
        A.push(Aa)
    }
    return A
}

A = xxxxx(files)
// テスト表示
s = ''
for(i=0; i<A.length; i++)
    s += A[i].ext +' '+ A[i].length +'\n\t'+ A[i].join('\n\t') +'\n'
s = A.length +' / '+ files.length+'\n'+ s
    + (A[-1].length ? '- '+A[-1].length+'\n\t'+A[-1].join('\n\t'): '')
WScript.Echo( s )
295名無し~3.EXE:02/09/21 10:20 ID:/J9U9e7B
以上は、>289 へ、でした。
ずさんかも。それより、的はずれかな。
296名無し~3.EXE:02/09/21 22:04 ID:89kPHuWY
c:\doc にあるファイルを
\\host\share にコピーしたいのですが、
その時パスワードを聞かれるのですが、
どうしたらスクリプト内でパスワード認証通過できますか?
297名無し~3.EXE:02/09/21 22:41 ID:KAYV37Sd
// JScript.
var net;
net = new ActiveXObject("WScript.Network");
net.MapNetworkDrive("I:", "\\\\computer2\\public","True","jdoe","jdoepassword");

' VBScript.
Dim net
Set net = CreateObject("WScript.Network")
net.MapNetworkDrive "I:", "\\computer2\public","True","jdoe","jdoepassword"
298名無し~3.EXE:02/09/21 22:43 ID:KAYV37Sd
>>289
NTのバッチファイルなら2行でできる。

for %%i in (*.*) do if not exist %%~xi md %%~xi
for %%i in (*.*) do move %%i %%~xi

フォルダに . がつくけどね。
299名無し~3.EXE:02/09/22 02:32 ID:YH+heuC8
>289
wsh勉強中の俺にぴったりの課題なのでやってみた。
引数なしで実行するとカレントディレクトリ内を整理、
引数にディレクトリ名を与えるとその中を整理する。
関数 furiwake が>298の2行に相当するが、やっぱり長くなるね。
vbsみたいに for (file in files) とか書けたらいいのにと思う。

var WshShell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objArgs = WScript.Arguments;

if (objArgs.length == 0) {
 furiwake(WshShell.CurrentDirectory);
} else {
 for (i = 0; i < objArgs.length; i++) {
  if (fso.FolderExists(objArgs(i))) {
   furiwake(objArgs(i));
  } else {
   WScript.Echo("フォルダが存在しません: " + objArgs(i));
  }
 }
}

function furiwake(currentDirectory) {
 var files = new Enumerator(fso.GetFolder(currentDirectory).Files);
 for (; !files.atEnd(); files.moveNext()) {
  var ext = fso.GetExtensionName(files.item()).toUpperCase();
  if (!fso.FolderExists(ext)) fso.CreateFolder(ext);
  fso.MoveFile(files.item(), ext + "\\");
 }
}
300299:02/09/22 04:08 ID:YH+heuC8
上のやつ間違ってました。関数 furiwake を以下のもので置き換えてください。
スレ汚し、すんまそん (;´Д⊂ 300ゲトー

function furiwake(path) {
 var files = new Enumerator(fso.GetFolder(path).Files);
 for (; !files.atEnd(); files.moveNext()) {
  var ext = fso.GetExtensionName(files.item()).toUpperCase();
  if (!fso.FolderExists(path + "\\" +ext)) fso.CreateFolder(path + "\\" +ext);
  fso.MoveFile(files.item(), path + "\\" +ext + "\\");
 }
}
301名無し~3.EXE:02/09/22 08:02 ID:3NnwFnhS
>>289
見たら、既に、299-300 が、、、まあ別の方法として。
// .js フォルダー落して。
var set_extA = new Array('log', 'txt', 'zip')

if( 1 != (new ActiveXObject("WScript.Shell")).Popup('実行?', 60, '実行確認', 1) )WScript.Quit()
if( ! WScript.Arguments.length)WScript.Quit()
var path= WScript.Arguments(i)
var FS = new ActiveXObject("Scripting.FileSystemObject")
if( FS.FolderExists(path) ){
    for(var i=0, dest; i<set_extA.length; i++) try{
        dest = path +'\\'+set_extA[i]
        if( ! FS.FolderExists(dest) )FS.CreateFolder(dest)
        FS.MoveFile( path +'\\*.'+set_extA[i], dest+'\\')
        }catch(e){}
}
302名無し~3.EXE:02/09/22 09:09 ID:g2JAZY5l
> 299-300 の WshShell.CurrentDirectory
これ知らなかった。引数ないときは、そこで、という事と思うが、
どこになるか、不定のようだけど。
fso.GetParentFolderName(WScript.ScriptFullName) の方がいいんではないかな、、、

字下げに使っている、&emsp; も知らなかった。
"&#8195;" -- em space 、これって何?、
303名無し~3.EXE:02/09/22 09:33 ID:Tguv9MAP
>>293 の 3 行目
folder = new Enumerator( (new ActiveXObject("Scripting.FileSystemObject")).GetFolder(path).Files )
何で、folder って名付けるかな、files だよな。(次の行で、配列 files がでるからまずいけど)
304名無し~3.EXE:02/09/22 11:07 ID:1XtK6lXj
fldとかflsとか書くなぁ
305名無し~3.EXE:02/09/23 04:08 ID:me6GPEiA
よく、「ログオフするとお気に入りが消える」みたいなFAQがありますが、
それはそれで不便ですね。
小生としては、たとえば
「*.mpgファイルはRecentにいれない」とか
「特定のディれくとrににあるファイルは、開いてもRecentに入らない」とかの
オプションがほしいわけですよ。

これはレジストリいじってもできそうもないから、やはり、Wshを使って、
Recentに*.lnkが作られるタイミングを見張っておいて、
指定されたものを削除するのがいいと思うのですね。
これって、Wshでできるでしょうか。
正規表現で該当の*.lnkファイルを消すのはできそうですが、「見張る」のは
どうやったらいいかわかりません。

よろしくお願いします。
306名無し~3.EXE:02/09/23 05:55 ID:qPQiKPnd
>>289
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=16&fi=no
無駄に長くしてみた。
全部を振り分けるタイプでなく、特定のものだけ分類収納する方。
フォルダの中のフォルダの中...のファイルも、引き上げるようにした。
収納先フォルダも指定できるようにした(しなくともいい)。
拡張子の他に、ファイル名をパターン(正規表現)で、分けれるようにも。

きちんと動作を確かめていないけれど。
307名無し~3.EXE:02/09/23 06:01 ID:qPQiKPnd
>>305
最近ここ、詳しい人いないんだな〜
308名無しさん募集中。。:02/09/23 07:31 ID:D+T7M3UF
>305
某掲示板で見つけた常駐監視htaです。適当に変更して使ってください。
下手すると、タスクマネージャから殺さないとダメですのでトリガは適当なものを考えて。

<html><head>
<script language="VBScript">
Dim oFS, timerId, sTraceDir
sTraceDir = "C:\Documents and Settings\Administrator\Recent"
window.resizeTo 0,0
timerId = 0
Set oFS = CreateObject("Scripting.FileSystemObject")
Sub tracer()
Dim bFlagFound
bFlagFound = False
For Each oFile In oFS.GetFolder(sTraceDir).Files
bFlagFound = bFlagFound Or LCase(oFS.GetExtensionName(oFile.Path)) = "lnk"
Next
If bFlagFound Then
lMes = MsgBox("継続しますか?",vbRetryCancel, "見つけました")
If lMes = vbCancel Then
window.close
End If
End If
End Sub
timerId = setInterval("tracer()", 5000)
</script>
<hta:application minimizeButton="no" maximizeButton ="no" applicationname="非表示ダイアログ"
singleinstance="yes" border="none" borderstyle="raised" showintaskbar="no" ersion="1.00" id="objHTA">
</head></html>
309名無し~3.EXE:02/09/23 23:18 ID:RcOilW+x
>>301
間違ってる!、
5行目、WScript.Arguments(i) 、i → 0
310名無し~3.EXE:02/09/24 02:41 ID:YrxKX/Vs
>>305
>308 は、例えば、こうなるかな。
<script language="JScript">
dir = "%どこか%\\Recent"
TgPathPtnA = new Array( /\.mpg$/i, /.+\\iyada\\[^\\]+$/i )// リンク先パスから一致探すパターン
LnkFilePtn = /\.lnk$|\.url$/i // .url はないか
function 何かする(ファイルパス){ /*お仕事*/ }

window.resizeTo(100,100)// テストなので、0,0 にしてない
FS = new ActiveXObject("Scripting.FileSystemObject")
WS = new ActiveXObject("WScript.Shell")
function tracer(){
  var flag, flsA =[], cnt =0
  var fls = new Enumerator( FS.GetFolder(dir).Files )
  for (; ! fls.atEnd(); fls.moveNext()) flsA.push(fls.item()+'')
  for(var i=0, tp; i<flsA.length; i++)
    if( LnkFilePtn.test(flsA[i]) && (tp= WS.CreateShortcut(flsA[i]).TargetPath) )
      for(var j=0; j<TgPathPtnA.length; j++)
        if( TgPathPtnA[j].test(tp) ){ 何かする( flsA[i] ); cnt++ }
  if(cnt && ! confirm( cnt+' 、続ける?' ) ) close() // これをどうするか?
}//
setInterval(tracer, 5000) // 5 秒間隔
</script>
311名無し~3.EXE:02/09/24 02:43 ID:YrxKX/Vs
>>305
全然知らないのだが、考えてみる。

Windows で何か起きたとして、それを知るには、
 Windows から、教えてもらう (HTML中のスクリプトのイベントのように) か、
 Windows が記録したものを、周期的に読みにいく(事後になってしまうが)
   (この場合は直接 Recentフォルダを調べる) か、、なのかな。

多分ふつうのスクリプトからは、Windows の出来事を、
  見張れない、教えてもらう通知してもらう、受取る方法がない?。
なら間隔おいて自分で調べるとすると、スクリプトが終わらぬよう居座り続けないとならない。
  ( Sleep を繰返す、ちょっと恐いというかずっと続けて大丈夫なものなのか?、
   余計な負荷になるのではとか、そのまま本当に眠ってしまうのではとか、、)

窓を持てるスクリプトならどうか?、
 でも、HTA にしても、Windows のイベントは、ないみたいだし。
 もう一つエクスプローラのフォルダ窓に付属の HTT なら、
   フォルダで起こった事を?、(表示に関わる事のみか?)。
 MS 以外のスクリプトは、Windowsで起きた事を中継してくれないか?
312名無し~3.EXE:02/09/24 02:44 ID:YrxKX/Vs
(上から続き)
他のプログラムから、教えてもらうとしたら?

1、何か起きたら、スクリプトを起動してもらう。
ソフトで、そういうのないか?
Windows のタスク(スケジューラ?)、
 これから呼び出すとか考えても、事でなく時が主だし、
  それも日単位だし、終了時やログアウト時はないし。
イベントの様なものでは、スタートアップしかないのか、、

2、スクリプトの中で、他のプログラムとやりとりする。
ActiveXうんたら?、COMコンポーネント?。
 >>2 ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
   "関連サイトへのリンク" に色々、紹介されている。
でも、そのプログラム側からこちらに、通知はできないのか?
 スクリプト側から、周期的にそのオブジェクトのプロパティを調べるしかないかな。
WSH なら、WScript.CreateObject() の引数に、
 イベント時に呼び出してもらう、こちらの関数(の接頭辞)を指定できるというのあり。
 でも、WScript だからスクリプトを終わらせない様にしないと。
  ( Sleep の他に、MsgBox を出しっぱなしにする方法もある?)

よく判らないよ。
313名無し~3.EXE:02/09/24 14:43 ID:fUwhMaE9
>>312
>1、何か起きたら、スクリプトを起動してもらう。
>ソフトで、そういうのないか?
タイマ式ではないの奴を適当に作ってみた。
http://lounge.dip.jp/~yoshinoya_off/up/img/watcher.zip
314313:02/09/24 15:26 ID:fUwhMaE9
補足。readmeに書き忘れた。

*.exeでなくて*.vbsを実行したいときは第二引数を
"C:\WINDOWS\system32\wscript.exe C:\test.vbs"
とか
"C:\WINDOWS\system32\wscript.exe \"C:\test test\test.vbs\""
てな感じにしてね。

かなり適当なのでうまく動かない状況が多いかも。
315名無し~3.EXE:02/09/24 17:50 ID:aXjP1IHG
>313
見つかんないよ。
それCOM化してくれたら神。
316名無し~3.EXE:02/09/24 18:08 ID:fUwhMaE9
>>315
ごめん。あぷろだに直りんするなゴルァ!て書いてあったのよ。

再Up。ttp://lounge.dip.jp/~yoshinoya_off/up/upb.cgi の 2994。
317名無し~3.EXE:02/09/25 01:12 ID:jUp2Exy7
>>312
Windows のタスク、間違ってた!、
日単位だけでなく、[詳細設定] で、「タスクを繰り返し実行」間隔 分/時
っていうのが、あった。
10分とか1時間に1回程度の実行でいいなら、これを使えばいいのか。
318名無し~3.EXE:02/09/25 02:27 ID:ig+RoT3O
>313
わっ、
でも使えない、残念。MFC70.DLL がない。
readme 補足してある。 js だとだめなのか、、、
望んだ元の 305 は、見に来たかな、、、
319名無し~3.EXE:02/09/25 02:38 ID:ig+RoT3O
MFC70.DLL あった
ttp://hp.vector.co.jp/authors/VA021021/ ar/mfc70dllset.zip
320名無し~3.EXE:02/09/25 03:11 ID:kRGEKaiv
>319
しまった、何を見てたんだろう、個人のページを貼ってしまった。
そこの人、ごめんなさい。
321名無し~3.EXE:02/09/25 04:03 ID:tAvPDPqP
>313
mfc70.dll と msvcr70.dll
.js でも全然問題ないよ。
第2引数、"wscript X:\〜\xxx.js" でも。

>319
もう一度、VA021021 の kobataku さん、ごめんなさい。
322名無し~3.EXE:02/09/25 10:13 ID:vw6HyGET
>321
リテール版なら再配布は自由なのでOKじゃないの
323名無し~3.EXE:02/09/25 17:46 ID:pPAjE1f0
>>322
個人のページにリンクしたことを気にしているのでは?


気にしなきゃいいのに。
324名無し~3.EXE:02/09/25 23:31 ID:JpCEQLc7
まあvector上だから
そんな気にすることたぁないさね
325名無し~3.EXE:02/09/26 03:13 ID:osmhTbQP
登録しておいたアプリケーションを強制終了させる
ことってWSHで可能でしょうか。
一々タスクマネージャー開いて、アプリ名探して、殺すのが面倒です。
cgywinのps.exeでPID見えるのですが、killコマンドが弾かれるので、
いちいちマウスで殺して、コマってます。
326名無し~3.EXE:02/09/26 03:18 ID:oph1h+pT
327名無しさん募集中。。:02/09/27 12:36 ID:wSRxrua8
>325
強制終了のサンプルを示します。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=15

AppActivateからタイトルが外れると、(他のウィンドウがActivateすると)そのPIDをもつアプリケーションをTerminateします。
WMI必要。
ところで、cgywinって使ったこと無いんだけど、それってバッチ化&標準出力ってできるの?
出来たら、WSHと連係するのもいいな。
328名無し~3.EXE:02/09/27 14:32 ID:LtWILKoX
set db = WScript.CreateObject("DAO.DBEngine")

と書くと、DAO.DBEngineという名前のオートメーションクラスが見つかりませんでした。
とさ。よくわかってないが、なぜ?
329328:02/09/27 16:40 ID:LtWILKoX
DAO.DBEngine.36 でしたとさ。
330名無し~3.EXE:02/09/28 00:13 ID:gQE6rJWr
>325
すでに答え出てるけど、前スレ547にもサンプルあるーよ。
XPならtasklist.exeとかtaskkill.exeなんてコマンドもあるーよ(>2のリンク参照)。
331名無し~3.EXE:02/09/28 10:10 ID:CI5WY3kJ
>>313 watcher.exe 、
フォルダに変化が起きた時、スクリプトファイルを呼び出してもらう。
その時、スクリプト側から、どのファイルが作成とか更新とかされたかを
 調べないとならないのだが、、結構難しい、、、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=17&fi=no

更にそれで >>305 の「最近使った」のファイルの削除の試み、
> 上の次の、19
うまくいってない、

>>310 の { 何かする( flsA[i] ); cnt++; break } に、
 break 入れるの忘れてた。無駄な繰り返しをしてしまう。
332名無し~3.EXE:02/09/28 18:54 ID:t3qkBgRt
>>331
スクリプトが起動した時刻を記録するファイルを作っておいて
スクリプト起動時にはそのファイルをロックして記録、
処理が終わったら解放するようにしておけばどうかな?

起動時にロックされていたら何もしないで終了。

で、チェックは記録されていた時刻と更新時刻を比較する。
33311:02/09/28 20:14 ID:Kh7JELSG
ファイル生成の監視ですが、WMIを使えば可能らしいです。
私はうまくできなかったのですが…。
ExecNotificationQueryメソッドを使い、"__InstanceCreationEvent"を指定し、
CIM_FileDataのインスタンスの生成を監視するわけです。

実際に書いてみたコードも載せておきます。一応、C:\testの監視をおこなうように作ってます。
しかし、これは正常に動作しないばかりか、暴走してしまいます。
しかもスクリプトのプロセスも殺せません。
どなたか、動くようにする方法を教えてください。

Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") 'SWbemLocatorオブジェクト作成
Set oService = Locator.ConnectServer 'SWbemServicesオブジェクト取得

Set oEvent = oService.ExecNotificationQuery _
("select targetinstance.Name from __InstanceCreationEvent within 10 where " & _
"targetinstance isa 'CIM_DataFile' and targetinstance.Drive = 'C:' and " & _
"targetinstance.Path = '\\test\\'")

On Error Resume Next
Do
WScript.Sleep 100
Set oEvt = oEvent.NextEvent(500)
If Err.Number <>0 Then
Err.Clear
Else
MsgBox oEvt.TargetInstance.FileName & "が生成しました。"
Exit Do
End If
Loop
33411:02/09/28 20:14 ID:Kh7JELSG
メール欄を入れ忘れてました…。
335313:02/09/29 01:29 ID:GDGFvQwi
>>318-319
DLL同梱してなくてゴメン。
.NET Framework入れたらMFC関連のDLLも入ると思いこんでました。
考えてみればMFCは.NETとは関係ないから入らないのね。

.NET+NT系限定だけどJScriptだけでディレクトリ監視。
ただコンパイルしないと駄目っぽいのがニントモカントモ…
コンパイルしてちゃWSHとは言えないかな?

import System.IO;

var watcher : FileSystemWatcher = new FileSystemWatcher();
var result : System.IO.WaitForChangedResult;

watcher.Path = "c:\\temp"; //監視するディレクトリ
// watcher.Filter = "*.txt"; // フィルタ。拡張子とか指定可能
watcher.NotifyFilter = ( NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName );
watcher.EnableRaisingEvents = true;

for (;;) {
result = watcher.WaitForChanged( WatcherChangeTypes.All );
System.Console.WriteLine( result.ChangeType + " : " + result.Name );
}
336313:02/09/29 01:31 ID:GDGFvQwi
import System.IO; してるくせに
System.IO.WaitForChangedResultとか書いちゃ意味ね〜
337313:02/09/29 02:01 ID:GDGFvQwi
>>333
詳しく調べてないしVBScript使えないので『かも』話ですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/swbemlocator.asp
This object can be created by the VBScript CreateObject call.
って書いてあるから、そのへんかも。
338313:02/09/29 02:20 ID:GDGFvQwi
あぁ何書いてるんだか。can be created なら問題無いじゃん。
SWbemServicesの方がcannotだったのよ〜と言い訳してみる…

無駄レスばっかでハズカシ.
339名無し~3.EXE:02/09/29 13:44 ID:DX0ma7pH
\\HostA\Shared の情報を取得して、
前回より新しいファイルやフォルダがあったら、
表示するか確認後にフォルダを表示する。

っていうスクリプト出来ますか?

ログイン時に

共有フォルダに新しいファイルが存在します。
   共有フォルダを表示しますか?

    はい           いいえ


こういうことがしたいんです。
340名無しさん募集中。。:02/09/29 18:02 ID:bXo1roOr
>339
それは、仕事に使うものかな。だとしたらやれる事を事前に吟味しておかないと、
更に欲が出てきていっぱいいっぱいになってくるような感じがする。

まずざっと見足りないと思う事。
共有フォルダって言うからには皆が更新する物。
自分が関与しないファイルもあればするファイルもある。
また、ずっと後に関与するものもあるかもしれない。
で、区切りは前回のログオンのみでいいの?後は消しちゃって。
また朝、忙しかったら読み飛ばしちゃうかも。
会社で共有フォルダ管理って、結局数がものすごくなってみてらんない状態になると思う。
あっという間に対応しきれなくなる。
スクリプトに全ファイル監視させるのは良いとして自分が見る上でのフィルタとかはいいのかな?
ぱっと見言えるのはそんなとこかな。

この案件では最近の話題の更新したタイミングをシビアに判定するとかは考えなくてもよさそう。
アプローチとしてはデータベース作って格納するのが一番かと思います。
長文スマンス。
341教えて君:02/09/29 20:14 ID:AiYdhk+3
お、教えてください。
前スレ  http://pc.2ch.net/win/kako/1009/10091/1009175619.html
の288スクリプトをどうしても使いたいのですが、
右クリックから呼び出しても、すんとも言いません。
また普通に、クリック実行すると空白のMsgBOXが表示されたままです。
このスクリプト、正常に動くとあるのですが、どのようにすればいいか?

わ、わかる方いますか?


342名無し~3.EXE:02/09/29 22:05 ID:RQzz2bSA
>341
スクリプトっていうのはじぶんでかきかえるためにテキストで出来ているんだ。
だから一行目はじぶんのすきなようにかきかえるんだよ。
343名無し~3.EXE:02/09/29 22:38 ID:tiAhOVr/
>>341
一行目に
#!/usr/bin/wsh.exe
あるいは
#!c:/Program Files/Windows Scripting Host/WSH.EXE
を忘れずに
344名無し~3.EXE:02/09/30 00:19 ID:FLKyFssw
>>340
いあ、、自宅です。

父親と生活パターンが違うので、
父親から頼まれたことや、頼むことは
共有フォルダに突っ込んで終わりということが多いので。

突っ込むだけで相手に解れば楽だなと。
345教えて君:02/09/30 02:01 ID:YQd8Nmnx
>>342,343
い、言われたとおりにしたけど、出来ませんでした。
た、助けてください。
346:02/09/30 20:46 ID:Ogl2JPPx
>>345
つ、釣りですか?
ま、マジデスカ?
347名無しさん募集中。。:02/09/30 21:50 ID:nbKxnoJ8
>341>345
なんだか??一行目の("URL","保存先パス") をあなたの有用なものに変えるだけ。
保存先パスをフォルダまでしか指定していないとか?ファイル名まで指定する。
でダメなら一行目だけでも見せてくれ。
>342
ふぅ。それはそれで中途半端かも。
>343
嘘つき。UNI板に(・∀・) カエレ!!
>344
おっけ。先走りすまん。なら当初ので作ってみるわ。
変更ファイル名ぐらいは列記します。
>346
実際どうなんだろうね。まともな返答も無いとこは、みんなの認識の表れだと思うけど。
348名無しさん募集中。。:02/10/01 02:15 ID:BKRsHrl+
>344
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=20
ちょっと試してみて欲しい。
更新の検出が一回分ずれているような気がする。
349339:02/10/02 01:01 ID:7Te+4er2
>>348
おお、、、ありがとうございます。

確かにずれてますね。。
あと、共有フォルダのパスが見つからなかった(相手がオフラインだった)場合にエラーが。。

まぁ、これでも十分実用できるんで有り難いです。
ありがとうございます。
350名無しさん募集中。。:02/10/02 22:41 ID:sWDsefoV
>349
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=21
言われたところと、気になったところを直してみました。
これでずれなくなる。(と思う)

後は、res=20を消したいな。どうやれば会えるんだろう?
351名無し~3.EXE:02/10/03 01:51 ID:bNDTSPtv
>>333
これ、ウチではちゃんと動いてますよ。
Exit Do を消して、監視するフォルダをRecentにして、
1時間ほど走らせても大丈夫でした。
タスクマネージャでプロセスも殺せるし。
なんで11さんのとこではだめだったのかな?
ちなみにOSはXP Pro(SPとか当ててない)です。
352351:02/10/03 01:59 ID:bNDTSPtv
# 351は元の依頼主の305さんではありません。念のため。
353331:02/10/03 03:36 ID:lTDdwMTD
>313 watcher.exe の(使用の)続きと >332 ファイルのロック
単純にそのファイルがあれば止め、なければ作ってスクリプトが終わる時に削除
と試してみたが、どうも関係ない、一つずつ終わってから次が呼ばれているのかなと。
で、直接、watcher.exe から呼び出さず、watcher.exe から呼ぶのは、
スクリプトを呼ぶスクリプトにすれば、ファイルのロックの効果あり。
多分、これで、watcher.exe から呼び出されなくなってしまう事もなくなり、
うまくいくと思うのだが、、、でなければお手上げ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=22

WMI は、98やMeではダウンロードしないとならないし、何となく無縁と思っていたら、
 Meには最初から入っているのか。慌てて調べ始め、、英語読めないので眺めているだけだけど。

スクリプトから様々なイベントの通知を要求する事ができる、、
  (その要求の仕方・どこの何のイベントをどう指定すればいいのかとか、が、、、)
そして、○.nextevent() で待機し受取る、、
でも今の所、例題で試してみても云とも寸とも言わないのだが、、
と思ったら、確かに 11 氏のは暴走する。Query だけでそうなる、

.NET は更に判らない。import や : 、何だろう、、
なにぶん、ファイルの共有ってなんだっけとか、しばらく考えてしまうレベルなので。

MSDN で迷って色々見てたら、こんなのあった、「イベントのスクリプティング」
ttp://www.microsoft.com/japan/msdn/columns/scripting/scripting04092001.asp
VBSでは新しい事は何も書いてないと思うが、 JS+HTMLで、:: なんて知らなかった
354331:02/10/03 03:43 ID:lTDdwMTD
XP ではならないと。
305さんは?、お題に使わせもらっただけです
355名無し~3.EXE:02/10/03 11:18 ID:6LFz1Z7L
で、結局WSHに適したエディタってどれ?
356名無し~3.EXE:02/10/03 15:02 ID:P5KaGb0m
>>355
ヒデ○
357名無し~3.EXE:02/10/03 17:32 ID:AlIxbRN6
>>355
Peggy Pro
358名無し~3.EXE:02/10/03 17:36 ID:xL+22D4K
にゃ
359 :02/10/03 18:07 ID:tFV6PnVF
>>355
VBそのものや、OfficeのVBエディタ作成・編集。
コードをTextエディタコピペ・保存。
これ西京。
360 :02/10/03 18:09 ID:tFV6PnVF
付け加え
参照設定に使いたいOLEのライブラリファイルを
登録しとけば、メソッド・プロパティ補完もしてくれる。
まぁ、基礎の話だが。
361339:02/10/04 10:07 ID:/KKA8WnK
>>350
レス遅れて申し訳ないです。
試してみましたが、接続可能な共有フォルダを指定しても

フォルダ\\hoge\hogeが見つかりません
接続が可能な状態になったら再試行してください。

と言われてしまいます。
こちらの共有フォルダをローカルパス/ネットワークパスで指定してもダメでした。

もしや、2バイト文字が原因か?と思って、英数字のみのフォルダを指定してみましたが、
やっぱりダメでした。。。
関係なさそうでしたが、一応、環境依存の部分も変えて試してみましたが、ダメ。

逆に、相手がオフラインだとsearcher.vbsでエラーが出てしまいました。
---
行: 19
文字: 1
エラー: パスが見つかりません。
コード: 800A004C
ソース: Microsoft VBScript 実行時エラー

362名無し~3.EXE:02/10/04 18:59 ID:8rno8yQ2
sony_humanResource = HumanResource.new("sony")
sony_finance = Finance.new("sony")
sony_activeField = ActiveField.new("sony")
sony_convention = Convention.new("sony")
sony_participant = Participant.new("sony")
sony_newCommer = NewCommer.new("sony")
sony_oldCommer = OldCommer.new("sony")
sony_purpose = Purpose.new("sony")
のように連続的にオブジクトを作って、出来上がったsony_XXXXってオブジェクトを
グループ化させたいんですが、どのような方法がありますか。
------------------------------------------------------------------------
厨な方法:
store(HumanResource, sony_humanResource)
store(Finance, sony_finance)
store(ActiveField, sony_activeField)
store(Convention, sony_convention)
store(Participant, sony_participant)
store(NewCommer, sony_newCommer)
store(OldCommer, sony_oldCommer)
store(Purpose, sony_purpose)
363362:02/10/04 19:00 ID:8rno8yQ2
すれ違いです。すみません。
364名無しさん募集中。。:02/10/04 22:40 ID:SAWcQwFP
>361
すまねっス。思い違いをしていたようだ。
13・14行目をこれに差し替えてください。
sCommonFolder = csCommonFolder
Do Until oFS.FolderExists(sCommonFolder)
365339:02/10/06 00:52 ID:+xvAjjJy
>>364
ちゃんと動きました。ありがd。
366名無し~3.EXE:02/10/07 01:15 ID:Cil0OTne
今表示してるホームページを
IE右クリックのメニューから
テキスト形式で保存できるスクリプト
キボンヌ…
367ai:02/10/09 03:47 ID:sL2zw+rV
質問があります。
wshからexcelではなく、excelVBAを操作することって出来ますか?
例えば、excel起動していない時に、VBAで【*.xls→*.csv】を行うとか、
特定のブックの特定のRange.valueをクリップボードに送信する、みたいな
処理ってできますか?
その辺りに詳しい方いらっしゃいますか?
368名無し~3.EXE:02/10/09 03:52 ID:8Dr9WTP5
>>367
Set oEXCEL = CreateObject("Excel.Application")
とか宣言すれば
Set oBOOK = oEXCEL.WorkBooks.Open(filename)
でfilenameを開いたり、
つまりExcelのオブジェクトがそのまま使えます
369ai:02/10/09 15:56 ID:sL2zw+rV
>>368
いえいえ、excelのオブジェクトとexcelのVBAインタプリタって違いますよね。
excelのブックを開いたら自動的にVBAを実行するようにして、WSHからその
ブックを開くようにすればいいのでしょうけど、直接WSHからVBAのインタープリタ
を操作できないのかなと思いました。
例えば、マクロを記述していないワークブックに対して、WSHからVBAエンジンを
操作して、そのワークブックの内容に変更を加えたりできないのかということ
です。
370ai:02/10/09 16:11 ID:sL2zw+rV
>>368
すみません。私の勘違いでした。
>Excelのオブジェクトがそのまま使えます
Excelのオブジェクトがつけえれば、Windows上からあらゆるメッセージを
遅れるのですね。勉強になりました。
371名無し~3.EXE:02/10/10 04:40 ID:YhubFNzf
WMI 勉強中、
オブジェクト・ブラウザ?のようなものができる事までは判ったが、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=23
中身はさっぱりわからない。MSDNを見にいくのもつらい、、、
↑試す場合、Directoryの付くクラスで、[インスタンス]のボタン押すと凍ります。
HTA です。

3日前に戻る >366 デジャブ?
右クリック→ソースを開く、エディタから保存、でだめなのは何故?

前スレにあった、"Microsoft.XMLHTTP" と、"ADODB.Stream"
 使った事なかったので、試してみた。(次に)。
 ローカルのHTMLから使えるのはいいのだけど、、、
  (この場合、既に中身があるのに、また取って来るなんて無駄だが)
と思ってついでに、FileSystemObject も試してみたら何も言わずに動く。
 拡張(右クリック)メニューでない場合は、ちゃんとダイアログが出るのだが、
そういうものなのか?、
372名無し~3.EXE:02/10/10 04:46 ID:YhubFNzf
<script type="text/javascript">
var saveFolder = "C:/ユーザー/机/一時保存/"
  // 保存先のフォルダ。既にある所でないとだめ。
var useTitle = 0
  // 保存するファイル名にタイトルを使うか
var pW
if(window.external && (pW =external.menuArguments) ) {// IE拡張(右クリック)メニューからなら
  var url = pW.location.href
  if( ! /[\\\/]$/.test(saveFolder)) saveFolder += '/'
  var path = saveFolder.replace(/[\/]/g,'\\')
    + ( useTitle ? pW.title.replace(/["\\*:\/<>?|]/g,
        function(c){ return '%'+(c.charCodeAt(0)).toString(16) } )//"
      : url.replace(/.+[\/]/,'') )
    +'.txt' // ← 更に .txt と付けるなら
  var ans = prompt('保存先ファイル名、?', path);
  if(ans){ path = ans.replace(/\0.*/,'');
    xxxxx(url, path) }/// 有効な保存先のパスかどうかは確認してない
}
function xxxxx(url, path){
  var XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
  XMLHTTP.open( "GET", url, false )
  XMLHTTP.send() // 「指定されたリソースは見つかりません」
  xmlBody = XMLHTTP.responseBody // 待たなくてもいいの?
  var ADODB_Stream = new ActiveXObject("ADODB.Stream")
  ADODB_Stream.Type = 1 // binary
  ADODB_Stream.Open();
  ADODB_Stream.Write(xmlBody);
  ADODB_Stream.Savetofile(path, 2); // 1 上書きしない?、 2 上書き?
}
</script>
373名無し~3.EXE:02/10/10 12:02 ID:rfv83ovk
タスクスケジューラからプログラム実行することは可能なれど,
プログラム中からタスクスケジューラに登録されたタスクを実行するのは不可能?
374名無し~3.EXE:02/10/10 15:02 ID:BdiEgZg4
a
375名無し~3.EXE:02/10/10 15:03 ID:BdiEgZg4
wshを利用すれば、
インターネットショートカットのリンク先を修正する作業をコマンドラインで
できますか?
376名無しさん募集中。。:02/10/11 00:51 ID:S3S2D3lZ
>373
そういう作成・実行するCOM Addinがリソキに入っていたような気がするんだけど、
Scheduler.SchedulingAgentなProgId持つやつ。
持っていないので、なんともいえない。
タスクってセキュリティコンテキストを違うところにできるしね。自動に作成・実行できたら穴なんじゃないかな。

>375
できますよん。説明するのが面倒なので、
mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\Script56.CHM::/html/wsmthcreateshortcut.htm
をみてね。
377373:02/10/11 09:03 ID:4r94Tb6C
>>376ども。
確かに実行できたら穴です(w
しかし諸事情で,Admin権限でしか動かないスクリプトを制限ユーザが動かす必要が出てきました。
しかもフリーソフトは使わずに軽作業で…。
更に,ユーザの好きな時に実行できる必要があります。

1つ考えたのは,タスクスケジューラでログオン時実行にして常駐させ,普段は隠しておく,
なんてのですが,何か他に画期的な方法はないものか。。
378373:02/10/11 09:05 ID:4r94Tb6C
ちなみに,タスクとパスワード設定は管理者権限で作成するので,問題はないです。
379名無し~3.EXE:02/10/11 12:36 ID:qUec8PhK
VBA見たくF1押すだけでヘルプ起動し、キーワード入れてくれたら名ァ……
380379:02/10/11 12:40 ID:qUec8PhK
あ、例えば、オブジェクトブラウザで参照設定した後、各オブジェクトを閲覧
しているときにF1押したら、ヘルプで検索してくれる機能(VBAなど)も
Wscriptで出来たら名ァ……
381名無し~3.EXE:02/10/11 14:25 ID:Ihh3hJW+
テキストファイルから
正規表現 [a-zA-Z0-9\._-]*\@[a-zA-Z0-9\._-]*
にマッチした単語だけ抜き出してテキストファイルに書き出す
スクリプトありませんか
382名無し~3.EXE:02/10/11 16:59 ID:CjWUwiuc
>>381
awkを使え。
383名無し~3.EXE:02/10/11 17:27 ID:OC0JHqAa
つーかその正規表現ならfor-nextでなんとかなるだろう。
384名無しさん募集中。。:02/10/11 22:10 ID:rNnNEIjJ
>377
そういうことならユーザ偽装かなぁ。スクリプト実行時だけユーザを変えるってやつ。
ASPのサンプルがMSDNにあったと思ったんだけど、今見たらASP.NET版にリニューアルしてしまって使えん。
ADSIでADsを操作してユーザ変更してCACLS.EXEをEcho付で実行して権限取得みたいなの。
具体的にはうろ覚えにて説明できん。すまん。

>379
こっちはCHMヘルプクンで実現してますよ。
>380
こっちはWSH補完クンがズバリそのものなんだけど…、680さんお願い。オブジェクトツリーでのフィルターたのんます。ダメ?
リンクは>>85参照のこと。

>381
smtp.freeserve.ne.jpみたいなボトルメールがやりたいの?
Adultサイト巡ってもいないのにアワビを大量にお届けされちゃったりしてあんま幸せな思い出がないんだよなー。アレ。
逆にSPAM元のアドレス大量にもってFrom:・To:・X-Mailer:・Reply-ToをAnd:一致でメールボックスから削除するスクリプトきぼーんしたいほど。
385名無し:02/10/11 23:30 ID:dwredRMK
ど初心者なんですが、どなたかお答えください。
WSHでダイアログを使いたいと考えてます。
で、某SeraphyScriptDialog をDLしてきたんですが、動かす事すらできません・・・

「Regsvr32.exeにDLLへのフルパスを指定して実行するだけ」らしいんですが、それすらできない人間は使うなということでしょうか?
386名無し~3.EXE:02/10/11 23:37 ID:qUec8PhK
みささん、シェル環境はDOSですか?エクスプローラですか。
ぼくはDOS窓内でCygwinのbashを使ってますが、
bashを使っていると、
explorer(エクスプローラー)、iexplorer(IE)などが起動しません。
notepadは起動しますが……

環境変数PATHはちゃんと、通っているのですが……
DOSに帰るとちゃんと実行されるのですが……

387名無し~3.EXE:02/10/11 23:42 ID:emTxdOPM
サスペンドやシャットダウンする スクリプトって可能ですか?
388385:02/10/11 23:57 ID:dwredRMK
家のパソコンでいろいろやったらできました。
ご気分を害された方申し訳ありません。
389名無し~3.EXE:02/10/12 02:02 ID:j1gTfKFq
>>387
可能。
Windows.FAQに、
Microsoftが配ってるサスペンドやシャットダウンするスクリプトへのリンクが載ってるページがある。
390名無しさん募集中。。:02/10/12 10:49 ID:da6YuRBj
>386
私はみさではないのでシェル環境についてはスルーしますが。
Cygwin使う時はパスはPATH環境変数も取ってくるけど、基本的には
mount C:\Program Files\Internet Explorer /bin
とかで入れるんでないの?違う?Cygwin使った事ないんで分からんわ。
391名無し~3.EXE:02/10/12 12:17 ID:s6t54I+c
>>386
(OS書いてないから予想だけど、多分)Win9xのDOS窓だから。
NT系のコンソールなら問題ない。
392名無し~3.EXE:02/10/12 18:34 ID:4uxwqVD3
>>386
試しにフルパスでやってみたら?

で、フルパスでならうまくいく場合は、

which explorer

とかの結果を確かめる。
393386:02/10/12 23:36 ID:cdV2XjZk

x on windowsってのを使い出してから、この現象っす。
Win2000で、Win+Rから
cmd /k bash --login -i
で、起動してるっす。

[a]~$ which iexplorer.exe
/usr/bin/which: no iexplorer.exe in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/cygdrive/d/WINNT/s
ystem32/:cygdrive/d/WINNT/:cygdrive/d/app/:/cygdrive/d/HOLON/XonWindows/home/Administrator/bin)
Sat Oct 12 (23:36:45)
[a]~$ which explorer.exe
/usr/bin/which: no explorer.exe in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/cygdrive/d/WINNT/sy
stem32/:cygdrive/d/WINNT/:cygdrive/d/app/:/cygdrive/d/HOLON/XonWindows/home/Administrator/bin)
Sat Oct 12 (23:36:51)

394前スレ680:02/10/13 01:03 ID:GPEhIkKk
>>384
>>380はWSH補完クンとは全く関係無いような・・・。

>オブジェクトツリーでのフィルター

現時点ではちょっと難しいです。すみません。

#名無しさん募集中。。さんってDana使ってたんじゃ・・・。
395名無しさん募集中。。:02/10/13 07:19 ID:KEH6Pn6l
>394
確定したワードなら、調べるとこなんかCHMヘルプクンそのものかな・・・と。

ツリーだとフルパスをキーとして持たないといけないからデータが大変そうですね。
わっかりました。では.NET Framework補完クンを座して待つことにします。(違

#補完クン・ヘルプクンが便利なのでTeraPadの方に傾向していて現在併用中です。
#でもカスタマイズしすぎて、なかなか移行には程遠いんですけれどね。
396392:02/10/13 14:20 ID:ZwanlkiY
>>393
which の結果がそれだと、パス通ってないと思う。

ところで、スレ違いなのでこれ以上続けるならCygwinスレでどうぞ。
X on Windowsスレでもいいけど。
397999:02/10/13 14:51 ID:23DFWQTt
補完クンがTeraPad起動時に自動起動してほすぃ
398999:02/10/13 16:04 ID:23DFWQTt
perlからWin32oleを利用することが多いんですけど、
補完クン・ヘルプクンを使いたいために、いったんvbsでファイル作成してから
.plに変更してます。
なにかいい解決法ありませんか?

それから、補完クンですが、Ctrlキーで候補一覧が消えないようにできませんか?
399前スレ680:02/10/13 23:28 ID:nWsM+PSO
>>397
「ツール」→「ツールの設定」→「編集」で「ツールの編集」を出し、
左下の「起動時に実行」にチェック

>>398
「簡易JScript/VBScriptコード補完ツール」ですから・・・。(^^;
私がperl知らない(使わない)っていうのも大きいですが・・・。

出来ますけど、消えてくれないと不便じゃないですか?
TeraPad以外のエディタはキーカスタマイズできるんで、
何が割り当てられてるか分からないですし。
400400:02/10/14 12:45 ID:29a5tg6u
親フォルダを取得しようとして、二つの書き方を見つけたけど結果が異なります。
このスクリプトを、日本語名フォルダとASCII名フォルダに入れて比べてみてください。
親フォルダが日本語の場合、sdnは親フォルダが日本語でなくなるまでさかのぼって返すんですが。
Windows98SE, WSH5.6日本語版。

...バグ?

Set objFile = CreateObject("Scripting.FileSystemObject")

sfn = WScript.ScriptFullName
sdn = objFile.GetFile(sfn).ParentFolder
sdn2 = objFile.GetParentFolderName(sfn)

MsgBox"This file : " & sfn & vbCrLf & _
"Parent folder : " & sdn & vbCrLf & _
"Parent folder2: " & sdn2
401名無しさん募集中。。:02/10/14 13:36 ID:cxaIMHS6
>396
見ても答えられなかったので、指針&誘導ありがとー。

>399
補完クンの方で仕様を拡張できるなら->を.と同一視するとか。
元質問者の方で全自動置換マクロみたいな物を作るか。
択一ですね。.は正規表現とかでよく使うから置換判別は難しそうですね。
でも、HTMLや、XMLのコメントを書く時に-->って使うんだよなー。.
興味あるけど、関係はないのでsage。

>400
ParentFolderは9x系だとそういう動作するんですよね。
NT系だと正常な動作します。
直接その問題と関係ないけどその書き方だとsdnにはFolderオブジェクトを入れようとして
入らないから、代わりに規定のPathプロパティの内容が入っているという状態ですよ。
402400:02/10/14 18:27 ID:29a5tg6u
>401
了解しました。おとなしくGetParentFolderNameを使います。
結構有名なバグなんでしょうか…?(しかし、くぐっても見つからなかった)
あと思い違い指摘にも感謝です。
403名無しさん募集中。。:02/10/14 22:33 ID:KwggrLO0
>402
ttp://www.oak.dti.ne.jp/~niku/R3_temp.swf?inputStr=%96%7B%93%96%82%BE%81%41%47%6F%6F%67%6C%65%82%C5%82%E0%8C%A9%82%C2%82%A9%82%E7%82%C8%82%A2%81%49

VBスレで見かけたのをWSHでリライト。
Const adSaveCreateOverWrite = 2
Const adTypeBinary = 1
Const adTypeText = 2
Function GetLupin(DT)
Dim astWord, i, sDest, oFS
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set astWord = WScript.CreateObject("ADODB.Stream")
sTempFile = oFS.BuildPath(oFS.GetParentFolderName(WScript.ScriptFullName), oFS.GetTempName)
astWord.Open:astWord.Type = adTypeText:astWord.Charset = "Shift_JIS"
astWord.WriteText DT
astWord.SaveToFile sTempFile, adSaveCreateOverWrite
astWord.Close
astWord.Type = adTypeBinary:astWord.Open
astWord.LoadFromFile sTempFile
oFS.DeleteFile sTempFile
Set oFS = Nothing
Do Until astWord.EOS:GetLupin = GetLupin & "%" & Right("00" & Hex(AscB(astWord.Read(1))), 2):Loop
astWord.Close
Set astWord = Nothing
End Function

Set window = WScript.CreateObject("InternetExplorer.Application")
window.Navigate2 "http://www.oak.dti.ne.jp/~niku/R3_temp.swf?inputStr=" & GetLupin(InputBox("タイトル表示したい文字を入力", "ルパン三世風タイトルメーカー"))
window.visible = True
404名無し~3.EXE:02/10/15 02:13 ID:ZP/mhqBT
cygwinが駄目なガッコのラボ内のWinマシンで
ローカルマシンの階層の深いフォルダを共有にして、アクセスしやすくしてます。
\\lab11\my\experiment
\\lab12\my\result
僕はadmin持ってるので、作業開始時に共有化するのですが
ログアウトするとき、共有を切るのを忘れてしまいます。
そこで、スクリプトを書こうと思ったのですが、
WMIオブジェ使うみたいです!!
しかし、情報すくないっす。共有化をネットワークドライブに割り当てる例は沢山あったけど……
どこか情報ありませんか?探してます。

また、ネットワーク共有をDOSから設定するためNTのコマンドってないですよね。
405名無し~3.EXE:02/10/16 04:27 ID:5emX1nCn
テキストファイルから正規表現にマッチしたところだけ
 抜き出してテキストファイルに書き出す(js)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=24
それを窓(HTA)から使う
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=25
406名無し~3.EXE:02/10/16 07:41 ID:Rgd63seC
>>404
net share
とりあえずコマンドプロンプト開いて net help share でヘルプが見れる。
407名無し~3.EXE:02/10/16 13:40 ID:PqrlAE14
>404
WSHのリファレンス読むべし。
検索:WMI
408名無し~3.EXE:02/10/16 22:43 ID:SN/am3XR
Live2chで、自動的に、最新のテレ東スレを表示させるスクリプトを書いてみた。
'---------------------------------------------------
set IE=Wscript.CreateObject("InternetExplorer.Application","IE_")
IE.Navigate("http://live3.2ch.net/weekly/subject.txt")
do : WScript.Sleep 6300 : loop
sub IE_DocumentComplete(ByVal pDisp, URL)
dim surl,str,line,sstart,send,ic,WSHShell
send = -1 : ic = 0 : surl = ""
str = IE.document.body.innerText
IE.Quit
do
sstart = send+2
send = InStr(sstart,str,vbNewLine,1)
if 0=send then exit do
line = Mid(str,sstart,send-sstart)
ic = InStr(1,line,"テレ東",1)
if 0<>ic then exit do
loop
if 0<>ic then surl = "http://live3.2ch.net/test/read.cgi/weekly/" & Left(line,10) & "/"
set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run """C:\Program Files\Live2ch\Live2ch.exe"" " &surl
WScript.Quit
end sub
'---------------------------------------------------
いちおう動くので良かったのですが、不満というか疑問が。
2行目で Navigate したあとは、DocumentCompleteイベントを待つだけなのだが、
無駄ループさせないで終わらせるとイベントが受け取れない。
大した事はないとはいえ、無駄と分かってループするのはドーカと思うので、
イベントを待つだけの処理でスマートな方法ってありませんか。
このスレの300番あたりでも、関係ありそーな話は出てるみたいですが、
違う解決方法に話が移っちゃってるんで分かりませんでした。
409名無し~3.EXE:02/10/17 12:51 ID:/NpoxRKx
>408
イベントハンドラに持っていってもらうのも一つの手だけど、(むしろHTML内スクリプトではそっちしか書けない)
バッチらしい解決法で>39あたりに。
無論、書き方の好みだとは思いますが。
410名無し~3.EXE:02/10/17 16:55 ID:SwPIsf6i
>408
IE.ReadyState が、4 (READYSTATE_COMPLETE)でないなら、
 (もっと短い間隔で) Sleep を繰返す、とかは?
 IE.Busy の確認も必要なのかな。

HTA にしてしまうとか、
<hta:application windowState="minimize">
<script language="VBScript" for="iframeName" event="onload">
' iframeName.document.body.innerText
window.close()
</script>
<iframe id="iframeName" style="display:none" src="http://〜/〜"></iframe>
htaタグの属性で、もっと、IE.Visible が false と同じような指定が
 あるのではと思うけど判らず。
411名無し~3.EXE:02/10/19 00:35 ID:1wQFg/mi
教えて君で申し訳ないけど、
過去ログや、
ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
ttp://member.nifty.ne.jp/aya/wsh/
などで、今までに、
「既にあるファイルをrenameする。ファイル名はファイルの一行目」
というスクリプト出てました?出てるなら、ありか教えてください。
困ってます。
412名無し~3.EXE:02/10/19 05:55 ID:SCftuzbZ
> 403 を見て驚いた。VBS では、SJISコードを取れるのか、知らなかった。
それに、"ADODB.Stream" に文字コードを指定してるし。

<script type="text/javascript"> // HTML
var n, c = prompt('SJISコードは?','あ')
if(c){ execScript( 'n=Hex(Asc(c))', 'vbscript'); alert(n) }
</script> ファイルの文字コードを変えても、SJISコードが返る。

<job> <!-- .wsf --> <script language="VBScript">
Function SJisCharCode(c): SJisCharCode = Asc(c): End Function
Function fromSJisCharCode(i): fromSJisCharCode = Chr(i): End Function
</script><script language="JScript">
String.fromSJisCharCode = function(){ // String.fromCharCode() に合わせるなら?
for(var i=0, str =''; i<arguments.length; i++) str += fromSJisCharCode(arguments[i])
return str }///
String.prototype.SJisCharCodeAt = function(n){ // 文字列.charCodeAt(n) に合わせるなら?
return (code= SJisCharCode(this.charAt(n))) < 0 ? (code <<16 >>>16) : code ; }///
WScript.Echo( fromSJisCharCode(33440) +'\n'+ String.fromSJisCharCode(0x82A0, 33442, 0x82A4)
+'\n'+ SJisCharCode('あ') // Asc(c) から戻ってくるのが、負数?、上位ビットの 1 を 0 に。
+'\n'+ (SJisCharCode('あ') <<16 >>>16 )+'\n'+ 'あいう'.SJisCharCodeAt(0).toString(16) )
</script></job> 詰め過ぎ、ごめん。

SJISコードが判ったからといって、何か役に立つのと言われると困るけど。
ファイルに書き込もうとすると、エラー起こす文字を、? にするとか、、
var c = '\xa0'//   を渡してみる
execScript( 'c=Chr(Asc(c))', 'vbscript'); alert(c) // ?(3f)になる
 (長い文なら、window.clipboardData を使うとかの方が、、、)

次に、MSDN を(嫌々)見にいく事に。
413名無し~3.EXE:02/10/19 05:57 ID:SCftuzbZ
//文字コード(セット)の変換、
src_filePath = "x:\\〜\\abc.xxx"; dest_filePath = "x:\\〜\\abc_after.xxx"
src_charset = "" // 元のファイルの文字コード
dest_charset = "" // 変換後の文字コード
// 上二つには、"shift_jis" "iso-2022-jp" "euc-jp" "unicode" など
var src_STM = new ActiveXObject("ADODB.Stream")
var dest_STM = new ActiveXObject("ADODB.Stream")
src_STM.Open()
if(src_charset) src_STM.Charset = src_charset // 設定しなければ、"unicode" とみなされる
src_STM.LoadFromFile(src_filePath)
//var str1 = src_STM.ReadText(10); src_STM.Position = 0 //※ 10文字保存
dest_STM.Open()
if(dest_charset) dest_STM.Charset = dest_charset // 設定しなければ "unicode" に変換

src_STM.CopyTo(dest_STM)
//dest_STM.Position = 0; var str2 = dest_STM.ReadText(10) //※
dest_STM.SaveToFile(dest_filePath, 2) // 2 新規作成上書き
src_STM.Close(); dest_STM.Close();
//WScript.Echo( (str1==str2) +'\n\n'+ str1 +'\n'+ escape(str1) +'\n\n'+ str2 +'\n'+ escape(str2) )
//※ スクリプト中で扱う分には、二つの文字列は同じ、ユニコード。

上では、元のファイルの文字コードがあらかじめ判ってないとならないが、
もし、何かファイルを開いた時、その文字コードを調べようとするなら、
var ascii_STM = new ActiveXObject("ADODB.Stream")
ascii_STM.Charset = "iso-8859-1"; ascii_STM.Open()
ascii_STM.LoadFromFile(filePath); var str = ascii_STM.ReadText(); ascii_STM.Close()
WScript.Echo( escape(str) ); // ここからの判定の仕方は、?、
バイナリで開いても js からはお手上げ、vbs の AscB の様にはいかないみたい。
414名無し~3.EXE:02/10/19 08:13 ID:H/RWVH5W
>411 、判らないけど、こういうような意味かな。
var maxSize = 50;
var FS = new ActiveXObject("Scripting.FileSystemObject"), errStr =''
for(var i=0, path, str, File, Stm, Re; i<WScript.Arguments.length; i++){
    if(FS.FileExists( path= WScript.Arguments(i) )){
        if( !(File= FS.GetFile(path)) )continue
        if( !(Stm= File.OpenAsTextStream()) )continue; str =''
        while(!str && !Stm.AtEndOfStream)str = Stm.ReadLine(); Stm.Close()
        if(str){ if(str.length >maxSize)str = str.substr(0, maxSize)
            str += (Re=File.Name.match(/\.[^.]+$/)) ? Re[0]: '';
            if(File.Name !=str)try{ File.Name = str
            }catch(e){ errStr += File.Name +' '+ e.description +'\n' } }///
    }//
}if(errStr)WScript.Echo(errStr)

>412 >>16 まずった。

>>372 11 行目、
pW.document.title.replace 、document が抜けてた!
415名無し~3.EXE:02/10/21 03:59 ID:SQc6N/cZ
>412  16桁ずらして戻してなんてしなくとも、
var n, c; if(c = prompt('SJISコードは?','あ')){
    execScript( 'n=Asc(c)', 'vbscript')
    alert( (n < 0 ? ((n + 65536)+'\n'+(n ^ -65536)) : n) ) }
数字の事で何故かなど考えたくもない(考えても、まっ白になるだけなのだが)。

かといって文字の事も考えたくはない。
var ascii_STM = new ActiveXObject("ADODB.Stream")
ascii_STM.Charset = "iso-8859-1"
function 文字コード判定(filePath){
    ascii_STM.Open(); ascii_STM.LoadFromFile(filePath)
    var str = ascii_STM.ReadText(); ascii_STM.Close()
    if(/^[\xfe\xff]{2}/.test(str)) return "unicode"
    var high = false, esc = 0 // 0x80 以上のバイトと、0x1b(esc) の有無、
    for(var i=0, ch; i<str.length; i++){ ch = str.charCodeAt(i)
        if(ch > 0x7f){ if(ch !=0x80 && ch<= 0x9f) return "shift_jis" // [0x81-0x9f] がある
            high = 1; i++ }
        else if(ch==0x1b) return "iso-2022-jp" // 0x1b(esc)、(数が偶数あるとかに?)
    }///
    if(high)return "euc-jp"; return "iso-8859-1"
}/// これでは使い物にならないか。
ファイル無理やり覗くと、"utf-8" は、0xEn が、2-3 バイト毎に現われるようだし、
"utf-7" は、+ と - に2バイト文字部分が囲まれているようなのだが、
どうやって他と区別できるのか、、しかしユニコードかと思っていたら全く訳判らない。

スクリプト書くのは、こんな事したいからじゃないし、
 内側の仕組みなんかを知りたいからじゃない等と言ってみたくなる。
でもWindowsから教えてくれるサービスがないようなので、自前で何とかしないと、
 混在が普通とすれば、ファイルまとめて処理する時など、不便この上ないでしょ。
416名無し~3.EXE:02/10/21 04:00 ID:SQc6N/cZ
>>371 WMI、続き(付け足し)。
クエリを試す HTA 、(結果表示をコピーした時、字下げある様にした)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=26
イベントの通知(NotificationQuery)を試す HTA
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022248177&res=27
 やはり、FileやDirectoryの付くクラスはだめ。
SDKに何が書いてあるのか、読めないので、Queryの書き方も、どう使い道があるか
さっぱり判らない。読めたとしても、、?
 喰えないご馳走は、まずい(がさい)と決め付けて納得するしかないか、

>371 と、>405
ttp://do.sakura.ne.jp/~junkroom/.... に書き込む時、
&〜; が表示から消えてしまう事に気付かなかった。
 &amp;〜; としないといけなかった。
res=23 と res=25 (のHTA)で、表示の隙間を作るのに何箇所か &nbsp; を、
 htmlタグの title(吹出し・チップ)中での改行に &#10; を入れていたのだが、
417411 :02/10/22 09:52 ID:eAcC+WT+
>>414
「一行目→ファイル名」バージョンから
「任意の行、情報→ファイル名」に変更したいのですが、
while(!str && !Stm.AtEndOfStream)str = Stm.ReadLine(); Stm.Close()
をファイル全体行読み取りに変更した後、どのように書けばいいのか
検討が付きそうにないです。なにかいいサンプルあれば教えてください。
418名無し~3.EXE:02/10/22 09:54 ID:eAcC+WT+
それから、みなさんはWindowsで書いたスクリプトを
Unix上でも使いたい場合はUnixで動くインタープリタは何使ってます?
NJS JavaScript Interpreter とかですか?有名どころとして。
419名無し~3.EXE:02/10/22 13:08 ID:eAcC+WT+
御願いです。助けてください。
じつは、
ttp://member.nifty.ne.jp/masarl/article/ruby-win32ole/excel/xlsjoin.rb
にあるxlsjoin.rbというtoolをCygwin環境で使っているんですが、このtoolを
使うことを前提に後輩の卒論のアンケートファイルのフォーマットについて
アドバイスして、このツールを紹介しました。Cygwin環境だから
xlsjoin.rb a.xls b.xls c.xls
がドラッグアンドドロップで出来るものと思っていましたが、標準のruby
ではそれが出来ないみたいなんです。僕のアホな勘違いでした。
そこで、思いついたのが
1.WSH経由でこのrubyスクリプトを呼び出す
2.WSHでこのrubyスクリプトをラッピングする。
3.VBSでxlsjoin.vbsを書いてしまう。
のどれかです。自分で勉強しようと思ってましたが、忙しい後輩に迷惑が
かかると大変なので、皆さんに何かアドバイスを頂きたくてここへきました。

なんでも結構です。アドバイス頂けませんでしょうか?
420411,417,418,419:02/10/22 13:13 ID:eAcC+WT+
あ、後輩はUNIXのコマンドをいまさら覚えている暇はなく、
いちいちこのためだけにCygwinのシェルを立ち上げれないわけです。

 #あと、大学のすべてのマシンにCygwinが入っていないので、話がややこしい。
421名無しさん募集中。。:02/10/22 23:32 ID:zQjX/bko
>419
ruby知らないんだけど、とりあえず1.に1票。リライトはできる限り避けないとね。
あと、無確認な予想だけど適切なモジュールが入っていないと動かなくない>xlsjoin.rb
まぁそこはクリアしたと仮定して、
For i = 0 To WScript.Arguments.Count - 1
sCommand = sCommand & " " & WScript.Arguments(i)
Next
WScript.CreateObject("WScript.Shell").Run "ruby xlsjoin.rb" & sCommand

か。
他のは後々困った事があり次第ということで。
Cygwinが入っていないと、どのように困る可能性がでてくると言うのでも可。

#HP見た限りそういう動作させるなら、自分だったらExcelのVBAで作るけどなぁ。
422名無しさん:02/10/23 00:58 ID:vLudiLUF
エクセルからファイルを開くダイアログを呼び出してますが、開くディレクトリを指定できないでしょうか?
423名無し~3.EXE:02/10/23 01:37 ID:HpWrdZbW
>422
前もってカレントディレクトリを指定する。
424名無し~3.EXE:02/10/23 05:02 ID:8iCBDeci
$ls
今までは、例えば、
c:\tmp(/cygdrive/c/tmp)
$ruby xlsjoin.rb a.xls b.xls c.xls
としていたのを今回、
c:\tmp(/cygdrive/c/tmp)にxlsjoin-wrap.vbsという名で
頂いたものを置いてみました。複数ファイルをドロップすると
何もおきませんでした。パスの問題でしょうか?
425名無し~3.EXE:02/10/23 05:18 ID:8iCBDeci
すみません。以下のファイルをダウンロードして、
ruby -e 'puts $:'
の出力するディレクトリにてきとーにコピーしてください。

http://member.nifty.ne.jp/masarl/article/ruby-win32ole/file-system-object/file-win32.rb
http://member.nifty.ne.jp/masarl/article/ruby-win32ole/common/win32ole-ext.rb
http://member.nifty.ne.jp/masarl/article/ruby-win32ole/excel/excel.rb

xlsjoin.rbはこれで動くはず。

あ、それから、うえのパスの問題、
"ruby xlsjoin.rb" & sCommand
のruby,xlsjoin.rbの両方絶対パスに指定しましたが、動きませんでした。

うーん、どうしてだろ。

426名無しさん募集中。。:02/10/23 12:57 ID:QEkxVrDu
>425
申し訳ない。何度か書いているけど、Cygwin関係分からないんだ。
この単純なコマンドラインでダメなら、ばっちり引っかかっているんだろう。
もし答えられるとしても、誰かのフォローがあった後になると思う。(その時点では既に役には立たないだろうが)

あと確認なんだけど、1.このコマンドラインはDOSプロンプト上で実行出来るのか。
2.require 'getopts'
はいいの?

誰か続きHelpお願いするage。
427425:02/10/23 13:47 ID:8iCBDeci
>>426
丁寧にどうもです。
僕がrubyにこだわった理由はコマンドラインから実行できるからです。
xlsjoin.rb -o all.xls hoge-*.xls
みたいにshellのグロビングが使えたり、他のツールとの関連が容易だったり
するからです。

でもじつは、ほぼ同じ働きをするVBAコードがあるのですが、
VBAってコマンドラインから実行できないはずですよね?
このコードをVBSから呼ぶようにすればいいと思いますが、やり方判らないんですよ。
そのコード貼った方が話早いでしょうか?
428横レス:02/10/23 14:05 ID:m2YU9OWm
>>425
私は以下の手順でできました.

1. Cygwin 版 Ruby と win32ole をインストール.
2. C:\cygwin\usr\local\lib\ruby\site_ruby に xlsjoin.rb,file-win32.rb,
  win32ole-ext.rb,excel.rb をコピー.
3. デスクトップに以下のショートカットを作成.
    リンク先 : C:\cygwin\usr\local\bin\ruby.exe C:\cygwin\usr\local\lib\ruby\site_ruby\xlsjoin.rb
    作業フォルダ : "C:\Documents and Settings\fumihiko\デスクトップ"
4. マイ ドキュメント フォルダに a.xls,b.xls,c.xls を作成し,これらを
  3. のショートカットにドラッグアンドドロップ.
5. デスクトップに xlsjoin.xls が作られる.

環境変数 PATH や RUBYPATH が正しく設定されていれば、ruby.exe や
xxlsjoin.rb へのパスは省略できます。が、自信がないならフルパスを指定
してください。

wsh から呼び出したりラッパーを作ったりする必要はありません。

# >419 の質問の仕方では、具体的に a.xls,b.xls,c.xls を何にドロップした
# のか、どう上手くいかなかったのか分からないです。
429422:02/10/23 20:12 ID:0JxvCyJR
カレントディレクトリの設定をしようとしましたが、WSHで設定してもNG。
エクセルでやろうとしてもやり方が悪いのかエラーで止まってしまいます。
どういう書式でやればWSHでエクセルのカレントディレクトリを変更できるのでしょうか?
430名無しさん募集中。。:02/10/23 22:49 ID:HpWrdZbW
>427
C:\book1.xlsに、
Sub test(data1,data2)
Worksheets("sheet1").Cells(1, 1) = data1
Worksheets("sheet1").Cells(1, 2) = data2
End Sub
というマクロがあるとして、VBS側に
Dim oExcel
Set oExcel = WScript.CreateObject("Excel.Application")
oExcel.Workbooks.open "C:\book1.xls"
oExcel.Run "test","data1","data2"
Set oExcel = Nothing
で、VBSからVBAマクロを引数付で動かせます。あとは工夫次第でいかようにも。

>428
横レスthx。なんとなくどこら辺に問題を抱えているのかが見当がついた。
確かめていないし、確実な事はこちらの方からは何もいいだせないけれどね。

>429
まぁ、ひとまずおちけつ。こんなコードではエラーも出ないというところまで絞ってから、
積み重ねていった方が良く出来る。
VBAのサンプルドゾー。
Sub test()
ChDir "C:\WINNT\SYSTEM32"
s = Application.GetOpenFilename()
End Sub
431名無し~3.EXE:02/10/24 03:22 ID:iq8e0+DH
Dim StdIn, StdOut
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut


Set xlObj = CreateObject("Excel.Application")
xlObj.Visible = True
xlObj.Workbooks.add

Dim l As Integer, i As Integer
l = 0: i = 0
Do While Not StdIn.AtEndOfStream
str = StdIn.ReadLine
ss = str.Split(" ")
For i = 1 To ss.Length
xlObj.ActiveSheet.Cells(l, i) = str(i)
Next i
l = l + 1
Loop

432431:02/10/24 03:26 ID:iq8e0+DH
標準入力から読み取って、スペースを区切りにして
excelのセルに入れていくコードがわかりません。
上でエラーになりました。
433名無しさん募集中。。:02/10/24 12:44 ID:EcTjp2be
>432
コードを見てもまだ絞りきっていないようだから今の段階ではエラーの行数を見て潰すしかないね。

たとえば、SplitメソッドはVBSにはない。Split関数ならある。
そもそもSetで代入しない物はVB系では全て値型変数であって参照型オブジェクトじゃない。
値型変数にはメソッド、プロパティは存在しない。
同様に値型配列変数にLengthプロパティはない。UBound関数で上限を取得する。
434427:02/10/24 22:57 ID:doXOA7zL
>>428
アドバイス有難うございました。
ショートカットを利用すれば出来ることなんですね。
なんとなく知っていたものの今回は思いつきませんでした。
助かりました。

>>430
頂いたコード試しました。これはかなり便利ですね。431にあるような
標準入出力が使えれば、かなり便利にExcelVBAが利用できますね。
頑張って勉強しようと思います。
ところで、430にあるコードですが、スクリプト実行後も
Excelのプロセスが残りません?僕の環境だけでしょうか?
以下のようにして保存すればいいのかな?(但し動かない。意味不明エラー)

Dim oExcel
Dim aa As Workbook
Set oExcel = WScript.CreateObject("Excel.Application")
Set aa= oExcel.Workbooks.open "D:\z\my.xls"
oExcel.Run "est","data1","data2"
aa.SaveAs "D:\z\my.xls"
Set oExcel = Nothing

435名無しさん募集中。。:02/10/25 00:10 ID:R/z/c8na
>434
2:VBSではAs句はつかえません。
4:参照をセットする時は引数を括弧でくくる必要があります。
5:estはコピペミスでしょうか?
それとチョンボ。プロセスはこのままでは残りますね。
Excelの開放については、罠が結構あります。
一番見て簡単なApplicationオブジェクトレベルのものに引っかかってしまった状態。
Nothingする前に
oExcel.DisplayAlerts = False
aa.Save
oExcel.DisplayAlerts = True
oExcel.Quit
が必要です。
つーかデバッグ時は.Visible = Trueしとけって>自分
436名無し~3.EXE:02/10/26 11:30 ID:hRhobfJI
Cygwin は Windows 標準装備じゃないから除外しませんか?
437名無し~3.EXE:02/10/26 13:36 ID:xjIqYRoN
こんな質問過去にありましたか?

例えば、2chスレをブックマークに登録する時に最後のl50ってのを
付け忘れて、いちいちFavorite開いて、右クリックして……
のような操作がめんどくさいのでコマンドラインや
「ファイル名を指定して実行」などからWSHスクリプト走らせて操作するって
できますか?
438名無し~3.EXE:02/10/26 23:40 ID:g9ggfFbW
>>437
favoriteへのショートカットつくっとくしか早い気がする
439名無し~3.EXE:02/10/27 00:55 ID:pRb7L7Va
favoreteはエクスプローラだと開くのに数秒待たされます
440名無しさん募集中。。:02/10/27 01:38 ID:BAK/0aHI
>436
コマンド(DOS)プロンプトに重なるとこは取れます。コマンドライン・標準入出力ならWSHと連携も出来るし。
もちろん純粋にCygwinの問題に関しては既に誘導もあることだし放置ということで。

>437>439
それが便利なのかよくわからん。
出来ることと、やれば省力または定型化出来ること。メリットのあることを考えてみよう。
IEのお気に入りの変更かい?
そんなにたくさんはないような気がするんだが。
見当違いかもしれないのでちょっと判断保留。
441名無し~3.EXE:02/10/27 01:59 ID:naLa1SkR
>>437
・過去にそのような質問は(おそらく)無かった
・そのようなスクリプトは(おそらく)作成可能。

誰も作ってはくれないと思うが(作ってくれという依頼でもないし)、
作成自体は可能だと思うので、挑戦してくれ。
作成できたら発表してみると、誰かが助かるかも知れません。

ただ、2chに限定して考えてるなら、
専用ブラウザを使ったほうがいいと思うな。
442名無し~3.EXE:02/10/28 10:47 ID:o0BYarxY
>>437
つーか「最新50」のアンカーを対象にお気に入り登録したほうが賢明。
443431:02/10/28 16:17 ID:ByqdDmEP
スペース区切りではない(vbTAB)けどできました。tsv2xls.vbsかな?
-----------------
Option Explicit

Dim WshShell:Dim objArgs:Dim strPath

Set WshShell = CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments

If objArgs.Count <> 1 Then
  MsgBox "Usage : cscript tsv2xls.vbs [outputfile]"
Else
  strPath = WshShell.CurrentDirectory & "\" _
   & objArgs.Item(0)
  Call TsvStdIn2Xls(strPath)
End If
444431:02/10/28 16:17 ID:ByqdDmEP

Sub TsvStdIn2Xls(strPath)
  Dim StdIn:  Dim xlApp:  Dim wbNew:  Dim wsNew:  Dim rngDst:  Dim vntData:  Dim strData
  Set StdIn = WScript.StdIn:  Set xlApp = CreateObject("Excel.Application")  
  Set wbNew = xlApp.Workbooks.Add: Set wsNew = wbNew.Worksheets(1):  Set rngDst = wsNew.Cells(1, 1)

  Do While Not StdIn.AtEndOfStream
    strData = StdIn.ReadLine
    vntData = Split(strData, vbTab)
    rngDst.Resize(1, UBound(vntData) + 1).Value _
      = vntData
    Set rngDst = rngDst.Offset(1)
  Loop

  wbNew.SaveAs strPath:  wbNew.Close
End Sub
445431:02/10/28 16:19 ID:ByqdDmEP
$ dir | cscript tsv2xls.vbs out.xls
みたいに使う。
446431:02/10/28 16:21 ID:ByqdDmEP
なんどもすみません。
Unixみたく、cscriptって省略できないんですか?
先頭に
#!c:\winnt\cscript.exe
入れるみたいにして
447名無し~3.EXE:02/10/28 18:56 ID:G/MCWYIJ
>>446
ftype /?
assoc /?
448431:02/10/28 21:14 ID:ByqdDmEP
この場合、

ASSOC .vbs=VBScript
FTYPE VBScript=cscript.exe %1 %*

のようにしていいのでしょうか?

なぜか、新たにエラーが出るようになりました。

 #どういうことなんだろう……
449名無しさん募集中。。:02/10/28 22:58 ID:tI39zpS6
>442がいいことを言った。
逆転の発想だけど
キャッシュを利用するなら処理対象が多量にあるし、他の利用もありそう。更に2chブラウザでは想定外の隙間を埋められるという意味でも良いかな。
アプローチとしては、
キャッシュから2ちゃんのアドレスをあさる。
見つけたら全て所定のディレクトリ(Favoritesの子ディレクトリを想定)にショートカットを作成。と。
最初の案とはえらく違うがこんなもんではいかがですか?>質問者

>446
wscript //h:cscript
で既定のスクリプトホストを変更できるけど。
すでに447さんが答えてた。

>448
今動いているものが掲載したものならエラーのメッセージと行数を告げた方が良いのでは?
450431:02/10/28 23:13 ID:ByqdDmEP
@V:$ cat abc.tsv
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

@V:$ cat abc.tsv | cscript.exe tsv2xls.vbs output.xls
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

入力エラー: ファイル拡張子 ".vbs" を持つスクリプト エンジンはありません。

@V:$ cat abc.tsv | tsv2xls.vbs output.xls
./tsv2xls.vbs: Option: command not found
./tsv2xls.vbs: Dim: command not found
./tsv2xls.vbs: line 5: syntax error near unexpected token `CreateObject("'
./tsv2xls.vbs: line 5: `Set WshShell = CreateObject("WScript.Shell")'
451431:02/10/28 23:15 ID:ByqdDmEP
$ cat abc.tsv | cscript.exe tsv2xls.vbs output.xls
で通った段階で、
$ cat abc.tsv | tsv2xls.vbs output.xls
がしたいがために、
ASSOC .vbs=VBScript
FTYPE VBScript=cscript.exe %1 %*
を実行しました。すると上のエラーが出るようになりました。



452431:02/10/28 23:23 ID:ByqdDmEP
判りました。
ただ、ファイル属性を変更するとき
右クリックするのが面倒なときはよくattribコマンドを
1.コマンドライン
2.ファイル名を指定して実行
などから実行しますが、それと同じ感じで、
「ファイル名を指定して実行」からコマンド打てれば、
ショートカット名の補完も効くし便利、と思いました。

繰り返しますが、
「ファイル名を指定して実行」から
hoge \WINNT\system32\dummy
のようにしての「dummyのプロパティ」は
開けないのですよね?