WSH(・∀・)スレッド! Part 3at TECH
WSH(・∀・)スレッド! Part 3 - 暇つぶし2ch200:デフォルトの名無しさん
08/08/04 05:47:12
ええええ!?

201:デフォルトの名無しさん
08/08/04 07:07:03
うちも普通に2回しか回らないよ、XP SP3

202:デフォルトの名無しさん
08/08/04 08:10:08
>>199
コード読めなくても、その上で文章説明してるんだから
その通りにVBSで書けば良いだけだろ

ここはPC初心者板ではなくプログラム技術板なので
ここに来る以上、そのくらいは自分でやれなくちゃね

203:デフォルトの名無しさん
08/08/04 11:03:45
「PC初心者板」という言葉を持ち出してくる奴は
この板で有名な基地外の特徴なので
構わなくていいですよ。

204:デフォルトの名無しさん
08/08/04 11:04:03
普通に2回しか回らないね。(XP SP3)

2回以上回ってる人はどんな環境でやってるの?

205:デフォルトの名無しさん
08/08/04 11:11:10
プログラミングに関しては全く初心者なんで、変なこと言ってるかも知れないけど
For Each ObjFile in CreateObject("Scripting.FileSystemObject").getFolder(CreateObject("Wscript.Shell").CurrentDirectory).Files
これって毎回オブジェクト作ってるわけじゃなくて、最初の1回作ったときに
コレクションは出揃ってメモリに書き込まれるというわけじゃないの?

2回以上回る時は内容にアクセスするたびにオブジェクトを作り直してるわけ?

206:デフォルトの名無しさん
08/08/04 15:00:36
For Each ObjFile in CreateObject("Scripting.FileSystemObject").getFolder(CreateObject("Wscript.Shell").CurrentDirectory).Files
If Left(ObjFile.name,3)<>"new" Then ObjFile.name = "new" & ObjFile.name
  msgbox ObjFile.name
Next
で、どう?

207:デフォルトの名無しさん
08/08/04 15:03:32
For Each ObjFile in CreateObject("Scripting.FileSystemObject").getFolder(".").Files


208:デフォルトの名無しさん
08/08/04 15:12:10
>2回以上回る時は内容にアクセスするたびにオブジェクトを作り直してるわけ?
作り「直して」るわけ、ではなかろう

209:199
08/08/04 16:48:49
>>202の言う通りですね。
>>199レスでのコード依頼は、躊躇しながらも書いてしまったのですが、
やはり場違いなので取り消します。

さまざまなレスありがとうございます。

210:デフォルトの名無しさん
08/08/04 18:34:22
環境書いておくれよ

211:デフォルトの名無しさん
08/08/04 21:27:00
XPSP2/WSH5.7

上の簡単なリネームで試してみたら2回だったけど
ちょっと前に書いた自分のごちゃごちゃしたリネームのスクリプトだと
なんかリネームしたのが追加された覚えがあるな…
特定のメソッドを使ったりとかでコレクションへの追加が発動するんかな
そのスクリプトもどこかいったから確かめようがないな、ごめんよ

212:デフォルトの名無しさん
08/08/04 22:21:43
For Each ObjFile in Folder.Files
  ObjFile.name = "new" & ObjFile.name
  msgbox Folder.Files.Count
Next
してみ

213:デフォルトの名無しさん
08/08/04 22:42:35
VBscriptでApplication型のオブジェクトの宣言ってもしかして出来ない?

214:デフォルトの名無しさん
08/08/04 23:01:07
>>212
普通に2が2回表示されたよ
XP SP3

215:デフォルトの名無しさん
08/08/04 23:10:30
>>191
Set Files = CreateObject("Scripting.FileSystemObject").getFolder(CreateObject("Wscript.Shell").CurrentDirectory).Files
For Each File In Files
 File.Name = "new" & File.Name
For Each File1 In Files
  WScript.Echo File1.Name
 Next
Next

ってやると、Files の内容はリアルタイムに変わってる。
でも、外側のループは正常に2回しか回らない。

ファイルをコピーするようにすると、Files はちゃんと増えるけど、
それでも外側のループは最初にあったファイルしか対象にしない。

なので、For Each の In に続く部分は一回しか評価してないみたい。

じゃあと言うことで、ループ中にファイルを削除すると今度は削除
した奴はそ知らぬ顔でスキップする。

う~む、どうやっても >>191 の4ループは再現しない。

とりあえず、環境と再現した時のファイル名を書いてくれないか。

>>213
VBScript ではそもそも型付の宣言なんかできません。

216:デフォルトの名無しさん
08/08/04 23:14:33
>>213
createobject("Excel.Application")
createobject("Word.Application")
createobject("Autocad.Application")


217:197
08/08/04 23:20:45
>>212
リネームすることでコレクション内のポインタ(moveNext() で動くやつ)の位置に
(恐らく)不整合が出るだけであって、ファイル数自体が増えるわけではないよ。

「(元のファイル名) -> (リネーム後のファイル名) (コレクションの要素数)」という
フォーマットで結果を吐き出すスクリプト。(当方環境:Me/WSH5.6)

var targetDir = "C:\\TEST"; // '1.TXT'、'2.TXT' の2枚のファイルが入っている。
var objFSO = WScript.CreateObject("Scripting.FileSystemObject");
var fo = objFSO.GetFolder(targetDir);
var fc = fo.Files;
var fe = new Enumerator(fc);
var filename = "";
var arr = new Array();
for (; !fe.atEnd(); fe.moveNext()) {
    filename = fe.item().Name;
    fe.item().Name = "_" + fe.item().Name; ... (a)
    //fe.item().Name = "~" + fe.item().Name; ... (b)
    arr.push(filename + " -> " + fe.item().Name + " (" + fc.Count + ")");
}
WScript.Echo(arr.join("\n"));

(「改行が多い」と怒られたので結果は次)

218:197
08/08/04 23:21:34
結果:
(a)
1.TXT -> _1.TXT (2)
2.TXT -> _2.TXT (2)
_1.TXT -> __1.TXT (2)

(b)
1.TXT -> ~1.TXT (2)
2.TXT -> ~2.TXT (2)
~1.TXT -> ~~1.TXT (2)
~2.TXT -> ~~2.TXT (2)
~~2.TXT -> ~~~2.TXT (2)

219:デフォルトの名無しさん
08/08/04 23:26:39
varってみるとVARIANT思い出すよ・・・orz

220:197
08/08/04 23:27:50
×fe.item().Name = "_" + fe.item().Name; ... (a)
×//fe.item().Name = "~" + fe.item().Name; ... (b)

○fe.item().Name = "_" + fe.item().Name; // ... (a)
○//fe.item().Name = "~" + fe.item().Name; // ... (b)

行末、コメントアウトするの忘れました。

221:197
08/08/04 23:42:35
他にもいろいろとファイル名とプレフィックスを変えて試してみたけど、
はっきり言って予測不能な振る舞いをします。

今のところ、初期条件(ファイル名とプレフィックス)が同じであれば
何度試行しても結果が再現されている感じです。

222:197
08/08/05 00:23:27
今回はリネーム作業でしたが、例えば Attributes プロパティを変更する処理では
このような問題は発生しませんでした。

223:デフォルトの名無しさん
08/08/05 00:31:31
それって、予測不能って言わないよな

224:デフォルトの名無しさん
08/08/05 00:38:51
そもそも、JScript と vbs じゃ処理が違って当たり前だと思うが。

225:デフォルトの名無しさん
08/08/05 00:52:18
JScriptとVBScriptの処理の違いなんて今誰も問題にしていないが

226:デフォルトの名無しさん
08/08/05 01:05:26
jsとvbsでは結果が違うぞっつー話じゃなくて
jsにしろvbsにしろコレクションのリネーム処理で
おかしなことが起こるぞっつー話だ罠

227:デフォルトの名無しさん
08/08/05 06:52:54
>>217-218
XPじゃ再現しないなー

(a)
1.TXT -> _1.TXT (2)
2.TXT -> _2.TXT (2)

(b)
1.TXT -> ~1.TXT (2)
2.TXT -> ~2.TXT (2)

9xかFATに原因があるって事なのかな

228:デフォルトの名無しさん
08/08/05 08:32:51
理屈が分からんと気味悪いね。
これって有名な不具合なんだろうか。
NT系だと絶対に大丈夫なのかな?

229:デフォルトの名無しさん
08/08/05 20:21:32
WSHとは関係ないけど、Win32APIのFindFirstFileでも同様なことが起こったことがある。
そのときも環境によっておこったりおこらなかったりしたんだが、
同じWin2000でFAT32のドライブとNTFSでFAT32の方だけリネームされた物も引っかかった。
USBメモリ(FAT)でもおこったので、フォーマットの仕様かファイルシステムの問題なのかは
分からないが、とりあえず重複することを前提にしてからそのときは対策した。

230:デフォルトの名無しさん
08/08/05 21:43:30
FATかと思ってフロッピー(USB接続)にファイル置いて>>217を何回かやってみたら
FAT→VFATになるタイミングで発生した!XP SP3

11111111.TXT -> _11111111.TXT (2)
22222222.TXT -> _22222222.TXT (2)
_11111111.TXT -> __11111111.TXT (2)
_22222222.TXT -> __22222222.TXT (2)
__11111111.TXT -> ___11111111.TXT (2)
__22222222.TXT -> ___22222222.TXT (2)

FAT→FATやVFAT→VFATだと発生しなかった。
でも他の環境では再現しないとか普通にありそうだな・・・。

231:デフォルトの名無しさん
08/08/06 00:16:15
>>229
FindNextFile の説明にこんな記述がある。

The order in which this function returns the file names is dependent
on the file system type.
With the NTFS file system and CDFS file systems, the names are usually
returned in alphabetical order.
With FAT file systems, the names are usually returned in the order
the files were written to the disk, which may or may not be in alphabetical order.
However, as stated previously, these behaviors are not guaranteed.

簡単に言うと、

NTFS や CDFS だと大抵アルファベット順になるけど、FAT は書いた順になるよ。
でも、保証なんてしないからね。

と言うことなので、ここら辺の動作がファイルシステムで違うのは仕様と言うことらしい。

232:デフォルトの名無しさん
08/08/06 00:56:08
順番が違うだけなら仕様の一言で納得するけど、
例のリネームし過ぎ現象は仕様としては到底受け容れ難いな。
もはや不具合だ。

そもそもリネームでタイムスタンプは更新されないけどな。
ディレクトリエントリは書き換えるだろうけど。

233:デフォルトの名無しさん
08/08/06 01:14:44
やっぱり一旦配列に書き出すなりした方が無難ってことすかね
めんどいなぁ

234:デフォルトの名無しさん
08/08/06 01:24:00
>>206にしとけ

235:デフォルトの名無しさん
08/08/06 01:24:54
>>232-233
フォルダの内容を取得中にフォルダの中身変えたら取得内容を
保証できないのはある程度理解できる。

システム側で保持しておくと言う方法もあるけど、スゲーたく
さんファイルがあるフォルダの最初の数個を取得したい時に
全部のファイル名を取得されるまで Folder.Files が返ってこ
ないと言うのもちょっと困ったもんだと思う。

236:デフォルトの名無しさん
08/08/06 01:27:53
全然一般性ないじゃん。

第一オリジナルファイル名が「new」で始まらない保証がない。

237:236
08/08/06 01:28:46
>>234宛て、な。

238:デフォルトの名無しさん
08/08/06 01:30:46
>>206=>>234 ダメグラマの典型だろ。

239:デフォルトの名無しさん
08/08/06 01:38:51
一般性が必要か?

240:デフォルトの名無しさん
08/08/06 01:41:58
一般性のある回避策(配列に書き出す)が提示されているのに
「運がよければ通用するかもしれない>>206の方法」に拘泥する理由は?

241:デフォルトの名無しさん
08/08/06 01:49:05
質問者の技術力

242:デフォルトの名無しさん
08/08/06 01:50:57
一般性の有る方法をコーディングするのに
多大なコストがかかるというのなら
とりあえず今だけ通用すればいいという
一般性の無いその場凌ぎな方法を採るのも
場合によっちゃアリだが
今の場合大してコストもかからないからな

243:デフォルトの名無しさん
08/08/06 01:52:27
>>199

244:デフォルトの名無しさん
08/08/06 02:37:31
普通はクラスライブラリからごりごり作っていくもんなの?
俺はコスト度外視日曜な人だから作ってる過程でライブラリが出来ていくって感じなんだけど。
日曜な人だからライセンス度外視で使えるライブラリは使うし。

245:デフォルトの名無しさん
08/08/06 21:31:01
趣味なら何でもアリ、好きなようにやればよろし。

仕事なら、職場やプロジェクトの方針に従えばよろし。

246:デフォルトの名無しさん
08/08/06 22:12:15
WSHのプロジェクトw

247:デフォルトの名無しさん
08/08/06 22:46:37
プロジェクトの成果物が WSH オンリーと言うのは見たことないけど、
一部の成果物が WSH と言うのなら見たことあるぞ。

248:デフォルトの名無しさん
08/08/06 23:37:46
Set ArrayList=CreateObject("System.Collections.ArrayList")
For Each ObjFile in CreateObject("Scripting.FileSystemObject").getFolder(".").Files
ArrayList.Add ObjFile
Next
For Each ObjFile in ArrayList
ObjFile.name = "new" & ObjFile.name
Next


249:デフォルトの名無しさん
08/08/07 02:00:25
System.Collections.ArrayListってなんぞな?
どとねととか言うヤツ?
検索したら一部をvbsでも利用できるのがあるのかぁ


250:デフォルトの名無しさん
08/08/07 02:27:19
vbsで.NETFrameworkを利用できるらしいけど
使えるってこととArrayListの例がちょこっとあるだけで
リファレンス的なものがみつからないんだよなぁ

251:デフォルトの名無しさん
08/08/07 05:31:04
>>250
.NET Frameworkが使えるというよりも、特定の条件を満たしたCOMを
CreateObjectで使えるってだけだから、.NET Framework以外のCOMも
使える物があるし、.NET FrameworkでCOMがHKEY_CLASS_ROOTに
登録されていても使えない物もある。
WSHから扱えるクラスの網羅的な資料が提供されないままPowerShellが
出てきたってことは、MSとしてはPowerShellを使ってほしいんだろ。

252:デフォルトの名無しさん
08/08/07 10:03:48
便利そうなのをちょっと使えるってだけっぽいね。
中途半端な対応は混乱するだけなのに。。。

PowerShellって現在の環境に導入するには
別途インストールしなければならないから導入しづらいんだよな。

253:デフォルトの名無しさん
08/08/07 12:32:46
同じ高さにしてほしいな、WSHとPS

254:デフォルトの名無しさん
08/08/07 18:00:21
vbsでSystem.Collections.ArrayListを使えば自分でせこせこ自作ソートを記述しなくてもいいのか
自分でソート書くのが面倒でjsを使うようになったらjsのオブジェクトがいじりやすくて慣れちゃったよ

255:デフォルトの名無しさん
08/08/07 19:13:52
JScriptの配列は遅すぎて泣けるけどie8で速くなってる?

256:デフォルトの名無しさん
08/08/07 22:43:21
>>255
会社のマシンに IE8 を試しに入れてるんだが、
JScript のエンジンも更新されてるんだろうか?

257:デフォルトの名無しさん
08/08/08 02:39:33
そういう話は一応ある。
スレリンク(win板:206-210番)
URLリンク(www.google.com)スレリンク(win板:206-210番)
URLリンク(www.google.co.jp)

258:デフォルトの名無しさん
08/08/08 21:36:53
すんません、質問です。

スクロールキーがオンの場合、あるキーを入力するスクリプトを組みたいんですが、
オンかオフかWSH上で判断できますか?

259:デフォルトの名無しさん
08/08/08 22:15:33
WSH上で判断することは出来るけど
WSHで判断することは出来ない

つまりCOMを作るか探すかしろってことだ
まぁがんがれ

260:デフォルトの名無しさん
08/08/08 22:55:48
activex.dllはvb.net expressで作ればいいよ

261:258
08/08/08 23:56:28
>>256, 260
どうもありがと。がんばってみます。。。

262:デフォルトの名無しさん
08/08/09 01:03:17
がんばれ。google先生に聞けば1時間でできると思うぞ。

263:デフォルトの名無しさん
08/08/09 18:45:18
System.Collections.ArrayList
はJoinできない?
xJoin(ArrayList)
xArrayList.Join


264:デフォルトの名無しさん
08/08/09 19:24:01
.NET Framework使うならMSDNライブラリくらい参照しようよ。

265:デフォルトの名無しさん
08/08/09 22:48:07
※MSDNライビュラリは有償です

266:デフォルトの名無しさん
08/08/09 22:50:57
>>265
 |
 |
 |
 し


267:デフォルトの名無しさん
08/08/10 12:32:36
>>263
Join出来るよ

268:デフォルトの名無しさん
08/08/10 14:01:35
出来た!

269:デフォルトの名無しさん
08/08/10 21:34:48
System.Collections.ArrayList
のソートで比較関数をVBScriptで作れない?
ArrayList.Sort GetRef("compare")
はダメだった

270:デフォルトの名無しさん
08/08/11 05:34:14
vbsの変数名の最後につける型を指定するやつ(&H20&の末尾の&とか)の種類の一覧がどこにあるか知りませんか?
どういう単語で検索すればいいのか漠然としすぎて分かりません

あとこのURLの「[地域のプロパティ] の設定値」ってなんですか?
URLリンク(msdn.microsoft.com)


271:デフォルトの名無しさん
08/08/11 14:58:31
>vbsの変数名の最後につける型を指定するやつ
vbsにはない。すれっち

272:デフォルトの名無しさん
08/08/11 15:06:32
>型を指定するやつ
型を指定する文字

273:デフォルトの名無しさん
08/08/11 20:55:23
最後じゃなくって最初じゃないの?

274:デフォルトの名無しさん
08/08/11 21:25:08
>>270
前者は271も言ってる通りVBSには明示的な型というもの自体が存在しないが
VBやVBAに関してなら「型宣言文字」でググれ

後者は、例えば数値の表示形式で、3桁カンマ区切りをするか否かというオプションの場合
vbTrue→地域のプロパティの設定値に関係なく区切る(123,456,789.00)
vbFalse→地域のプロパティの設定値に関係なく区切らない(123456789.00)
vbUseDefault→地域のプロパティの設定値が「区切り有り」なら区切る、「区切り無し」なら区切らない

>>273
最初に付けるのは型を「指定」しているのではなく、型を「任意に明示」してるだけ
「指定」ではなく、しかも「任意」なので
Dim intHOGE As String
なんてことも出来る
これは「プレフィックス」で、上記intはハンガリアン記法での一般的なInteger型のプレフィックス
つまりInteger型のプレフィックスを付けておきながらString型を指定することが出来るわけだ

275:デフォルトの名無しさん
08/08/11 21:41:43
>>274
ごめ ちゃんと読んでなかったわ

276:デフォルトの名無しさん
08/08/13 18:29:26
CIM_DataFileクラスを用いて、ファイルの各種情報を取得したいのですが、
「説明」のプロパティを取得するときに指定するプロパティ名が分かりません。

具体的には、例えばソリティア(C:\WINDOWS\system32\sol.exe)を
右クリックして表示されるプロパティの「バージョン情報」タブの2行目に
「説明:Solitaire Game Applet」と表示されますが、この値を取得したいのです。

ファイルバージョンなどは、「Version」プロパティで取得できております。
ご存知の方、ご教示お願い致します。

277:デフォルトの名無しさん
08/08/14 02:40:13
プレフィクスだったらMSDNにのってるよ
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbcon98.chm::/Html/vbconconstantvariablenamingconventions.htm


278:デフォルトの名無しさん
08/08/14 04:43:23
>>277
そんな話は誰もしてないw

279:デフォルトの名無しさん
08/08/14 10:27:49
>>278
>>270
よく読め文盲

280:デフォルトの名無しさん
08/08/14 13:34:45
.NETのコンストラクタやスタティックメソッドは呼べないのか

281:デフォルトの名無しさん
08/08/14 13:57:47
ActiveXPosh使えばー?

282:デフォルトの名無しさん
08/08/15 19:25:16
>>276
確かにMSDNとかにはプロパティ名書いて無いね。
どうりでこのスレの住人でも即答できない訳だ。

283:デフォルトの名無しさん
08/08/15 22:01:03
ggle VersionInfo Description

284:デフォルトの名無しさん
08/08/15 22:03:50
つfilever.exe

285:デフォルトの名無しさん
08/08/15 22:09:36
shell.applicationのextendedpropertyで取れるお

286:デフォルトの名無しさん
08/08/25 19:37:01
割り算をして小数点が出てきたときに
繰り上げるにはどうしたらいいんでしょうか?
x = 100/3
だとxが33.33333となってなるところを
繰上げて34になるようにしたいのですが

287:デフォルトの名無しさん
08/08/25 20:50:45
>>286
xと、xを切り捨てた値を比較して、xが小さければ1を足す

288:デフォルトの名無しさん
08/08/25 21:06:25
JScript で言うと、xと xを繰り上げた値を比較して、xが小さければ繰り上げる。

289:デフォルトの名無しさん
08/08/25 21:34:16
-Int(-x)

290:デフォルトの名無しさん
08/08/25 23:05:35
Math.ceil

291:デフォルトの名無しさん
08/08/27 11:54:53
>>286
0.9を足して切り捨て。

292:デフォルトの名無しさん
08/08/27 11:55:54
ああ、四捨五入と違って33.01も切り上げするならダメか。

293:デフォルトの名無しさん
08/08/27 12:16:41
VBScriptでウェブページを取得したいのですが
mixiのような感じで、ユーザー名やパスワードが必要な場合はどうすればいいんでしょうか?
いろいろググってみたのですが、検索ワードが悪いの見つける事が出来ませんでした・・・

294:デフォルトの名無しさん
08/08/27 13:42:12
無理

295:デフォルトの名無しさん
08/08/27 18:06:49
もともと無理だったんですか・・・・
一番簡単なものだと何で出来ますか?jscriptでもやっぱり無理なんでしょうか?

296:デフォルトの名無しさん
08/08/27 18:53:35
Dim mixi, email, password
Dim ie, document, form

mixi = "URLリンク(mixi.jp)"
email = "null@po.com"
password = "nullpo"

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate(mixi)
Do While ie.Busy
    WScript.Sleep(1000)
Loop

Set document = ie.Document
Set form = document.forms("login_form")
If TypeName(form) = "Nothing" Then WScript.Quit()
form("email").value = email
form("password").value = password
form.submit()

297:デフォルトの名無しさん
08/08/27 19:16:58
---------------------------
Windows Script Host
---------------------------
スクリプト: C:\296.vbs
行: 15
文字: 1
エラー: エラーを特定できません
コード: 80004005
ソース: (null)

---------------------------
OK
---------------------------

さすがVistaだ。なんともないぜ!

298:デフォルトの名無しさん
08/08/27 19:43:47
Do While ie.Busy Or ie.ReadyState<>4

299:デフォルトの名無しさん
08/08/27 20:11:00
なんか忘れてた気がしたけどReadyStateか
あとNothingの扱いをちゃんと調べたことないしIsNothingとかないからNothingの判定がよくわからんかった
If form Is Nothing Then WScript.Quit()
でいいんだな

300:デフォルトの名無しさん
08/08/27 22:08:51
>Quit() とか
VBScriptなのに

301:293
08/08/28 10:44:50
レスありがとうございます

>>296
IEを使えば出来るんですね!
使わないではやっぱり無理なんでしょうか?


302:デフォルトの名無しさん
08/08/28 11:09:26
無理じゃないよ
スレ違い(WSHではなくActiveX汎用コンポーネントの話)になるので詳しくは伏せるけど

303:デフォルトの名無しさん
08/08/28 16:56:19
CreateObject使うのはスレ違いだって?

304:デフォルトの名無しさん
08/08/29 17:21:52
>>296はIEスレてなもんだな

305:デフォルトの名無しさん
08/08/31 18:04:45
unix系のシステムでもWSH使えたら良いのにネ。
bashよか使い勝手が良い。

306:デフォルトの名無しさん
08/08/31 18:20:08
UNIXならrubyあたりでいいじゃん。なんでそこでbashが出てくるの?
bashと比較するんならcmdとかPowerShellとかだろ。

307:デフォルトの名無しさん
08/08/31 18:35:38
わざわざインストールが必要な ruby なんか全然
お呼びでないので、巣から出て来るなよ。

308:デフォルトの名無しさん
08/08/31 19:41:27
>>305
なんでbashの替わりがWSHなの???意味が分からん

309:デフォルトの名無しさん
08/08/31 20:15:54
代わりにならないからぼやいてるんだろ。
意味わからんのならレスしなきゃいいのに。

310:デフォルトの名無しさん
08/08/31 20:28:22
bashは主にUNIX系OSで使われているシェルのひとつ。
WindowsではコマンドプロンプトやPowerShellに相当。

代わりになるわけがないのに、ぼやく意味がわからん

311:デフォルトの名無しさん
08/08/31 20:37:31
とりあえず>>305がunix系システムをろくに使いこなせていないことは解った。


312:デフォルトの名無しさん
08/08/31 21:29:37
>>310
> 意味わからんのならレスしなきゃいいのに。

# cmd.exe と bash を比較してる時点でアホ丸出しだし。

313:デフォルトの名無しさん
08/09/02 10:37:33
よくわからんけど、>>305はシェルスクリプトって言いたかったのかも

314:デフォルトの名無しさん
08/09/03 12:14:55
Sendkeysを並べてWindows Vistaを自動的に操作するスクリプトを書いてるんですが、
UACのダイアログが出るとそこで終わっちゃうんです。
「実行するにはあなたの許可が必要です」ってダイアログに対して {LEFT}{ENTER} とか %c って書いても
ボタンを押してくれません。
どうすればいいのか、だれか教えてください。

315:デフォルトの名無しさん
08/09/03 12:59:22
>>314
UACを無効にしておく

316:デフォルトの名無しさん
08/09/03 13:18:31
>>315
UACを切らずに済む方法はないでしょうか?

317:デフォルトの名無しさん
08/09/03 13:36:29
スクリプトを動かし始める前に昇格しておく。

318:デフォルトの名無しさん
08/09/03 20:00:51
>>314 .sendkeys "{space}"

319:デフォルトの名無しさん
08/09/03 22:21:54
>>317-318
ありがとうございます。明日、出社したら調べてみます。


320:デフォルトの名無しさん
08/09/05 16:27:42
やってみましたが {SPACE} はエラーになりました。そういうキーワードはなさそうです。
昇格は勉強中です。難しいです。

321:デフォルトの名無しさん
08/09/05 17:26:59
>>320
これが参考になると思う。
URLリンク(technet.microsoft.com)
URLリンク(face-products.com)

322:デフォルトの名無しさん
08/09/05 18:15:21
.sendkeys " "

323:デフォルトの名無しさん
08/09/07 19:26:28
スクリプトってこれ最悪だな。
使ってないけどたぶん.NETも同じなんだろうな

324:デフォルトの名無しさん
08/09/07 19:34:41
発端はJavascriptなんだからしょうがない。

325:デフォルトの名無しさん
08/09/07 20:57:03
>>323
いやいや.NETを一緒にするな。
あれのダメさはまた別物。

326:デフォルトの名無しさん
08/09/17 10:08:29
WSH使いの視点で見るとIronPythonとかIronRubyってどうなん?

327:デフォルトの名無しさん
08/09/17 10:47:28
ActivePythonではなくIronPythonならWSHとは全く関係ないものなので
「WSH使い」の視点からは視野外だ

もちろん「WSH使い」でもWSH以外を使う人はいっぱい居るから
個々の視点ではいろんな意見があるだろうが、それは「WSH使い」の視点ではないからな

328:デフォルトの名無しさん
08/09/28 02:16:01
すいませんWSHの質問です。
IEのテキストボックスに値を入力したいんですが、
そのテキストボックスはたくさんあってtbox[0].priceからtbox[100].priceまであるんです。
IE.Document.form.tbox[0].price.value = "100"とやると、オブジェクトがありませんという実行時エラーになってしまいます。
普通のテキストボックス名(tbox1)とかなら大丈夫でした。
テキストボックス名がピリオドで区切られているのですが、そういう場合なにか工夫がいるのでしょうか?
こういう場合どうすればできるでしょうか?
よろしくお願いします。

329:デフォルトの名無しさん
08/09/28 14:00:19
言ってることがいまいちピンとこない。
エラーになる最小のソースを晒せ。

330:328
08/09/28 17:19:12
>>329
すいません。お願いします。
HTML
<html>
<body>
<input name="tbox[0].price" type="text" value=""/>
<input name="tbox[1].price" type="text" value=""/>
<input name="aaa" type="text" value=""/>
</body>
</html>

WSH
IE.document.form.tbox[1].price.value = "100"
とやると実行時エラーで "1"というオブジェクトがありませんというようなエラーが出ました。
IE.document.form.aaa.value = "100"
とやるとaaaのテキストボックスに正しく100が入力されます。

最終的にやりたいのはテキストボックスがいっぱいあるのでFOR文でまわして全部に入力したいです。
ちょっと今ソースがみれないのでわかりづらいかも知れないですが、よろしくお願いします。

331:デフォルトの名無しさん
08/09/28 18:15:25
今朝のことです。

ブラウザを操作するスクリプトが暴走して、
IEとWScript.exeが無限起動してたwwww
ブラクラwwwwwwww

332:デフォルトの名無しさん
08/09/28 19:31:24
>>329
<input name="tbox[0].price" type="text" value=""/>
<input name="tbox[1].price" type="text" value=""/>
↑のname要素の書き方の場合、"tbox[0].price"という名前の要素を定義していることになる。
"tbox[0].price"というname要素と"tbox[1].price"というname要素の間にはまったく関連性はない。
そもそも"tbox[0].price"という書き方をしたところで勝手に配列オブジェクトになりはしない。

× IE.document.form.tbox[1].price.value = "100"
○ IE.document.form.["tbox[1].price"].value = "100" ←つまりこういうアクセスの仕方をしなければならない。

いまのままで何とかループをまわしたいなら、↓みたいなやり方になる。
for ( var i = 0; i < 100; i++ ) {
IE.document.form.["tbox[" + i + "].price"].value = "100";
}

333:デフォルトの名無しさん
08/09/28 19:43:02
この糞スレがはじめて世の中の役に立った瞬間に立ち会えたww

334:デフォルトの名無しさん
08/09/29 02:29:31
全部同じnameをふってgetElementsByNameで配列を得てから回すんだ!

335:デフォルトの名無しさん
08/09/29 02:32:11
>>333
このスレがグルジアでの米ロ軍事衝突を食い止めてたの知らないなんて
どんだけにわかなんだよ

336:デフォルトの名無しさん
08/09/29 20:22:48
>>335
米ロが衝突とかどうでもイイからさ、
インストール済のWindowsコンポーネントの一覧をテキストファイルに落とす方法を教えてくれよ。

いや教えてください。お願いします。この通りです。

337:デフォルトの名無しさん
08/09/29 21:54:22
Windowsコンポーネント?
その中でWSHから使えるのなんて極一部(ActiveXコンポ)だぞ

ActiveXコンポのみなら、各種オブジェクトブラウザで一覧出来るので
リスト取得ツールでも使ってテキストに落とせば良い
WSHから使えないものも含めて、Windowsコンポ全てを網羅したいならスレ違い

スクリプトで取得したいなら、レジストリを嫁
レジストリの内容取得は、WshShell使う方法はWSHヘルプに載ってるし
WMI使う方法なら、そこら辺にサンプルがごろごろ転がってる
レジストリの内容解釈に付いてはスレ違いなので伏せる

338:デフォルトの名無しさん
08/09/29 22:06:02
ちっがああああぅw

コンパネの[プログラムの追加と削除]から[Windowsコンポーネントの追加と削除]って
選べるでしょ。あれの一覧。IISとかインストールするのに使うでしょ。

あの中から、どんなコンポーネントが選べるのか、
実際にインストールされているのはどれなのか?を
テキストファイルに吐き出したい。それだけ。

米ロが衝突する前に教えてほしい。君の1レスが世界を救うんだ、頼む!

339:デフォルトの名無しさん
08/09/30 00:01:49
質問とは関係ないけどVistaだとこんなのもできた。

Set sh = WScript.CreateObject("Shell.Application")
Set cpl = sh.NameSpace(3)
For Each i in cpl.Items
If i.Name = "プログラムと機能" Then
For Each j in i.GetFolder.Items
s = s & j.Name & vbNewLine
Next
End If
Next
MsgBox s


340:デフォルトの名無しさん
08/09/30 17:49:44
If i.Name = "プログラムと機能" Then msgbox i.path
してみて、次からsh.NameSpace()に指定すればいいんじゃない?

341:デフォルトの名無しさん
08/09/30 21:05:19
Wscript.CreateObject("WindowsInstaller.Installer")


342:デフォルトの名無しさん
08/09/30 21:15:48
おい、おまえらXPでも動くようなのを書けよ
小出しにするなまとめろ

343:デフォルトの名無しさん
08/09/30 22:19:33
ていうかコンパネの一覧表か
要らんわ

344:デフォルトの名無しさん
08/09/30 23:29:48
ほう助33世

345:デフォルトの名無しさん
08/09/30 23:49:30
>>340
なるほろ!Pathか。
ParseName("プログラムと機能") しても引っ掛からなかったんで廻してしまったよ。

Set cpl = WScript.CreateObject("Shell.Application").NameSpace("::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{7B81BE6A-CE2B-4676-A29E-EB907A5126C5}")
For Each i in cpl.Items
s = s & i.Name & vbNewLine
Next
MsgBox s

346:デフォルトの名無しさん
08/09/30 23:59:55
うしろだけでもよいかも
"::{7B81BE6A-CE2B-4676-A29E-EB907A5126C5}"

347:デフォルトの名無しさん
08/10/01 00:11:47
>>346
うん、それはダメだった。理屈は良く分からんが。

348:デフォルトの名無しさん
08/10/01 01:58:58
数字はないか?一覧してみ
On Error Resume Next
Set Shell=CreateObject("Shell.Application")
For k=0 To 100
Set Folder=Shell.NameSpace(k)
WScript.StdOut.WriteLine Join(Array(k,Folder.Self.Name,Folder.Self.Path),vbTab)
Next


349:デフォルトの名無しさん
08/10/06 21:22:19
゚         (_ヽ      +
 ' *  /⌒ヽ.| |  +
   . ( ^ω^ / /       。
  +  y'_    イ    *
   〈_,)l   | *      。
ガタン lll./ /l | lll    +
VBScriptで、こんな感じでドライブの取り出しはOKですが、逆の「閉じる」は出来ませんか?
2chに集う墓でも無理?
Set objShell = CreateObject("Shell.Application")
set objDrive = objShell.NameSpace("D:\")
Set objItem = objDrive.Items.Item
objItem.InvokeVerb "取り出し(&J)"

350:デフォルトの名無しさん
08/10/06 21:32:14
hard to close

351:349
08/10/07 03:20:31
自己解決しました。
検索したら、そういう動作をするサンプルプログラムがありました。
でもハード側もそれに対応してないと動かない、ということでした。

結論は:開く「閉じる」をするVBscriptのプログラムはあるが、すべてのハードでは出来ない

゚         (_ヽ      +
 ' *  /⌒ヽ.| |  +     対応してないハードでそれを使っても
   . ( ^ω^ / /       。 ←ガタン!と出たままになると
  +  y'_    イ    *
   〈_,)l   | *      。
ガタン lll./ /l | lll 

352:デフォルトの名無しさん
08/10/07 08:57:42
原理的にはコードを逆に書けば逆の動作をするはず。

)"noitacilppA.llehS"(tcejbOetaerC = llehSjbo teS
)"\:D"(ecapSemaN.llehSjbo = evirDjbo tes
metI.smetI.evirDjbo = metIjbo teS
")J&(し出り取" breVekovnI.metIjbo

353:デフォルトの名無しさん
08/10/07 09:17:44
objShell.Run """C:\\ProgramData\\Microsoft\\Windows\Start Menu\\Programs\\Fantasy Earth Zero\\Fantasy Earth Zero.lnk""",1,1
Do
Set ProcessSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where Name='FEzero_Client.exe')
WScript.Sleep 1000 '1秒間待機
Loop While ProcessSet.Count > 0
’処理

FEzero_Client.exeが終了したら、適当なプログラムを実行させたいのだが、FEzero_Client.exeがnprotectによって隠蔽されているせいでうまくいかない。
そこでウィンドウが存在するかどうかを判定することによってFEzero_Client.exeが起動しているかどうかを調べる方法をとりたい。
でも、いくら探しても、見つからない。
ウィンドウ名が存在しているかどうかを調べる方法があったら教えてほしい。

354:デフォルトの名無しさん
08/10/07 18:46:10
>>353
AppActivate

355:デフォルトの名無しさん
08/10/07 21:14:56
>>354
それだと、まずいんだ・・・
FEZero_Client.exeを起動している間にも、ブラウザーで作業したりするから。


356:デフォルトの名無しさん
08/10/07 22:25:24
>>338
亀&自己レスだが、「Windowsコンポーネントの一覧&インストール状態」の取得デキタ。
レスはあまり参考にならなかった(すまん!)が、一応此処で聞いたって事でフィードバックしておく。
ちなみにXPSP2な。2003でもいけると思う。

・コンパネから起動する「Windowsコンポーネントの追加と削除」は以下のコマンドで起動されてる。
「c:\windows\system32\sysocmgr.exe /y /i:c:\windows\inf\sysoc.inf」

・上のコマンドの引数の「sysoc.inf」ファイルの「Components」セクションで他の*.infファイルへの参照が列挙されてる。
*.infファイルが明記してなかったり「hide」に設定されてる行は無視される。

・具体的なコンポーネントの名称、説明、「Windowsコンポーネントの追加と削除」画面での階層構造とかは
個々の*.infファイルの方を見る。

・Windowsコンポーネントのインストール状態については以下のレジストリに格納されてる。
「HEKY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OC Manager\Subcomponents」

・個々の*.infファイルの「Optional Components」に列挙されているコンポーネント名が、
上のレジストリキー配下のプロパティに対応してる。

以上。プログラムはinfファイルやレジストリを読むだけのダルいものなのであえて載せないw
え?WSH関係ない?そうだよちきしょう。

357:デフォルトの名無しさん
08/10/07 22:40:11
>>339以降は関係ない話だから役に立つはずがない。

358:デフォルトの名無しさん
08/10/10 01:16:11
>>353 tasklist.exe

359:デフォルトの名無しさん
08/10/10 07:57:28
>>358
nprotectによってFEZero_clinet.exeがごっそり消えてる。
タスクマネージャーを使っても、WMIをつかっても、Tasklistをつかっても、結果は同じだった。

360:デフォルトの名無しさん
08/10/11 03:01:54
Windows 2000 SP4、IE6.0 SP1、WindowsUpdateは一通り入れた状態でcscript
> C:\Documents and Settings\Administrator>cscript
> Microsoft (R) Windows Script Host Version 5.6
> Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

WSH5.6を入れた記憶は無いんだけど
SP4は5.6がデフォ?それともIE6.0 SP1入れたから?うーん。

URLリンク(www1.u-netsurf.ne.jp)
> Windows98 SecondEdition は 5.1
> Windows 2000 SP3 は 5.1
> WindowsXP は 5.6

361:デフォルトの名無しさん
08/10/11 11:53:54
> それともIE6.0 SP1入れたから?

多分それだと思う。

URLリンク(www.microsoft.com)

+よく寄せられる質問

使用中の VBScript のバージョンはどのように分かるのですか?

VBScript.dll ファイルは 2 つのソフトウェア製品 (Internet Explorer および
Microsoft Windows Script) に同梱されています。

・Internet Explorer 6.0 : Internet Explorer 6.0 を実行しているお客様については、
 使用しているプラットフォームに関係なく、Windows Script 5.6 が既定でインストー
 ルされています。Windows Script 5.6は Internet Explorer 6.0 に同梱されています。

・Internet Explorer 5.5 : Internet Explorer 5.5 を実行しているお客様については、
 使用しているプラットフォームに関係なく、Windows Script 5.5 が既定でインストー
 ルされています。Windows Script 5.5 は Internet Explorer 5.5 に同梱されています。

・Internet Explorer 5.01 : Internet Explorer 5.01 を実行しているお客様については、
 使用しているプラットフォームに関係なく、Windows Script 5.1 が既定でインストール
 されています。

Internet Explorer のバージョンを 6.0 または 5.5 にアップグレードしていないお客様は、
次のバージョンの Windows Script を実行している高い可能性があります。

・Windows 2000 : Windows Script 5.1
・Win ME : Windows Script 5.5

# ちなみに、Windows Script 5.1 は、元々 Windows Script 2.0 と呼ばれていた。

362:デフォルトの名無しさん
08/10/11 14:46:39
Version 5.6 だった
で、それがなんなの
「うーん」なんて書くほどのことかよアホ

363:デフォルトの名無しさん
08/10/11 14:55:49
わざわざ3行もレスするような事かよアホ

364:デフォルトの名無しさん
08/10/11 15:20:47
>>362
違いがわからない奴が無理してレスする必要は無い

365:デフォルトの名無しさん
08/10/11 17:49:09
ダバダ~

366:デフォルトの名無しさん
08/10/11 18:34:16
         ___
        /       ヽ    「うーん」
    , -‐ (_).⌒ l ̄| ⌒ |     __o
     l_j_j_j と) ノ─|  ノ        | 二|二''  _
    /   /       ヽ       ノ   |  ヤ   ッ
    〈  ノ         |

367:デフォルトの名無しさん
08/10/11 19:02:31
マンダム

368:デフォルトの名無しさん
08/10/11 19:08:46
この3人は40代(以上)の中年プログラマー
  ↓↓↓
>>364>>365>>367

369:デフォルトの名無しさん
08/10/11 19:44:07
ネタ元の分かるお前もなw

370:デフォルトの名無しさん
08/10/11 20:59:36
この3人はN88BASICで育った世代
  ↓↓↓
>>364>>365>>367

371:デフォルトの名無しさん
08/10/11 21:41:26
初体験はTK-80だったわ(ポッ

372:デフォルトの名無しさん
08/10/11 23:06:40
>>361
丁寧にコピペまでサンクスです
お陰でWSHのバージョンに関係しそうな要素が掴めました
こんなところかな。ちゃんと管理していこうと思ってます。それでは失礼
・導入OS
・IEバージョンうp
・WSHバージョンうp

373:デフォルトの名無しさん
08/10/11 23:16:01
TKとはトレーニングキットの意味じゃなく小室哲哉のことね。これ常識中の常識。

374:デフォルトの名無しさん
08/10/16 14:48:58
ドラッグアンドドロップした画像をペイントで開くにはどうすればいいですか?

375:デフォルトの名無しさん
08/10/16 15:34:24
WScript.Shellでmspaint.exeをRun

376:デフォルトの名無しさん
08/10/23 22:33:22
Windows Script Host の実行の失敗しました。(この操作を完了するのに十分な記憶域がありません。)
ってエラーが出るのですがなんでしょうか?ある程度調べてみたのですが改善されませんでした。
どなたかご教授お願いします。

377:デフォルトの名無しさん
08/10/24 14:18:54
>>376
ファイル名を変えろ or フルパスで指定しろ

378:デフォルトの名無しさん
08/10/24 14:27:59
>フルパスで指定しろ
だめ

379:デフォルトの名無しさん
08/10/24 20:05:31
>>377,378
ありがとうございました


380:デフォルトの名無しさん
08/10/30 18:40:50
すみません。
プログラムの追加と削除やスタートメニューを見てインスコされているアプリの一覧を作りたいです。
教えて下さい。

381:デフォルトの名無しさん
08/10/30 19:54:34
URLリンク(www.microsoft.com)

382:デフォルトの名無しさん
08/10/30 19:57:47
dir /s /b c:\*.exe

383:デフォルトの名無しさん
08/10/30 20:51:11
format c:

384:380
08/10/30 22:30:06
すみません。真面目に訊いてるんですけど。。。
アプリの件は皆さんがふざけている間にPCViewっていうフリーソフトで事故怪傑しました。
その他にインスコされてるフォント名の一覧が欲しいです。
これが最後☆チャンスです。皆さんの役に立つとこ見せて下さい。

385:デフォルトの名無しさん
08/10/30 22:36:55
>>384
おれは真面目に>>381って返したつもりなんだけどな。無視ですかそうですか。ちょっと泣けちゃう。フォント名の一覧?知るかばーか。

386:デフォルトの名無しさん
08/10/31 12:00:21
>>382 >>383 すれ違い
>>384 フリーソフトさがせ

387:デフォルトの名無しさん
08/10/31 12:40:02
appwiz.cpl中のhtaで使ってるobjectは利用できないのかね?

388:380
08/10/31 13:12:23
>>385
こっちは教えてくれって頭下げてんですよ。>>381の一覧見てどうしろってんですか。
もったい付けてないでちゃちゃっとスプリクト教えてくれさえすれば良いだけなのに、
どうしてプログラムの人ってまともにコミュニケーション取れないのばかりなんだろう。

389:デフォルトの名無しさん
08/10/31 13:17:54
>>387
cplってhtaなん?

390:デフォルトの名無しさん
08/10/31 13:55:55
>>388
お前馬鹿?
ソース書いてあるじゃん。

> >>381の一覧

一覧って書いてるところからして、もしかして手打ちでURL入れて最後の#以降を入れなかった
せいでページの目次部分を見てるとか?
もしそうなら超バカかつ超失礼な奴だな。381にちゃんと謝っとけ!

391:380
08/10/31 14:42:27
はいはいw結局こんな簡単なスプリクトも組めないんですねお前らw言い訳乙

392:デフォルトの名無しさん
08/10/31 16:25:16
>>391
>>381の意味するところが分からないようなら自力では無理。
素直にコンパネ開いて手作業で写しなさい。あんたの場合それが一番早いやり方。

393:380
08/10/31 17:32:26
もしも~し?
自力で何とかなるなら最初からこんなキモスレで質問なんかしませんよ~
日本語通じてますかぁ~
私は、どうせ暇なあんた達にたまには人の役に立てるチャンスを与えてやっただけ

394:デフォルトの名無しさん
08/10/31 18:24:46
悪いが人間の定義から手取り足取り教えてやるほど親切じゃないw

395:デフォルトの名無しさん
08/10/31 18:28:56
"ヒント貰っても"自力で出来ないならってことなんだが
日本語通じてないのはどっちかな( ̄ー ̄)ニヤリ

それにオマエは与える側ではなく物乞う側だ
答えそのものを与えるも、ヒントだけ与えるも、こちらの自由
俺等の掌の上で哀れに乞い踊り、弄られ怒り狂う様を
ニヤニヤ眺められるだけのピエロでしかない

もちろんこれを否定するのは勝手だが
オマエは目的のことを教えて貰えず困っており
こちらはなんら困ってないという事実が全てを物語ってしまっている

396:デフォルトの名無しさん
08/10/31 18:39:18
res://appwiz.cpl/default.hta

397:デフォルトの名無しさん
08/10/31 18:53:55
>>384
dir c:\windows\fonts

398:デフォルトの名無しさん
08/10/31 19:01:11
ヒント
createobject("shell.application").namespace("shell:fonts")


399:デフォルトの名無しさん
08/10/31 20:03:18
スプリクト(笑)

400:デフォルトの名無しさん
08/10/31 20:09:53
まぁ正直わからんでもないな
聞いてる方の態度もアレだがそれを抜きにしても
ちょっとなんだかなぁってのが多いのはなんなんだろうな

401:デフォルトの名無しさん
08/10/31 20:14:06
即答されてるんだから、後はどうでもいいだろ。

402:デフォルトの名無しさん
08/10/31 21:44:38
新しいスプリ ク ト言語が開発された噂のスレはこちらですか?

403:380
08/10/31 22:07:04
なに必死になっちゃってんの?顔真っ赤ですよぅwキモオタどもダサ過ぎw
あ~はいはい困ってまちゅよぅ大変だぁこれで満足ですかwww


404:デフォルトの名無しさん
08/10/31 22:23:14
満足だから、もうどっかに逝け。

405:デフォルトの名無しさん
08/10/31 22:23:59
スクリプトだろw
大人なら、もうちょっとストリクトに書けよな
と思ったら、なんだ幼児でちたか

406:デフォルトの名無しさん
08/10/31 22:30:24
>>380
>なに必死になっちゃってんの?顔真っ赤ですよぅw

光沢モニタってのはなかなか便利なものだな。

407:デフォルトの名無しさん
08/10/31 22:47:42
はいはいでもして事故怪傑してくださいな

408:デフォルトの名無しさん
08/11/01 00:08:19
はいはいスプリクトスプリクト

409:デフォルトの名無しさん
08/11/01 10:23:04
>>406
だな

光沢液晶眺めながらヒゲ剃りも出来そうだ

410:デフォルトの名無しさん
08/11/14 23:21:13
予告 GetAsyncKeyState

411:デフォルトの名無しさん
08/11/15 07:43:01
OS:Win XP Pro SP3
WSH:v5.7

var s1 = "C:\\bin";
var s2 = "C:\\bin\\hoge";
if (s2.search(new RegExp(s1)) != -1)
WScript.echo("一致");
else
WScript.echo("不一致");

s1 = s1.replace("\\","");s2 = s2.replace("\\","")にしてやれば一致するのですが
上記のコードはなぜ不一致になるのでしょうか?
またvar s1 = "C:\\\\bin";var s2 = "C:\\\\bin\\\\hoge";にもしてみましたが結果は不一致のまま変わりませんでした


412:デフォルトの名無しさん
08/11/15 12:47:59
>>411
var s1 = "C:\\\\bin"; 
var s2 = "C:\\bin\\hoge"; 

s1に正規表現のためのエスケープが必要。

413:デフォルトの名無しさん
08/11/15 14:38:09
えんえんとえんをつづけるのかw

414:デフォルトの名無しさん
08/11/15 17:59:30
各国の通貨暴落なのに円だけが上がってるからな

415:デフォルトの名無しさん
08/11/15 21:10:43
>>412
なるほど検索文字列だけエスケープしなきゃならなかったんですね
やったと思ったらs2も\を足してから一致しなかったんですね
ありがとうございました

416:デフォルトの名無しさん
08/11/16 03:12:34
各Windowsコンポーネントのインストール状態の一覧を取得する方法ってありますか?

417:デフォルトの名無しさん
08/11/16 04:09:12
はい、ありますよ

418:デフォルトの名無しさん
08/11/16 10:22:21
>>416
俺が前したのと同じ質問かい!…ログ見てください、おながいします。

419:デフォルトの名無しさん
08/11/16 20:18:07
類似品でこんなやつならマイクロソフトのサイトにあった
そのものズバリも探せばあると思うよ
これ以上は興味ないから知らん(キッパリ)

strHost = "."
Const HKLM = &H80000002
Set objReg = GetObject("winmgmts://" & strHost & _
"/root/default:StdRegProv")
Const strBaseKey = _
"Software\Microsoft\Windows\CurrentVersion\"
objReg.EnumKey HKLM, strBaseKey, arrSubKeys
strLine=Array()
For Each strSubKey In arrSubKeys
intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _
"DisplayName", strValue)
If intRet <> 0 Then
intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _
"QuietDisplayName", strValue)
End If
If (strValue <> "") and (intRet = 0) Then
Push strLine,strValue
End If
Next
Wscript.Echo Join(strLine,vbLf)
'URLリンク(scripting.cocolog-nifty.com)
Sub Push(Items,Item)
ReDim Preserve Items(UBound(Items)+1)
Items(UBound(Items))=Item
End Sub

420:デフォルトの名無しさん
08/11/16 20:23:37
コピペ間違ったw正しいのはこれ
上のは動かないよ
'URLリンク(www.microsoft.com)
strHost = "."
Const HKLM = &H80000002
Set objReg = GetObject("winmgmts://" & strHost & _
"/root/default:StdRegProv")
Const strBaseKey = _
"Software\Microsoft\Windows\CurrentVersion\Uninstall\"
objReg.EnumKey HKLM, strBaseKey, arrSubKeys
strLine=Array()
For Each strSubKey In arrSubKeys
intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _
"DisplayName", strValue)
If intRet <> 0 Then
intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _
"QuietDisplayName", strValue)
End If
If (strValue <> "") and (intRet = 0) Then
Push strLine,strValue
End If
Next
Wscript.Echo Join(strLine,vbLf)
Sub Push(Items,Item)
ReDim Preserve Items(UBound(Items)+1)
Items(UBound(Items))=Item
End Sub

421:デフォルトの名無しさん
08/11/16 21:14:46
それは「アプリケーションの一覧」でしょうが。
>>380-381のと同じじゃない?つうか私が貼った奴だけど。

「Windowsコンポーネントの一覧」はこっち>>356な。つうか私が貼った奴だけど。
インストール状態だけ知りたいなら↓

>・Windowsコンポーネントのインストール状態については以下のレジストリに格納されてる。
>「HEKY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OC Manager\Subcomponents」

「アプリケーション」と「Windowsコンポーネント」ってそんなに間違いやすい?
まあ>>416からして間違えてる可能性もあるけどさ。

422:デフォルトの名無しさん
08/11/16 21:38:36
>>421
おいおい日本語読めねえのはお前の方じゃないのか
これはそのものじゃない類似品にしか過ぎない
そのものは自分で探してくれと明確に断わってるぞ

家庭で嫌なことがあったら2chで赤の他人に突っかかるのは悪い習慣だ

423:デフォルトの名無しさん
08/11/16 21:48:37
>>420を類似品というのは酷すぎるだろ常考…あえて言うならミスディレクション。

424:デフォルトの名無しさん
08/11/16 21:57:33
いやいやお前がよく読まずに突っかかってきたのは事実だ
まずそれを謝罪しろアホ

これだけ明確に書いてるのに
これが質問のものを貼ったと誤解したのは地球上でアホ=>>421=>>423ひとり
「類似品でこんなやつならマイクロソフトのサイトにあった
そのものズバリも探せばあると思うよ
これ以上は興味ないから知らん(キッパリ)」

425:デフォルトの名無しさん
08/11/16 22:21:31
そもそも大して役にたたない類似品貼ったぐらいでガタガタ騒ぐなよ。
バカじゃねーのか?

426:デフォルトの名無しさん
08/11/16 22:29:56
こいつは>>421=>>423
以前に登場したとき>>338>>356からキモイやつだったんだな
文章のキモさから警戒されて前も誰もレスつけなかったww

427:デフォルトの名無しさん
08/11/16 22:32:56
>>425
スレ検索したらどないでっかあんさん
そのものずばりを貼った人は過去に1人もいませんよ

バカじゃねーのか?

428:デフォルトの名無しさん
08/11/16 22:34:01
>>421はこのスレにミスディレクションということで

429:デフォルトの名無しさん
08/11/16 22:37:59
>>425
たいそうに演説するんだったらお前が貼れww

430:デフォルトの名無しさん
08/11/16 22:40:13
ミスディレクションwwwwwwwwwアホです

431:デフォルトの名無しさん
08/11/16 22:42:56

       ☆ チン       マチクタビレタ~
                     マチクタビレタ~
 ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ヽ ___\(\・∀・)< ミスディレクションさんの反撃まだ?
      \_/⊂ ⊂_)_ \____________
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
   |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:|  |
   |Winコンポーネント .|/
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

432:デフォルトの名無しさん
08/11/16 22:47:46
なんすかこの流れw

433:デフォルトの名無しさん
08/11/16 23:12:26
俺が見ても>>419-420が役立たずのアホ

434:デフォルトの名無しさん
08/11/17 00:32:24
慈円

435:デフォルトの名無しさん
08/11/17 00:43:23
       ☆ チン       マチクタビレタ~
                     マチクタビレタ~
 ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ヽ ___\(\・∀・)< ミスディレクションさんの登場まだ?
      \_/⊂ ⊂_)_ \____________
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
   |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:|  |
   |Winコンポーネント .|/
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

436:デフォルトの名無しさん
08/11/17 00:45:28
>>427
 大 し て 役 に た た な い 類似品
 ~~~~~~~~~~~~~~~~~

理解できたか?

437:デフォルトの名無しさん
08/11/17 00:45:44
珍しく伸びてると思ったら・・・

438:デフォルトの名無しさん
08/11/17 05:44:19
フルパスからフォルダ作成(存在しない親フォルダも作成)をできるだけにスマートにvbsで書くとどうなりますか?

439:デフォルトの名無しさん
08/11/17 07:01:33
こいつはスレ出入り禁止
>>421=>>423=>>338=>356

こいつの文章は特徴があるからすぐわかる

440:デフォルトの名無しさん
08/11/17 07:09:42
>>438
フォルダが作成される。

441:デフォルトの名無しさん
08/11/17 09:00:37
書くだけじゃ作成されねーし


パス区切り文字でsplitして親から順に存在チェック
有ったら次へ、無かったら作る

442:デフォルトの名無しさん
08/11/17 12:04:13
CreateObject("WScript.Shell").Run "CMD /CMKDIR \a\b\c\d"

443:デフォルトの名無しさん
08/11/17 18:59:29
やっぱ再帰だろ

444:デフォルトの名無しさん
08/11/17 20:33:00
sub sub_CreateFolder(strFolderPath) 'フォルダの作成
 strParentFolderPath = objFileSystem.GetParentFolderName(strFolderPath)
 if objFileSystem.FolderExists(strParentFolderPath) then
 else
  call sub_CreateFolder(strParentFolderPath) '親フォルダが無ければ再帰的に呼び出し
 end if
 call objFileSystem.CreateFolder(strFolderPath)
end sub

445:デフォルトの名無しさん
08/11/17 20:50:02
>>442
cmd使っちゃう方法もありますねw

>>444
なるほど。シンプルですね。
大変参考になりました。
みなさんありがとうございます。


446:デフォルトの名無しさん
08/11/18 00:13:43
call sub_CreateFolder("x:\folder")
無限ループ

447:デフォルトの名無しさん
08/11/18 00:51:22
>>444
then 側の実行文が空のコードってすごくバカっぽく見えるのは俺だけか?

448:デフォルトの名無しさん
08/11/18 00:59:16
どっちでもいいじゃん
いちいちめんどくせぇな

449:デフォルトの名無しさん
08/11/18 01:16:58
>>446
・ドライブレターが存在するか
・フォルダパスとして成立するテキストが入っているか
この2つは本来はこのサブルーチンに入る前にチェックするべきだあね。

>>447
then側はtrue、else側はfalseに統一しておくと、
可読性が高くなって個人的にはいいと思ってる。
"not ~" とか "~ = false" は後々で見直すときに、
ぱっと見てどっちかわかりにくいんだよね。

450:デフォルトの名無しさん
08/11/18 04:19:42
>>446
あーそうかそうか。
ドライブの直下にフォルダ作らせようとすると無限ループにはいるね。
今までそういう使い方してなかったから気づかなかった。
objFileSystem.DriveExistsでif文一個追加すればいいやって思ったけど
このメソッド、"x:\"だと必ずFalseだね。"x:"ならTrueがかえってくるけど。 

451:デフォルトの名無しさん
08/11/18 04:31:03
ちゃんと作るとこうかな?

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
strBuf = inputbox(" ")
if objFileSystem.DriveExists(objFileSystem.GetDriveName(strBuf)) then
 call sub_CreateFolder(strBuf, objFileSystem.GetDriveName(strBuf) & "\")
else
 WScript.Quit
end if

sub sub_CreateFolder(strFolderPath, strDrivePath) 'フォルダの作成
 strParentFolderPath = objFileSystem.GetParentFolderName(strFolderPath)
 if objFileSystem.FolderExists(strParentFolderPath) then
 elseif strParentFolderPath = strDrivePath then
 else
  call sub_CreateFolder(strParentFolderPath, strDrivePath)
 end if
 call objFileSystem.CreateFolder(strFolderPath)
end sub

452:デフォルトの名無しさん
08/11/18 05:01:41
call objFileSystem.CreateFolder(strFolderPath)をする前に
objFileSystem.FolderExists(strFolderPath)しないと
ファイルが既に存在してるかどうか確認するのがめんどくさいからとりあえず実行しちゃえ
ってなった時に既に存在してたらエラーになる


453:デフォルトの名無しさん
08/11/18 05:03:23
ファイルじゃなくてフォルダだった(´・ω・`)

454:デフォルトの名無しさん
08/11/18 08:36:27
つーかさ、初心者って「スマートに」とか「シンプルに」とか好きだよな
そんで例外処理すら省いた短いだけの不適合コードに満足する
良いコードとは、短いコードではなく正しく動作するコードだってことを解ってない

455:デフォルトの名無しさん
08/11/18 13:14:52
作ろうとするフォルダ名と同じファイルがあっても困るからそのときは中断処理しないといけないなぁ

456:デフォルトの名無しさん
08/11/18 13:58:50
>>454
所詮スクリプトなんだからあんまり例外処理を作り込む必要はないんちゃう?と最近は思う。
自分の環境で動けばそれでいいし、動かなければ適宜手直しするし・・・。

457:デフォルトの名無しさん
08/11/18 17:32:08
>>450
>このメソッド、"x:\"だと必ずFalseだね。
このメソッド、"c:\"だとFalseかね?

458:デフォルトの名無しさん
08/11/18 19:54:41
>>457
"c"とか"c:"ならTrueなのに、"c:\"はFalse。
で、ofs.GetParentFolderName("c:\hogehoge\")の戻り値は"c:\"
設計思想としてはわからんでもないけどなぁ。

459:デフォルトの名無しさん
08/11/18 20:40:06
>>447
バカっぽくは見えないけど、個人的にはあまり好きな書き方じゃないな。
ちなみに↓だと「「許容できない」が一番多いけど、「許容できる」もそれなりに多い。

空のIF文を書きますか? - Insider.NET
URLリンク(www.atmarkit.co.jp)

460:デフォルトの名無しさん
08/11/18 20:42:28
"c:\"はTrueだけど?


461:デフォルトの名無しさん
08/11/18 21:43:55
>>454
そんな初心者見たことねぇ。

462:デフォルトの名無しさん
08/11/18 22:48:51
>>460
本当だ。どうも寝ぼけてなんか間違えたらしい。>>458は忘れてくれ。

>>459
そこでも出てるけど、後々のメンテとか考えると統一したいんだよね。
if not ~ thenで作ってて、後からTrueの場合の条件分岐追加したくなるときとか。
特に理由がない限りは愚直に馬鹿でも読めるように書けと教育されたので。

463:462
08/11/18 23:00:13
あ、でも確かにCode Completeでは「稚拙に見えるから止めろ」って書いてある。
だから本来はNot使うのがいいのかもね。

464:デフォルトの名無しさん
08/11/19 01:26:22
jsのif (!...) { ... }なら認識しやすいんだけど
vbsのif not ... thenは色分けできるエディタ使ってても
なんか視界のなかで他の単語にうもれてときたま見逃してしまうから
>>449みたいにif ... thenでやっちゃうことが多いな


465:デフォルトの名無しさん
08/11/19 06:34:51
JScriptでADODB.Streamを使用してみてるんですが
Readで読んだバイナリ値をStringオブジェクトに格納できないでしょうか?

var oAD = new ActiveXObject("ADODB.Stream");
oAD.Type = 1;
oAD.Open();
oAD.LoadFromFile("C:\\hoge.bin");
var Str = oAD.Read(1);

WScript.echo(Str);//エラーは出ないが文字列に変換されて出力される
s1 = String(Str);//文字列ではありません
WScript.echo(Str.constractor);//null、またはオブジェクトではありません

466:デフォルトの名無しさん
08/11/19 10:30:27
>>248をみてもしかしたらと思って.NETのクラスつかったらできたよ
var asciienc = new ActiveXObject("System.Text.ASCIIEncoding");
var s1 = asciienc.GetString(Str);
WScript.Echo(typeof(s1));

467:デフォルトの名無しさん
08/11/19 10:33:13
あとレジストリみたらSystem.Text.ASCIIEncodingのほかに
System.Text.UnicodeEncoding
System.Text.UTF7Encoding
System.Text.UTF8Encoding
があったからここらへんも使えると思う

468:デフォルトの名無しさん
08/11/19 11:45:55
constractor???


469:デフォルトの名無しさん
08/11/19 11:52:58
var Str = oAD.ReadText(1);

470:465
08/11/19 12:03:56
constructorですね。間違えました

>>466-467
出来ました!ありがとうございます

が、0x80以降を格納すると変なことになりますね…

WScript.echo(s1.charCodeAt(),toString(16));//ASCIIだと3f、それ以外はfffdがずっと続く

>>469
テキストモードで開くのなら、iso-8859-1で開いて0x80~0x9fは置換するって方法があるみたいですね


とりあえず置換する方向で行きたいと思います。ありがとうございました



471:465
08/11/19 12:04:51
誤:WScript.echo(s1.charCodeAt(),toString(16));//ASCIIだと3f、それ以外はfffdがずっと続く
正:WScript.echo(s1.charCodeAt().toString(16));//ASCIIだと3f、それ以外はfffdがずっと続く

472:デフォルトの名無しさん
08/11/19 12:08:52
なにがしたいんだか

473:デフォルトの名無しさん
08/11/19 12:17:37
自分のマシンのローカルエリア接続に設定されている
デフォルトゲートウエイIPアドレスをWSHで取得する方法で頭打ってます。
どなたか知りませんか?

474:デフォルトの名無しさん
08/11/19 12:21:20
JScriptからバイナリの暗号化とか復号とかいろいろできたら便利だなぁ、とか思ってました

475:デフォルトの名無しさん
08/11/19 12:24:28
JScriptじゃ無理
VBScriptつかえよ

476:デフォルトの名無しさん
08/11/19 12:34:53
VBSで取得する方法でもいいです。
Google先生でもなかなか見つからない紋で。

477:デフォルトの名無しさん
08/11/19 12:38:55
Str = oAD.Read(-1)
For k=1 To LenB(Str)
WScript.Echo AscB(MidB(Str,k,1))
Next



478:デフォルトの名無しさん
08/11/19 12:44:52
早速ありがとう!
oADこのオブジェクトはどこから取得するのですか?

479:デフォルトの名無しさん
08/11/19 22:09:25
>>473
ちゃんとググッたのか?

default gateway wsh でググッたら、"Need to get default gateway via VBScript" って
言うほぼどんぴしゃのページがヒットするんだが...。

URLリンク(www.experts-exchange.com)

480:デフォルトの名無しさん
08/11/20 01:07:04
>>479
おれのプニル1.66が固まった(´;ω;`)ウッ…

481:デフォルトの名無しさん
08/11/20 02:34:44
>>454
> そんで例外処理すら省いた短いだけの不適合コードに満足する
僕は初心者ですが、どれぐらいがちがちに例外処理すべきなのかよくわからないんです。
普通は成功しそうな処理でもいちいちチェック、例えばこんな感じで↓
Set obj = Nothing
On Error Resume Next
Set obj = GetObject("winmgmts:\\.\root\cimv2")
'他にはSet obj = CreateObject("WScript.Shell")とか…
On Error Goto 0
If Not obj Is Nothing Then
'続き!
Else
WScript.Quit(1)
End If
してたらしてたらうっとうしいんじゃないかとか思ったり。

482:デフォルトの名無しさん
08/11/20 14:14:40
URLリンク(okwave.jp)
>CScriptのコンソール画面のクリア方法
できないって?
clsすりゃいいだけなのに

483:デフォルトの名無しさん
08/11/20 16:15:30
>>481
意味ないからやめろよ
必要なときだけやれ

484:デフォルトの名無しさん
08/11/20 16:16:36
理由
テストできないだろ?
テストできないコードを書くな

485:デフォルトの名無しさん
08/11/20 22:27:17
意味があるかどうかは状況次第。
>>481 の例だと、俺もわざわざエラーチェックはしないけど、ファイルを
開いたりする時はエラーチェックする。

テストしたいなら GetObject(), CreateObject() の文字列変えてテスト
するとかすればいいだけのこと。

あと、どうせエラーチェックするなら...

If obj Is Nothing Then
 WScript.Echo("GetObject(""winmgmts:\\.\root\cimv2"") Failed")
 WScript.Quit(1)
End If
'続き!

のようにした方がインデントも深くならないし、いきなり WScript.Quit()
されてもわけわからんので、なんかメッセージを出した方がいいと思う。

486:481
08/11/21 00:45:17
>>483, 485
アドバイスありがとうございます。

必要かどうか、状況を判断するのが難しいです。
修行がいるのだろうなぁ。

VBScriptって例外が発生して落ちたときに
終了コードをセットしないから外部からわからないんですよね。
今作ってるのは他のスクリプト内から実行される可能性があるので、
うっとうしいと思いながらも何が何でも例外は自分で拾って
WScript.Quit(1)するという方針で書いてます。

487:デフォルトの名無しさん
08/11/21 01:08:05
>479
ありがとうございます!

英語が読めないので日本語ページオンリーです。
恥ずかしっ!!


488:デフォルトの名無しさん
08/11/21 11:45:34
>>481
その方針は間違い

>VBScriptって例外が発生して落ちたときに
>終了コードをセットしないから外部からわからないんですよね。
→ QuitWithErrNumber.VBS

>今作ってるのは他のスクリプト内から実行される可能性があるので、
>うっとうしいと思いながらも何が何でも例外は自分で拾って
>WScript.Quit(1)するという方針で書いてます。
だけなら、
sub main()
end sub
on error ...
call main
if ... quit(1)
するだけ


489:デフォルトの名無しさん
08/11/23 00:27:15
>>481
そのやり方だと、どうしても漏れるよ
漏れたときに困るよ
正常時だけQuit(1)にすれば確実だよ

490:デフォルトの名無しさん
08/11/25 14:06:49
.urlファイルを書き換えても、プロパティで見ると書き換わってない
F5しても同じ
どうすれば反映される?

491:481
08/11/27 00:12:55
レス遅くてすいません。

>>488
> → QuitWithErrNumber.VBS
なるほど!スクリプト終了時のオブジェクトの解放時に
明示的にセットするという方法があるのですね。
自分では全く思いつきませんでした。ありがとうございます。

>>489
確かに仰る通りです。逆転の発想をするわけですね。
正常終了は%ERRORLEVEL%==0という固定観念がありました。
大変参考になりました。ありがとうございます。

結局、Main()全体にOn Error Resume Nextすることにしました。



492:デフォルトの名無しさん
08/11/27 22:12:29
>>491
> 結局、Main()全体にOn Error Resume Nextすることにしました。

なんでそんな結論に...

493:デフォルトの名無しさん
08/11/28 23:54:38
坊やだからさ

494:481
08/11/30 01:33:16
>>492
>>493
もしかして一番ダメな方法なのかな…
忠告ありがとうございます。もうちょっと考えてみます。

495:デフォルトの名無しさん
08/12/03 14:13:54
URLリンク(oshiete.nikkeibp.co.jp)
ぷっ

496:デフォルトの名無しさん
08/12/04 10:53:01
/MIN

497:デフォルトの名無しさん
08/12/04 10:54:55
start /MIN hoge.bat

498:デフォルトの名無しさん
08/12/04 17:19:09
JS教えたりして意地悪じゃないの
\\で嵌まるの目に見えてる

499:デフォルトの名無しさん
08/12/31 12:44:37


500:デフォルトの名無しさん
09/01/03 07:09:06
500

501:デフォルトの名無しさん
09/01/05 06:09:19
wshから(出来ればVBSで)エクスプローラを再起動させたいんですが
起動はいいのですが、プログラムを終了させる事って出来ないんでしょうか?

502:デフォルトの名無しさん
09/01/05 13:46:54
>>501
WMIつかえば出来るよ
使い方はググればサンプル含めて転がってる
又はコマンドライン型のプロセス終了ツールを使う手もある

503:デフォルトの名無しさん
09/01/06 23:29:03
>>501
XP 以降なら taskkill ってコマンドがある
プロセスIDや実行ファイル名でプロセスを殺せる

ex) taskkill /IM notepad.exe


504:デフォルトの名無しさん
09/01/06 23:46:47
>>503
home editionにはない

505:デフォルトの名無しさん
09/01/06 23:54:44
好きなの使えよ。
URLリンク(www.vector.co.jp)


506:デフォルトの名無しさん
09/01/07 00:07:11
PsKill - ローカルまたはリモートのプロセスを停止します。
URLリンク(technet.microsoft.com)(en-us).aspx

507:デフォルトの名無しさん
09/01/07 00:46:38
taskkill、PsKillってのが>>502の言ってるコマンドライン型のプロセス終了ツールでしょ。

508:デフォルトの名無しさん
09/01/07 04:04:31
tskillつかえよ

509:デフォルトの名無しさん
09/01/11 14:50:20


510:デフォルトの名無しさん
09/01/12 22:44:18
vbseditみたいに補完&デバッグできるフリーな奴無い?

511:デフォルトの名無しさん
09/01/15 07:17:05


512:デフォルトの名無しさん
09/01/16 07:47:10


513:デフォルトの名無しさん
09/01/17 23:37:18


514:デフォルトの名無しさん
09/01/20 21:26:39
URLリンク(www.atmarkit.co.jp)
上記のURLで紹介されている「SystemScripter」を使用されている方はいらっしゃいますか?

試しにインストールしてみたのですが、IMEで日本語を入力すると入力が重複してしまう
のですが...回避方法はないでしょうか?

515:デフォルトの名無しさん
09/01/21 12:55:06
Vistaやっと買ったら、自作のスクリプトが落ちます・・・

*******************************
'ファイル操作の宣言
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

'ファイルのオープン
Set objFile1 = objFSO.OpenTextFile(name1)

******************************
上の命令付近で、どうしても落ちます。
Vistaに何か入れれば、動くとか情報有りますか?



516:デフォルトの名無しさん
09/01/21 19:10:29
何が落ちるんだ?

517:デフォルトの名無しさん
09/01/21 19:15:02
> Vistaやっと買ったら、自作のスクリプトが落ちます・・・


518:デフォルトの名無しさん
09/01/21 19:27:40
反ウイルスソフトじゃないの?

519:デフォルトの名無しさん
09/01/21 19:28:43
どこに落ちるんだ?

520:デフォルトの名無しさん
09/01/21 22:20:36
>515
Vistaは知らんが、CreateObject("Scripting.FileSystemObject") に
"WScript"を付ける奴は初めて見た。   WinXP&WSH5.6ユーザーより

521:デフォルトの名無しさん
09/01/21 23:54:00
そうか?
視野が狭いだけだろ?

522:デフォルトの名無しさん
09/01/22 09:11:37
付近とかまたアバウトな・・・

523:デフォルトの名無しさん
09/01/22 10:10:43
>>520
WSHのWScript.CreateObject
> object.CreateObject(strProgID[,strPrefix])
と、VBSのCreateObject
> CreateObject(servername.typename [, location])
は一応別物だよ

つまり>>515は「CreateObjectにWScriptを付けている」のではなく
「VBSではなくWSHのCreateObjectを使っている」という表現が正しい

まあ基本的には同じ様なものなので、必要性を感じなければ使い分けなくても良いだろう
必要性を感じたら、自分で細かい仕様を調べて使い分ければ良い

524:デフォルトの名無しさん
09/01/22 22:44:44
大量の文書の置換をしたいのですが、どのような形で組めばいいのでしょうか?
置換対象文書はすべて一つのフォルダのサブフォルダに入っているのでサブフォルダ内から抽出するなり再帰的に実行するなりすればよいでしょうが…

置換自体のスクリプトは以下のITPROの記事を参考に作りました。
URLリンク(www.atmarkit.co.jp)

後はこのスクリプトを起動するスクリプトを作成するか、読み込むファイルを抽出する部分を工夫すればいいのですが、
何か手はないでしょうか?

525:デフォルトの名無しさん
09/01/22 22:48:01
>>524
for

526:デフォルトの名無しさん
09/01/22 23:04:00
>>524
自分がフォルダ階層を辿るときはディレクトリの再帰処理を書くのが
面倒なんでこんな感じのをよく使う
以下の foo() でファイル毎の処理を書く
実際には dir の '*' はコマンドラインからパラメタで与えたりもう少しは
工夫するけど

var objShell = WScript.CreateObject ("WScript.Shell");
var objFS = WScript.CreateObject ("Scripting.FileSystemObject");
function foo(filename)
{
 WScript.Echo(filename);
}
var execDir = objShell.Exec("cmd /c dir /b /s /a-d *");
while (! execDir.StdOut.AtEndOfStream) {
 var file = execDir.StdOut.ReadLine();
 if (! objFS.FileExists(file)) {
  continue;
  }
  foo(file.replace(objShell.CurrentDirectory, "").replace(/^\\/, ""));
}


527:デフォルトの名無しさん
09/01/23 23:23:05
>>526
遅くなりましたが、参考にさせていただきました。
ありがとうございました。

528:デフォルトの名無しさん
09/02/02 11:56:09
ho

529:デフォルトの名無しさん
09/02/05 00:15:34
レジストリキーが存在するかを確認したい

URLリンク(www.atmarkit.co.jp)
のサンプルCheckReg.vbsを参考にした
キーの既定に空白でもなんでも値が入っていれば正常に判断できるが、
既定が(値の設定なし)だとキーが存在していても無いと判断されてしまう。

URLリンク(okwave.jp)
で同様の状態についてやりとりがあり、解決済みだと言うサンプルが置いてある(IsNullを使ったもの)
…けれど、やはり同様に(値の設定なし)だとキーが存在していても判断に失敗する

既定が値の設定なしで、他にエントリもないレジストリキーの存在を
確実に確認する手段はございませんでしょうか

530:デフォルトの名無しさん
09/02/05 00:49:44
>>529
このあたりはどう?
URLリンク(www.microsoft.com)


531:デフォルトの名無しさん
09/02/05 01:00:13
スクリプト センター > スクリプト一覧 > オペレーティング システム
レジストリ
URLリンク(www.microsoft.com)

532:デフォルトの名無しさん
09/02/05 02:21:17
>>530
そこのスクリプトでも結果が同じで
  エントリ名が入る変数strValueNameを空白にすると
 strKeyPathで設定した場所(キー)の既定エントリを覗くようですが
既定エントリの値を (値の設定なし)→空白にするとexistになります
(値の設定なし)に戻すとやはりnot existになります

>>531
学習します

533:デフォルトの名無しさん
09/02/05 03:15:30
もっと他のやり方がありそうなんだけど一応

const KEY_QUERY_VALUE = &H0001
const HKEY_CURRENT_USER = &H80000001
const HKEY_LOCAL_MACHINE = &H80000002
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "SOFTWARE\developer\app\key"
Result = objReg.CheckAccess(HKEY_CURRENT_USER, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight)
If Result = 0 Then
Wscript.Echo "key found."
ElseIf Result = 2 Then ' WBEM_E_NOT_FOUND
Wscript.Echo "key not found."
Else
Wscript.Echo "other error."
End If


534:デフォルトの名無しさん
09/02/05 03:43:06
>>533
これは(値の設定なし)でもキーの存在を的確に判断してくれます
大変有難いことです。感謝

535:デフォルトの名無しさん
09/02/06 16:50:11
WSHでOutlookの予定や仕事の本文のフォントを一括で変更できる方法ってありますか?

536:デフォルトの名無しさん
09/02/06 19:28:41
もしOutlookVBAでできるなら、WSHでもできるよ

537:デフォルトの名無しさん
09/02/06 21:50:15
WSH(使用言語はjscript)でWin32apiのLoadLibrary()ってどうやって使うんですか!?


538:デフォルトの名無しさん
09/02/06 21:55:37
無理

539:デフォルトの名無しさん
09/02/06 22:03:58
そういうCOM使えばええがな

540:デフォルトの名無しさん
09/02/06 23:01:41
糞スレ晒し上げ

541:デフォルトの名無しさん
09/02/07 01:55:39
なるほど
ありがとうございました

542:デフォルトの名無しさん
09/02/07 05:31:22
サービスのスタートアップの種類(自動・手動・無効など)を調べるスクリプトを書いており、
Vistaの自動と自動(遅延開始)を識別する方法を探しています。
WMIのWin32_ServiceクラスのStartModeプロパティには、両方ともAutoが設定されています。
MSDNでは他にそれらしいプロパティは見付かりませんでした。
レジストリ値を直接読んで識別するしかないのでしょうか?

543:デフォルトの名無しさん
09/02/07 05:42:58
ここはWSHスレです。

VB6でもRubyでもC#でもDelphiでもVBAでも使える
汎用コンポーネント(WMIなど)の話はお控え下さい。

544:デフォルトの名無しさん
09/02/07 05:55:18
あれま。そういう棲み分けでしたか。失礼しました。

545:デフォルトの名無しさん
09/02/07 07:05:52
自動(遅延開始)は依存関係で他のサービスが立ち上がってから立ち上がるもの
つまり依存するサービスを所有していればそれで判別可能

546:デフォルトの名無しさん
09/02/07 07:11:45
>>543 >>539
COMもVB6でもRubyでもC#でもDelphiでもVBAでも使えるから
ここで話題振るのは禁止なんですよね

547:デフォルトの名無しさん
09/02/07 14:17:16
複雑だと思うならつかわなきゃいいんじゃねーの?
なんでアホはあるもの全部使わなきゃ気がすまねーの?

548:デフォルトの名無しさん
09/02/07 15:36:14
がんばれよ

549:デフォルトの名無しさん
09/02/07 19:22:53
がんばりまっちゅ

550:デフォルトの名無しさん
09/02/07 19:31:19
WSHもCOMだろ?

551:デフォルトの名無しさん
09/02/07 19:43:36
いいえ、WSHはCOMじゃありませんよ
WMIはCOMですけど

552:デフォルトの名無しさん
09/02/07 19:54:14
>>545
どうしてそんなすぐ分かる嘘を付くのですか?

553:デフォルトの名無しさん
09/02/07 19:55:36
WSH.Echo TypeName(WSH)

554:デフォルトの名無しさん
09/02/07 20:07:58
>>553
いきなりどうしたの?

555:デフォルトの名無しさん
09/02/07 23:59:10
なるほどね

556:デフォルトの名無しさん
09/02/08 00:18:45
もしかしてObject=COMだと思ってるんじゃないの?

557:デフォルトの名無しさん
09/02/08 00:24:41
やめときゃいいのに

558:デフォルトの名無しさん
09/02/08 00:37:35
だよね
あんなの書かなきゃ恥かかなかったのに

559:デフォルトの名無しさん
09/02/08 00:57:24
ぷっ

560:デフォルトの名無しさん
09/02/08 02:59:09
MsgBox "Object"="COM"

561:デフォルトの名無しさん
09/02/08 03:13:19
たしかにちがうな

562:デフォルトの名無しさん
09/02/08 03:14:34
MsgBox "WMI"="COM"

563:デフォルトの名無しさん
09/02/08 10:06:41
WSHとPowerShellはどういう関係なのでしょうか?
PowerShellが使えたらWSHはもう要らないものでしょうか?

564:デフォルトの名無しさん
09/02/08 14:19:11
>>563
大雑把に言うと、WSHはいわゆる「スクリプト言語」からオートメーションコンポーネントをいじるためのホスト環境で
VBScript, JScript, PerlScriptなど各種インタープリタが存在する。
PowerShellはPowerShellスクリプトで.NETコンポーネントをいじるためのインタープリタそのもので、オートメーションコンポーネントをいじるための機能も備えている。

WSHとPowerShelllは主な使用用途が似ているから比較されるだけで、直接な関係はない。
WSHで使えるスクリプト言語になるためにはActiveScriptというルールにのっとったインタープリタを作らなきゃダメで、
PowerShellインタープリタがもしもActiveScriptとしても実装されたら、WSHでPowerShellが使えたりもするようになるし、
逆に.NETでActiveScript相当のルールができてVBScriptやJScriptのインタープリタができたら、.NET用のWSHみたいな物ができるかもしれない。

WSHの使用用途については、PowerShellが大部分を食っていくと思われ。
しかしPowerShellはWindows XP以降でしか使えないが、WSHは9x系でも使える。
VBScriptなどPowerShell以外のスクリプト言語が使いたい場合まだWSHでないと無理。
そのあたりWSHの用途をカバーするものが別途出てきたらいらなくなると思う。

565:デフォルトの名無しさん
09/02/08 14:38:23
スルーしような

566:デフォルトの名無しさん
09/02/08 14:38:28
JRubyとかIronRubyとかIronPythonとかあって訳若芽です><

567:デフォルトの名無しさん
09/02/08 14:50:36
ここはWSHスレです。

IEでもHTAでもSCでも使える
汎用スクリプト言語(VBScript,JScriptなど)の話はお控え下さい。


568:デフォルトの名無しさん
09/02/08 15:03:29
あれま。そういう棲み分けでしたか。失礼しました。

569:デフォルトの名無しさん
09/02/08 15:10:00
WSH.Echoも、VB6でもRubyでもC#でもDelphiでもVBAでも使えるんですがどうしましょ?

570:デフォルトの名無しさん
09/02/08 15:10:59
COMは専用スレあるからスレ違いでいいけど
アクティブスクリプトは専用スレあったっけ?

571:デフォルトの名無しさん
09/02/08 15:18:22
>>569
WSH.Echoも、IEでもHTAでもSCでも使えるけど、いいんじゃね

572:デフォルトの名無しさん
09/02/08 15:27:32
>>569
VBAかVB6でWSH.Echoを使うサンプルコード書いて

あ、もちろんWrapper的なのを噛ますのは無しね
dllやらwscやら噛ませるのは、そのホスト上でWSHオブジェクトが使えてるわけではなく
そのやdllやらwsc上でWSHオブジェクトが使えてるだけだから

573:デフォルトの名無しさん
09/02/08 15:34:44
WSCでWSHオブジェクトが使えてるのか?

574:デフォルトの名無しさん
09/02/08 15:55:24
。。。

575:デフォルトの名無しさん
09/02/08 16:18:48
ぷっ

576:デフォルトの名無しさん
09/02/08 16:19:24
ぽっ

577:デフォルトの名無しさん
09/02/08 16:21:25
WSHはCOMだからオブジェクト参照さえ渡せばWSCだろうとIEだろうと使えるよ

578:デフォルトの名無しさん
09/02/08 16:27:30
ぷっ

579:デフォルトの名無しさん
09/02/08 16:35:32
ActiveほにゃららってWindows版の各スクリプト言語処理系の頭に付くのは何故なんだろうって最初は不思議でした

580:デフォルトの名無しさん
09/02/08 17:02:07
>>572
>VBAかVB6で
スレ違いだろ?

581:デフォルトの名無しさん
09/02/08 17:05:35
ぷっ

582:デフォルトの名無しさん
09/02/08 17:11:19
>>577
いいえ、WSHはCOMじゃありませんよ
WMIはCOMですけど

583:デフォルトの名無しさん
09/02/08 17:30:05
結局具体的には書けないんだね

584:デフォルトの名無しさん
09/02/08 18:15:05
具体的に書いてやらないとわからないんだね

585:デフォルトの名無しさん
09/02/08 18:23:58
うん、わからないからちゃんと書いて

586:デフォルトの名無しさん
09/02/08 18:31:26
いやだよ

587:デフォルトの名無しさん
09/02/08 18:54:22
WSHは外部からCreateInstanceはできないだけで、COMじゃないわけはないだろ。

588:デフォルトの名無しさん
09/02/08 19:09:22
いいえ、WSHはCOMじゃありませんよ
WSHはEXEですけど


589:デフォルトの名無しさん
09/02/08 19:12:17
ヒントだよ
Set hoge=WSH
hoge.Echo TypeName(hoge)
これでわからないならあきらめるんだな

590:デフォルトの名無しさん
09/02/08 21:22:29
実はヒントにもなってない件と
実は本人も解ってない件w

591:デフォルトの名無しさん
09/02/08 21:28:49
htaでWScript.Sleep使いたいんだが・・・ いや、まじで。

592:デフォルトの名無しさん
09/02/08 21:53:34
つかってるけど?

593:デフォルトの名無しさん
09/02/08 22:04:56
>>590
もそっとCOMを勉強したほうがよくないか?

594:デフォルトの名無しさん
09/02/08 22:05:48
fso = win32com.client.Dispatch('Scripting.FileSystemObject')
folder = fso.GetFolder('C:\\')
for file in folder.Files:
print file.Name


595:デフォルトの名無しさん
09/02/08 22:12:18
>>592
どうやるの? さっさと吐け!

596:デフォルトの名無しさん
09/02/08 22:18:49
Set w = WScript.CreateObject("WScript.Shell")
w.Popup "Ready",3,"1,2,3"
w.LogEvent 1, "DaahhhHHH!"

597:デフォルトの名無しさん
09/02/08 22:21:13
>>596
それWScript.Sleep 3のつもり?
WScript.CreateObjectでエラーになるけど?

598:デフォルトの名無しさん
09/02/08 22:24:13
それに
WScript.ShellのPopupはGUIアプリで使うと待ちが解けないみたいよ?

599:デフォルトの名無しさん
09/02/08 22:32:57
>>591
>htaでWScript.Sleep使いたいんだが・・・ いや、まじで。
つかえるけど、画面が凍るのでやめとけ・・・ いや、まじで。

600:デフォルトの名無しさん
09/02/08 22:54:02
VBとかC#から
WScriptのインスタンスを生成するにはどうすればよいですか?


601:デフォルトの名無しさん
09/02/09 00:13:39
outprocessserverの場合と似たようなことをやればよい
ShellやProcess.Startで起こして、
そのスクリプトからWScriptオブジェクトを外部から見えるところに設定

602:デフォルトの名無しさん
09/02/09 01:40:52
Windows Script Host(WSH)の機能全体の話とWScriptオブジェクトと
Windows Script Host Object Modelの各オブジェクトと、
WScript/CScriptコマンドが錯綜してる気がする

まず、Windows Script Host Object Modelで説明されるオブジェクトは
あくまで WSHの構成要素であって、WSHそのものではない。

なので、外部からWSHの構成要素の一部のオブジェクトをインスタンス化
できる、という説明は正しいが、
WSH自体を操作できる、という説明は正しくない

次に、COMをIUnknown、IDispatchのインタフェースを持ち、GUIDで
識別されるもと定義するなら、Windows Script Host Object Model
に含まれるオブジェクトはすべてCOMであり、これにはWScriptも含まれる。

ただし、WScriptを除く各オブジェクトは単体で外部からインスタンス化
できるのに対して、WScriptオブジェクトは外部からインスタンス化することは
できないという違いがある。

で、結局WScriptオブジェクトはWSHの環境内でのみ使用できるオブジェクトなので、
外部からは使えません。

>>601は具体的なコードを示してほしい

603:デフォルトの名無しさん
09/02/09 02:27:18
.NET についてもひとことおねがいします

604:デフォルトの名無しさん
09/02/09 03:02:48
コード? 技術者だったらヒントから考えろ
WSHからVBAの関数を呼べるだろ?
VBAでsub hoge(wsh)作ってWSHから呼べ
そしたらVBAからWSH使い放題
IEも同じ 関数作って呼ぶか、プロパティにセットするか
HTAはWSHから呼べないから、間にIEをはさむなりしろ

605:デフォルトの名無しさん
09/02/09 03:59:15
姫様ズーム・イン

606:デフォルトの名無しさん
09/02/09 04:01:26
ヒントだと思い込んで出してる情報が実は間違いでしたとさ

607:デフォルトの名無しさん
09/02/09 04:55:18
おやすみ

608:デフォルトの名無しさん
09/02/09 07:53:52
あるあるw

609:デフォルトの名無しさん
09/02/09 08:34:58
ごめん、自分には素のWindows環境で
WSHからVBAを呼ぶという時点でかなりの難易度
IEからHTAを呼び出すのもできません
ぜひ、具体例をお願いします

610:デフォルトの名無しさん
09/02/09 08:58:20
やり方を知らない人に聞いても無駄です。
無意味なヒント出されたり、自分で調べろとか
言われたりして誤魔化されるだけです。

611:デフォルトの名無しさん
09/02/09 18:20:04
あれでわからないならあきらめろってw無理すんなw

612:デフォルトの名無しさん
09/02/09 18:55:43
予想通りの反応w

613:デフォルトの名無しさん
09/02/09 19:28:27
度し難いなぁ
って意味わかるかなぁ

614:デフォルトの名無しさん
09/02/09 19:46:05
解るよ
どういう雰囲気を作りたがってるかは

上から目線で、呆れてる様を表現し
やり方を知らないから具体的な情報を出せないのではなく
もう何も言う気になれないのだよという雰囲気を作りたいのですね

でも、実際に知らないのはもうバレバレで
今更雰囲気作りに拘っても無意味っす

615:デフォルトの名無しさん
09/02/09 19:52:31
ごめんね
WSHはCOMじゃないよ
これでいい?

616:デフォルトの名無しさん
09/02/09 20:01:09
今度は「仕方ないから大人な俺が折れてあげるよ」という雰囲気作りですか
しかも論点間違ってるし

折れなくていいからさ、件の具体例出して俺等を打ちのめしてよ
打ちのめす実力が本当に有るのなら

617:デフォルトの名無しさん
09/02/09 20:18:16
ないよ
これでいい?

618:デフォルトの名無しさん
09/02/09 20:23:24
まぁ「これでいい?」を付け加えることで
本当はあるけど無いことにしておくって雰囲気を作りたいんだろうけど
それが負け惜しみなのは誰の目から見ても明らかだし
負け惜しみを吐くくらいのことは許してあげますかな

ただ、これ以上負け惜しみ吐いて醜態は晒さないようにね

619:デフォルトの名無しさん
09/02/09 20:41:25
結局出来ないのかorz
wktkして待ってたのに。

620:デフォルトの名無しさん
09/02/09 21:08:53
なんでここIDないの

621:デフォルトの名無しさん
09/02/09 21:16:42
そういう設定の板だから。

運営に申請することで変更は可能なので
変更を希望するならまず自治スレで議論し可決を取ること。
スレリンク(tech板)
運営では可決された経緯まで吟味した上で変更が検討されるから
勝手に申請だけしてもダメ。

以後、IDに関する質問や議論は自治スレで。

622:デフォルトの名無しさん
09/02/09 23:33:58
>>619
スレリンク(tech板:619番)

623:デフォルトの名無しさん
09/02/09 23:46:52
どうしたの?

624:デフォルトの名無しさん
09/02/10 02:13:22
結局向こうでも出来なかったみたいだね。

625:デフォルトの名無しさん
09/02/10 03:01:25
失敬なやつだな

626:デフォルトの名無しさん
09/02/10 03:17:54
>>591
URLリンク(pc11.2ch.net)
教えてやろうと思ったがやめた

627:デフォルトの名無しさん
09/02/10 08:08:59
無理すんな

628:デフォルトの名無しさん
09/02/10 12:41:12
教えてくれたら神だ仏だと崇め奉った上に、とっておきのエロ画像をプレゼントしようと思っていたのになあ・・・・

629:デフォルトの名無しさん
09/02/10 16:04:32
ふーん、そういうことがうれしいひとがいるんだ

630:デフォルトの名無しさん
09/02/10 16:11:56
弄られてるだけって事に気付けないのか?

631:デフォルトの名無しさん
09/02/10 17:46:36
>>591
ほれ
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(detail.chiebukuro.yahoo.co.jp)
URLリンク(oshiete1.goo.ne.jp)


632:デフォルトの名無しさん
09/02/10 18:06:22
>>631
期待せずに一応見てみたが、予想通り的外れのことしか書いてなかった。
そんなんではzipはやれんぞ。

出来ない人は黙っててくれないかなぁ~


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch