07/11/29 02:22:16
>>317
runas /user:ドメイン名\ユーザー名 hogehoge.exe
322:デフォルトの名無しさん
07/11/29 23:37:30
>321
明日試してみます。
もちろん、321さんは実験済みなんですよね?
323:デフォルトの名無しさん
07/11/29 23:44:24
イラつくよお前
324:デフォルトの名無しさん
07/11/29 23:53:11
お前火病るの早すぎwwwwww
325:デフォルトの名無しさん
07/11/30 19:01:46
>あと、プログラムの終了コードが取れない。
取れるよ。
>Statusプロパティが0以外になるまで待つ、
してる?
326:デフォルトの名無しさん
07/11/30 20:40:19
>321
試してみました。
書いていただいた「コマンドライン」では動きませんでした。
でも他の方法で解決できました。
本当にありがとうございました。
327:デフォルトの名無しさん
07/12/01 02:35:35
>>326
もう二度と来んな!
328:デフォルトの名無しさん
07/12/01 02:37:04
>>326
その「他の方法」とやらを書く気は全く無い訳だな
329:デフォルトの名無しさん
07/12/01 05:44:51
書きに戻ってくる必要もないよ
興味ないから
330:デフォルトの名無しさん
07/12/01 12:31:11
>>325
ExitCodeプロパティの存在に気付かなかった。
最初読んでた本と適当にググったサイトでスルーされてたので・・・
とりあえずこのスレで得た成果をまとめてみた。
var shell = new ActiveXObject("WScript.Shell");
function system(cmd) {
var e = shell.Exec("cmd /c " + cmd + " 2>&1");
while (!e.StdOut.AtEndOfStream) {
WScript.Echo(e.StdOut.ReadLine());
}
while (e.Status == 0) {
WScript.Sleep(50);
}
return e.ExitCode;
}
331:デフォルトの名無しさん
07/12/01 15:20:48
>WScript.Echo(e.StdOut.ReadLine());
は
WScript.StdOut.Write(e.StdOut.Read(1));
のほうがいいよ
332:デフォルトの名無しさん
07/12/01 16:45:06
男は黙ってecho
333:デフォルトの名無しさん
07/12/01 17:09:39
>>331
たしかに、
checking...(長い処理) done<改行>
みたいな出力するプログラム起動したときカッコ悪かった。
1バイトずつってのが引っかかったけど、別に体感速度変わらんな。
334:デフォルトの名無しさん
07/12/02 01:13:43
男は黙ってcscript
335:デフォルトの名無しさん
07/12/02 21:19:06
Q >>294
A >>292
なぜかQAの順序が逆ですな。>>292はエスパーかな?
336:デフォルトの名無しさん
07/12/02 21:31:52
>>335
>>292を実行したら警告ダイアログが出た奴が質問してるだけ。
環境依存か知らんが。
337:デフォルトの名無しさん
07/12/02 22:31:07
VBScriptで引数省略は,,だけど、JScriptは?
JScriptで,,にすると怒られる
338:デフォルトの名無しさん
07/12/03 03:11:23
低脳言語と一緒にすんなよ。
339:デフォルトの名無しさん
07/12/03 09:12:27
あの突然すいませんが
WSH(VBS)のコンパイラってないですかね?
URLリンク(www.vector.co.jp)
これしか見当たりませんが、これにしてもなぜだか動作しないんです。
ほかに知っている方が見えましたらお願いいたします
340:デフォルトの名無しさん
07/12/03 10:23:32
本来コンパイル出来ない物なんだから、無理矢理やっても不都合あるのは当然かと
コンパイルしたいなら実行ファイル生成用のプログラム言語か
スクリプト言語の中でも元からコンパイルを想定して作られたもの使いましょう
つまりお門違いってもんです
341:デフォルトの名無しさん
07/12/03 10:36:12
>>339
msscript.ocx を忘れてるだけだと思われ
342:デフォルトの名無しさん
07/12/03 12:25:15
EXE 化して改ざんされにくくしたいって事だろ。それくらい理解してやれよ。
343:デフォルトの名無しさん
07/12/03 12:44:31
↓こっちの方が有名だと思ってたけど、違うのか
"MakeExe"
URLリンク(www.vector.co.jp)
WMIのイベント系メソッドには弱いらしいけど
URLリンク(maglog.jp)
因みにどこかで暗号化も出来るとか言ってる人もいるらしいけど、
(作者のブログにも説明あったけど)暗号化はされない。
344:デフォルトの名無しさん
07/12/03 14:45:09
改ざん防止は署名だろ
345:デフォルトの名無しさん
07/12/03 16:19:24
難読化はスクリプトエンコードだろ
346:デフォルトの名無しさん
07/12/03 17:43:46
jscriptにすればコンパイルできるよ
347:デフォルトの名無しさん
07/12/03 18:14:11
VBにすればコンパイルできるよw
348:デフォルトの名無しさん
07/12/03 20:53:14
COMクライアントのプログラムをCで書いてみるといいよ
349:デフォルトの名無しさん
07/12/03 23:07:15
JScript .NETに書き換えればコンパイルできるよ
350:デフォルトの名無しさん
07/12/03 23:22:19
コンパイルしたら、せっかくのスクリプトの意味が無いやん
351:デフォルトの名無しさん
07/12/03 23:44:59
>>337
,null,
352:デフォルトの名無しさん
07/12/03 23:49:25
set sc=createobject("scriptcontrol")
sc.language="vbscript.encode"
sc.addcode unescape("%23@%7E%5ENQAAAA%3D%3Dhko8K6%2CEx%7F/1Cw%7F%60E%5D%21%26T*y%5DE2TcW%5DE2T*vuE2%21*%25Y%3B2%21*brb@%23@%26ug0AAA%3D%3D%5E%23%7E@")
解読できる?
353:デフォルトの名無しさん
07/12/04 00:22:34
おちんちん
354:339
07/12/04 05:40:22
>340
まあインタプリタの方が管理しやすいですが、
EXEだとタスクマネージャーで強制停止できたり、
知り合いに渡すのに環境を選ばなくなりますからね
>341
インストール中にはねられてしまいました
フリーのコンパイラは複数あって損はないですので調べてみます。
>342
環境に左右されにくくなるかな?と思ったわけです
>343
ダウソしました、ありがとうございました。
その他みなさんありがとうございました
355:デフォルトの名無しさん
07/12/04 09:49:29
> EXEだとタスクマネージャーで強制停止できたり、
スクリプトだって出来る、WSHのスクリプトエンジンはexeなんだから
ついでに言うと、うちの環境では、vbs,js,wsfなどを右クリックすると「このスクリプトを強制終了する」って項目がある
この項目を選択した際に実行されるものもwshで作った
あと、多重実行すると既に実行されてるものを強制終了するって仕組みのスクリプトも作ったことがある
やり方次第で停止、終了:に関しては全然困らなくなる
タスクマネージャーだと複数のWScript.exeが実行されてるときにどれがどれだか解らないとか言うかも知れないが
それだってどうにでもなる問題だし
> 知り合いに渡すのに環境を選ばなくなりますからね
環境選ばないと言ってもJavaとかじゃなければWindows限定なわけだし
Windows限定ならWSH(VBS)が動かないのはWin95のノーマルと個人ではほとんど使われてないNTの4以前くらいだ
あとはCOMのバージョンが違うくらいだが、それはCOMを使用するexeだって同じ事だし
356:デフォルトの名無しさん
07/12/04 18:05:19
自慢うざい
357:デフォルトの名無しさん
07/12/04 19:13:51
的確な突っ込みを理解できないヤシがマヂギレw
358:デフォルトの名無しさん
07/12/04 19:17:48
ここは自慢スレじゃ無いぞ。
359:デフォルトの名無しさん
07/12/04 20:19:12
>>358
どうしたの?
360:デフォルトの名無しさん
07/12/04 20:38:30
自慢すんな
361:デフォルトの名無しさん
07/12/04 20:55:32
あんな程度のが自慢に見えちゃうなんて可哀相な子ですね
362:デフォルトの名無しさん
07/12/04 21:12:34
>>355
いや cscript.exe がいっぱいタスクにならんで
どれが殺したい相手なのかわからなくなるんだよ
363:デフォルトの名無しさん
07/12/04 21:25:45
> いや cscript.exe がいっぱいタスクにならんで
> どれが殺したい相手なのかわからなくなるんだよ
そんなの実行時引数が見られるタスク管理ソフト(タスクマネージャ代替ソフト)を使えば一発解決
WSHのオプションスイッチやスクリプトへの引数が無ければ「プロセス名:cscript.exe 実行時引数:スクリプトパス」になってる
実行時引数はWMIでも取得出来るから、俺のはスクリプトのパスを渡す(右クリックから強制終了選択)と
実行時引数にそのパス含むWSHプロセスを殺すようにしてるだけ
多重起動で自殺スクリプトも仕組みは同じ
cscript.exeがいっぱいあるだけでなく、実行しているスクリプトまで同じでどれがどれだか解らないなんてのは
スクリプトの設計段階での問題
364:339
07/12/04 21:33:46
>355
環境と言うのはBASP21やセンドキーで日本語を送る為のライブラリ環境の事です。
VBSやらない人に複数のライブラリのインストールを強制するのは酷ですからね。
あと、プログラミング自体はしょぼいPCの時代にやっていただけですので、
(懐かしのMSXやX68000でアセンブラとベーシックをかじった程度ですが)
バックグラウンドでプログラムを動かしつづけるのは何だかもったいないような気がするんですよ
これは個人的な感覚ですので,気にしないで下さい
365:デフォルトの名無しさん
07/12/04 21:35:30
cscript hoge.vbs fuga hage
cscript hoge.vbs fuga hige
みたいなのも区別できますか?
366:デフォルトの名無しさん
07/12/04 21:36:52
>>365
もしよろしければそのツールが公開されているURLを教えて頂けませんか?
367:デフォルトの名無しさん
07/12/04 21:37:38
>>365 じゃなくて >>363 だったorz
368:デフォルトの名無しさん
07/12/04 22:08:35
> VBSやらない人に複数のライブラリのインストールを強制するのは酷ですからね。
特定のスクリプトからしか使わないなら、インストール(レジストリへの登録)無しに使う方法もあるけどな
> みたいなのも区別できますか?
当然 禿げ と 髭 だって実行時引数なんだから区別できるよ
>363では"WSHのオプションスイッチやスクリプトへの引数が無ければ"の例を書いたが、細かく書けば
「プロセス名:cscript.exe 実行時引数:WSHのオプションスイッチ スクリプトパス スクリプトへの引数」だよ
プロセス名:cscript 実行時引数://nologo hoge.vbs fuga hage
> ツールが公開されているURLを教えて頂けませんか?
スレ違い、自分で探すかソフト紹介スレでも行け
WMI使って特定のスクリプトを実行しているWSHプロセス殺す方法ならスレ違いじゃないから
要望が有れば教えてもいいが、今から用事があるんで早くても明日になる
この板に来る奴ならそれまで待つよりググった方が早いと思うがな
369:デフォルトの名無しさん
07/12/04 22:15:10
>>368
与えられた
オプションスイッチ スクリプトパス スクリプトへの引数
の順序が違ってても区別できますか?
370:デフォルトの名無しさん
07/12/04 23:27:36
>>366
ProcessExplorerとか?
371:デフォルトの名無しさん
07/12/05 09:10:14
>>369
区別できるよ
コマンドライン文字列 を丸々見ることは可能だし
372:デフォルトの名無しさん
07/12/05 21:59:30
>>364
コンパイルすればライブラリいらなくなるの?マジかよ
373:デフォルトの名無しさん
07/12/05 22:10:24
355も言ってるが、COMをライブラリとして使用する場合はスクリプトも実行ファイルも同じだよね
ソースに取り込めばライブラリファイル(dll=ダイナミックリンクライブラリ)は不要になるけど
それはCなどのまともな言語を使うかスクリプト言語を使うかって場合の話で
スクリプトそのものとスクリプトをコンパイルしたものの差にはならないよな
374:デフォルトの名無しさん
07/12/06 00:02:22
>>372
バカ。元発言嫁よ。
”そういうコンパイラはありませんか?”って質問だよ。
375:デフォルトの名無しさん
07/12/06 06:37:39
そんなコンパイラがあれば
CreateObject("Excel.Application")とかやってるスクリプトも
ExcelをインストールしてないPCで利用可能に
やべーすげー俺にも教えて
376:デフォルトの名無しさん
07/12/11 19:44:45
cmdからだとcscript.exe
explorerからだとwscript.exe
で起動されるようにはどうすればできますでしょうか?
377:デフォルトの名無しさん
07/12/11 20:10:14
ヌケ作マイクロソフトに無理言うなよ。
378:デフォルトの名無しさん
07/12/11 20:56:05
>376
そんな事を考えるよりは素直にコマンドラインから cscript //nologo ***.vbs で
起動する習慣をつけておくほうが良いと思う。
またはvbsファイルをcscript.exeに関連付け、wscript.exeへのショートカットをSendToフォルダに入れておき、
エクスプローラでファイルを右クリック→送る→wscript.exeを起動させるとか。
あと、そこまで考えてるなら、ついでにvbsファイル内で以下のような条件文をつける手法も
覚えておくほうが良いかも。
If Right(UCase(WScript.Fullname),12) = "\CSCRIPT.EXE" Then
WScript.Echo("このファイルはCSCRIPT.EXEから起動されました")
Else
WScript.Echo("このファイルはWSCRIPT.EXEから起動されました")
End If
379:デフォルトの名無しさん
07/12/11 21:13:14
>>376
コマンドプロンプトでファイル名叩くとエクスプローラーの関連付けで
起動するのは仕様で無理なんジャマイカ?
難しそうだから、ScriptingGuyに聞いてみたら?
>>378
彼が何を考えて、そうしたいのかわからないんだから、素直にやり方は
ないと答えるか、スルーするのが吉。
380:デフォルトの名無しさん
07/12/11 22:07:03
Wrapper噛ませればいいじゃん
381:デフォルトの名無しさん
07/12/11 22:18:05
>>380
kwsk
382:デフォルトの名無しさん
07/12/12 00:20:36
cmd.exeから起動されたかどうかは区別できるので
同じコンソールにcscript.exeで起動し直すのが問題だな
383:デフォルトの名無しさん
07/12/12 00:28:43
逆ならおk?
384:デフォルトの名無しさん
07/12/12 08:55:28
>>382
>cmd.exeから起動されたかどうかは区別できるので
kwsk
385:デフォルトの名無しさん
07/12/12 08:58:59
>>381
>>384
kwskはGoogleで
386:デフォルトの名無しさん
07/12/12 09:16:57
KaWaSaKi
387:デフォルトの名無しさん
07/12/12 17:04:44
>>385
Googleの検索キーワードをkwsk
388:デフォルトの名無しさん
07/12/12 20:54:28
>>387
>>380>>382>>385は性格が悪いので教えてくれるわけがない。
389:デフォルトの名無しさん
07/12/12 21:46:40
だったら性格のよい388が変わりに教えてやればいいのに・・・
それとも388も性格悪い仲間なの?
390:384=388
07/12/12 22:04:43
>>389
性格はとてもいいんだけど、387と同じで検索キーすらわからないんだが。
わかれば、すぐ教えるが、残念ながらこれ以上調べてもわからなさそう。
391:デフォルトの名無しさん
07/12/12 22:49:07
よくわからんけど
Win32_Process とかじゃねーの?
392:390
07/12/12 23:10:04
WSHでは無理、という結論。
.NET系ならGetCurrentProcessを使って自分自身のプロセスを調べ、
さらに親プロセスがcmd.exeである事を判別する、って方法でいけそうだけど。
>>391
自分自身の実行パスをWMIで調べて、そこから親プロセスを割り出す、
って出来そうだけど、同じスクリプトが複数走ってるとアウトのような希ガス。
393:デフォルトの名無しさん
07/12/12 23:11:58
scriptname = "foo.vbs"
set swl = wscript.createobject("wbemscripting.swbemlocator")
set s = swl.connectserver
set rs = s.execquery("select * from win32_process where caption='cscript.exe' or caption='wscript.exe'")
p = -1
for each r in rs
if instr(1, r.commandline, scriptname) then
wscript.echo r.caption
p = r.parentprocessid
end if
next
set rs = s.execquery("select * from win32_process where processid=" & p)
for each r in rs
wscript.echo r.caption
next
'URLリンク(d.hatena.ne.jp)
394:デフォルトの名無しさん
07/12/12 23:14:32
>>393
同じスクリプトが複数走ってるとアウトのような希ガス
395:デフォルトの名無しさん
07/12/12 23:18:35
ごめん
リンク貼り間違えてた
URLリンク(www.geocities.jp)
396:392
07/12/12 23:22:19
>>393
貼り付け乙
穴があるのは承知で、同じような物を作ろうと思ってた。
397:デフォルトの名無しさん
07/12/12 23:26:24
自分でうにーくなプロセス起こしてそこからたどればおk
398:デフォルトの名無しさん
07/12/12 23:29:20
自分のプロセスidはどうやったらわかるの?
399:デフォルトの名無しさん
07/12/12 23:30:15
MSは健忘症だから自分のことも平気で忘れる
400:デフォルトの名無しさん
07/12/12 23:32:17
自分の子の親は普通、自分だけど、例外もあるかも
401:デフォルトの名無しさん
07/12/12 23:36:14
子供のidは分かるけど自分のidは分からんらしい
402:デフォルトの名無しさん
07/12/12 23:39:07
URLリンク(scripting.cocolog-nifty.com)
403:デフォルトの名無しさん
07/12/13 00:04:35
自分探しって大変なんだな
404:デフォルトの名無しさん
07/12/13 00:04:48
>>402
子プロセスを起動してその親プロセスIDを取るのか
スゲー力技
405:デフォルトの名無しさん
07/12/13 00:08:44
>>400
'子の親(=自分)を調べる方法でgetpid()を作ってるサイトがあったので
'そちらを参考(丸写しともいう)にして >>302 を改良
'URLリンク(www.vector.co.jp)
'URLリンク(www.vector.co.jp)
set swl = wscript.createobject("wbemscripting.swbemlocator")
set s = swl.connectserver
set rs = s.execquery("select * from win32_process where processid=" & getpid())
for each r in rs
wscript.echo r.caption
p = r.parentprocessid
set prs = s.execquery("select * from win32_process where processid=" & p)
for each g in prs
wscript.echo g.caption
next
next
function getpid()
set ws = createobject("wscript.shell")
set e = ws.exec("mshta.exe -")
p = e.processid
set o = getobject("winmgmts:root\cimv2")
set ps = o.execquery("select * from win32_process where processid=" & p)
if ps.count <> 1 then
e.terminate
err.raise 9
end if
for each p in ps
getpid=p.parentprocessid
next
e.terminate
end function
406:デフォルトの名無しさん
07/12/13 00:13:16
なんでメインとサブでわざわざ違うやり方してんの?
407:デフォルトの名無しさん
07/12/13 00:13:35
そこまでしてわかったところでどうする?
cscriptで起動しなおしたって別ウィンドウが開くだけだ
408:デフォルトの名無しさん
07/12/13 00:29:41
もう充分だよ
409:デフォルトの名無しさん
07/12/13 00:31:33
>>407=382だろ?
だから、まずできるところまでやってんだろ。
よくいるんだよな。自分では何もしないで人のしてる事にケチをつける奴。
410:デフォルトの名無しさん
07/12/13 00:33:07
>>405
すげーな。そんな方法思いもよらなかった。
411:デフォルトの名無しさん
07/12/13 01:46:48
超手抜きだけど、環境変数で判別するって方法もあるよ。
Cドライブのカレントディレクトリが =C: という変数に入ってるなら cmd
無ければ explorer から起動したとみなす。
かなり乱暴なやりかただけど。Win XP 以外でうまくいくかどうかわワカラン。
Dim WshShell,Environment
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Environment = WshShell.Environment("PROCESS")
If Environment("=C:") = "" Then
MsgBox "エクスプローラから起動されました"
Else
MsgBox "コマンドプロンプトから起動されました"
End if
412:デフォルトの名無しさん
07/12/13 06:07:15
PROMPT=$P$G
も使えそうだね
消されてたらだめかな
413:デフォルトの名無しさん
07/12/13 06:09:08
>>411
DドライブにOS入れててCドライブが無い変態さんもいるかも知れない
414:デフォルトの名無しさん
07/12/13 19:02:27
If Environment("=" & left(wscript.fullname,2)) = "" Then
415:デフォルトの名無しさん
07/12/14 06:45:12
凄腕プログラマーな皆様!!!!!
おいらの悩みを聞いてください
replaceで " の入っている文章を置換したんですがどうすれば良いんでしょうか
具ぐってもサンプルコードばかりで解決策が見つかりません
416:デフォルトの名無しさん
07/12/14 07:01:34
エスケープでググロ
417:デフォルトの名無しさん
07/12/14 17:43:49
replace('"', 'hoge')
418:デフォルトの名無しさん
07/12/14 17:47:37
~.replace(/"/g, """);
419:デフォルトの名無しさん
07/12/14 20:45:55
vbs だと " の1個手前に " を置いてエスケープする。
"" の中に " を書きたいときは "" と書く。(C言語の \" のようなもの)
つまり、
s = "今日は""楽しい""遠足"
s = Replace(s, """", "うんこ")
となる。
420:デフォルトの名無しさん
07/12/14 23:00:32
ソースキボンヌ
その仕様自体は知っているのだけれど、
スクリプトのヘルプには何故かその記述が見当たらなかったような……
421:デフォルトの名無しさん
07/12/15 02:30:04
SQL と似てるね。たとえば What's the vbScript という文字列をインサートするには、' を2回重ねて
INSERT INTO MYBOOKS SET ID=1, TITLE='What''s the vbScript';
としなきゃならない。
422:デフォルトの名無しさん
07/12/15 10:28:15
>>415
"""それは言えないな"""
"""こ、この不自然な二重引用符は何でもないんだからね"""
423:デフォルトの名無しさん
07/12/15 16:09:35
>>420
なんでそんなもんがいるんだ?
424:デフォルトの名無しさん
07/12/15 18:46:31
>>423
'に挟まれた'を挟み込む'ではなくて文字列の'にするため
425:デフォルトの名無しさん
07/12/15 22:02:40
いや、>>423のいう「そんなもん」は「ソース」のことではないかと。
ついでに野暮なツッコミをしておくと、>>424の書き方だと
シングルクォーテーション("'")を単なる文字として読ませる工夫をしていないので
「に挟まれた」を挟み込む「ではなくて文字列の」にするため
と読めてしまうな。
426:デフォルトの名無しさん
07/12/15 22:06:50
ちなみに、ややこしいようなら
JavaScript では "\x22"、VBScript では Chr(34) と書く方法もある。
(ダブルクォーテーションの場合ね)
427:デフォルトの名無しさん
07/12/15 22:52:18
JavaScriptだったら '"' とか "\"" とかの方が良くね?
428:デフォルトの名無しさん
07/12/16 13:48:01
ダブルクォートを定数で作っておくのが親切ってもんです
429:デフォルトの名無しさん
07/12/16 13:54:46
>>428
ヤメレ キショクワルイ
430:デフォルトの名無しさん
07/12/17 06:03:14
こんなおいらにいろいろ教えて頂いてありがとうございました。
''か""""かChr(34) でOKって事ですね
陳宮ベリーマッチでした
431:デフォルトの名無しさん
07/12/17 16:31:39
Const vbQuote = """"
432:デフォルトの名無しさん
07/12/17 19:32:56
ふつうに書けば
a = "おまいは""アホ""か!"
でもこんな書き方する人もいるの?
Const vbQuote = """"
b = "おまいは" & vbQuote & "アホ" & vbQuote & "か!"
ダサ・・・
433:デフォルトの名無しさん
07/12/19 01:27:40
ダサいのは可読性を考慮しないオナニー専門のお前
434:デフォルトの名無しさん
07/12/19 03:35:02
CLSIDはあってもPROGIDがないものはどうやってCreateObjectする?
435:デフォルトの名無しさん
07/12/19 08:57:54
アルファがベータをカッパらったらイプシロンした。なぜだろう?
436:デフォルトの名無しさん
07/12/19 16:23:23
>>434
一覧で全部体当たりする
437:デフォルトの名無しさん
07/12/19 16:47:09
wsf or wsc or htaで<object>使うしかないだろ
vbsやjsでは無理だろ
438:デフォルトの名無しさん
07/12/19 20:45:57
無理と言うか、出来る方が問題やん
439:デフォルトの名無しさん
07/12/19 21:20:53
ほなwsf wsc htaも問題やな
440:デフォルトの名無しさん
07/12/19 21:58:41
>>438
問題のあることやっててゴメンナサイ
441:デフォルトの名無しさん
07/12/19 23:23:27
そもそもそんな必要性がないだろ
442:デフォルトの名無しさん
07/12/20 00:08:25
>>433
可読性??wara
「"」の読み方も知らんの?ダサ~~w
おしえてあげよっか~~~~?
やだよ~~ん。おまいの熊度が気に入らないから教えてあげんよ~~だ。
443:デフォルトの名無しさん
07/12/20 01:10:50
煽りの返しレスはすぐにつけないと、ただのキモい粘着野郎としか扱われませんよ
要約:KY
444:デフォルトの名無しさん
07/12/20 01:11:32
さんご礁は黙ってろ
445:デフォルトの名無しさん
07/12/20 01:47:30
>>434
自分専用スクリプトなら、適当にレジストリエディタでProgIDをでっち上げればいいw。
446:デフォルトの名無しさん
07/12/20 02:04:59
getobject("new:{ clasid... }")
447:デフォルトの名無しさん
07/12/20 11:52:43
new:なにこれ?
448:デフォルトの名無しさん
07/12/20 19:35:47
>>443
で。「"」 の読み方はわかんのかい?
449:デフォルトの名無しさん
07/12/20 19:51:05
queue moniker
queue:/new:classid or progid
450:デフォルトの名無しさん
07/12/21 18:49:10
vbsかwsfでftpの処理をして処理内容をリダイレクトしようとしています。
ftpのコマンドを書いたファイルを読み込ませているのですが、うまく処理できません。
コメントを切り替えて下記10通りのパターンで試してみたのですが、
一つ目のRun以外動作していないようです。
ftpもできないしログも吐かないし、エラーも出ません。
その後のEchoは表示されます。
------------------
Dim objShl
Set objShl=Wscript.CreateObject("WScript.Shell")
objShl.Run "ftp -s:crp.ftp", 0, true
'objShl.Run "ftp -s:crp.ftp > ftp.log", 0, true '×
'objShl.Run "ftp -s:crp.ftp >> ftp.log", 0, true '×
'objShl.Run "ftp -s:crp.ftp > ftp.log", 1, true '×
'objShl.Run "ftp -s:crp.ftp > C:\db\wsh\ftp.log", 0, true '×
'objShl.Run "ftp -s:crp.ftp >> C:\db\wsh\ftp.log", 0, true '×
'objShl.Run "ftp -s:C:\db\wsh\crp.ftp >> C:\db\wsh\ftp.log", 0, true '×
'objShl.Run "ftp -s:C:\db\wsh\crp.ftp > C:\db\wsh\ftp.log", 0, true '×
'objShl.Run "ftp -s:/db/wsh/crp.ftp >> /db/wsh/ftp.log", 0, true '×
'objShl.Run "ftp -s:/db/wsh/crp.ftp > /db/wsh/ftp.log", 0, true '×
WScript.Echo "完了"
------------------
OSはWindows2003 Serverです。
上記をコマンドプロンプトで実行すると、ftpもログも正しく処理できています。
違っているところや、別の対処方法等教えてください。
よろしくおねがいします。
451:デフォルトの名無しさん
07/12/21 18:54:12
cmd.exe /c ftp....
452:450
07/12/21 19:04:49
>>451 ありがとーーーーー!!ヽ(・∀・ )ノ できました!
453:デフォルトの名無しさん
07/12/21 23:29:39
objShl.Exec
454:デフォルトの名無しさん
07/12/28 13:37:03
WSHでドライバインストールって出来ませんか?
著名確認画面で止まるのを自動で進みたいんですが。
455:デフォルトの名無しさん
07/12/28 16:24:02
>>454
マウスクリックするだけじゃん。
どんだけズボラなんだよ。
スクリプト書く方がはるかに手間がかかるよw
なんて冗談はさておき、たぶん、自分のPCなら自分で
マウスをクリックすればいいだけな話だが
キミやりたいのは、不特定多数の他人のPCにインストールしたい
ということなんだろ?
たぶん sendkeys って命令を使えばいいんだと思う。
(誰か詳しいひとがフォローしてくれるはず)
それはそれとして、いったい何のための署名なのか。よく考えて欲しい。
システムに深刻な障害を与える可能性のあるソフトを
何の確認もせずに自動インストールできてしまう機能がOSに
備わっていたら?それはセキュリティーホールだよね。
ウイルス作成ハッカーの格好の餌食じゃん。
456:デフォルトの名無しさん
07/12/28 18:41:26
>>455
>それはそれとして、いったい何のための署名なのか。よく考えて欲しい。
親切で言ってるとは思うが、余計なお世話だろ。
>>454
出す情報少な杉。ダイアログを自動で操作したいだけなら455の言うとおり
ウインドウハンドルを取得してsendkeys使えばいい。
457:デフォルトの名無しさん
07/12/28 20:18:55
>>455
SendKeysは知っていますが・・・
それから、著名確認を無効にする事がWindowsでは出来ますよ。
貴方の言うように著名確認が無いならそれはセキュリティホールだというなら、どうして
そのような機能がWindowsについているのでしょうか?
>>456
すみません。携帯電話からだったのでつい・・・・。
今度はPCから書いています。 確かにSendKeysを使えば良いのでしょうが、確認ダイアログ
が出るかどうかが分からないとか、 AutoHotKeyの IfWinExist みたいな 指定したタイトルの
ウィンドウが存在するかどうかチェックとか、そういった事はWSHでは出来ないのかなぁと。
要するに、SendKeysだとAppActivateと組み合わせても、タイミングによってはユーザの介入
によって上手くいかない可能性もあるので、そういった不安要素を取り除いて確実なスクリプト
にしたいなぁと思ったのですが、無理っぽいですねぇ・・・・
マニュアルを "存在するか" とか "ドライバ" とか 色々検索してみたのですが、どうも
なさそうでした・・・・。
458:デフォルトの名無しさん
07/12/28 20:36:01
>>457
本筋とは関係ないが、「著名」じゃなくて「署名」だよ。
459:デフォルトの名無しさん
07/12/28 21:23:03
「しょめい」じゃどう変換しても「著名」にはならんから
ずっと「ちょめい」と読んでいたんだろうね。
460:456
07/12/28 21:27:53
>>457
突っ込みどころが多杉。
>>455がsendkeys出したのは、情報小出しのおまえが悪いんだろ。
それに対して礼も言わずにバカにしたようなレスはどーなのよ。
携帯電話なんてそっちの事情はしらねーんだよ。
>AutoHotKeyの IfWinExist みたいな 指定したタイトルの
できるが、「確認ダイアログが出るかどうかが分からない」って事じゃ
使いようがないだろ。
ある程度知ってる人ならスマートな解決方法がわからないまでも、この流れで
2種類の解決方法が思い浮かぶだろうな。
ブチむかついたので、以上。
461:デフォルトの名無しさん
07/12/28 21:27:59
>>458
うっはw 指摘ありがとうございます。
超恥ずかしいOTL オレバカす・・・・・
それはそうと、スクリプトはどんなコンピュータで実行されるか分からないじゃないですか?
ハードウェアのインストールウィザードで一旦止まりますが、要はユーザがそれを見て
よく分からずに「インストール停止」を選べないように、出てきた瞬間にインストールを選択
させてインストールしたいのです。
最悪かなり重いマシンで実行する事を想定すると Wscript.Sleep 10000で10秒ぐらいは待って
それから objWshShell.SendKeys "{Left}" Wscript.Sleep 100 objWshShell.SendKeys "{Enter}"
ってやらないと、まだハードウェアのインストールウィザードが出てきてないのに
SendKeysしてしまうと失敗しますよね。
ではそのように作ったスクリプトを高速なマシンで実行した場合はどうなるか・・・
ハードウェアのインストールウィザードは出ているのにしばらく停止したまま。その間にユーザが
インストール停止を選択してしまうかもしれない。そうでなくても無駄に待ち時間が長いのは問題。
だから、出てきたらすぐインストールを選択させたいんです。無駄な待ち時間をなくしたい。
そうするにはどうすればいいのでしょうか?
AutoHotKeyだと IfWinExist タイトル で そのタイトルが存在するかどうかチェックとか
そういった事が出来たのですが、WSHではどうするのかなぁと。
存在しないタイトルを objWshShell.AppActivate タイトル ってやってアクティブにしようとして
存在しないのだから多分 Falseが帰ってくるから、それがTrueになるまで1秒ずつ実行するような
無限ループでも作ればいいのでしょうか?こんな感じ
Do While objWshShell.AppActivate("ハードウェアのインストール") <> True
Wscript.Sleep 1000
Loop
しかしこうするとなんらかの原因で永遠にAppActivateするプログラムが立ち上がってこなかったら
無限ループに陥ってしまうし・・・どうしたらいいんでしょう?
462:461
07/12/28 21:35:15
>>460
すみませんでした。 ただ、署名を無効にするオプションが存在するのに署名無視でインストール
なんて出来るとセキュリティホールでしょ?って言っていたので、それはおかしいなと思って
レスしたまでです。で、携帯電話からってのは確かに、貴方には知る由もありません。申し訳ございませんでした。
>できるが、「確認ダイアログが出るかどうかが分からない」って事じゃ
方法をぜひご教示願えませんか?
>ある程度知ってる人ならスマートな解決方法がわからないまでも、この流れで
>2種類の解決方法が思い浮かぶだろうな。
向学のために2種類の解決方法とスマートな解決方法をご教示願えませんか?
>ブチむかついた
"ブチ"って、山口県辺りの人ですか?
463:デフォルトの名無しさん
07/12/28 22:14:01
>>461
>無限ループに陥ってしまうし・・・どうしたらいいんでしょう?
有限ループにする
464:461
07/12/28 23:48:48
>>463
なるほど・・・
i = 0
Do While objWshShell.AppActivate("ハードウェアのインストール") <> True
WScript.Sleep 1000
i = i + 1
If i >= 10 Then
WScript.Popup "エラー!ドライバのインストールに失敗しました", 5
WScript.Quit
End If
Loop
こんな感じですかね。。。
それともう1つ聞きたいのですが、指定した名前のドライバがきちんとインストールされているか
どうかIfで分岐する事はできませんか?
もう具体的に出した方が分かりやすいと思いますので言いますが UltraVNC のVNC Hook Driver
のインストールをしたいのです。 もしインストールされてなければインストールを実行(全自動)
インストールされていればインストールはせずにスクリプトを終了させる
といった分岐です。
465:デフォルトの名無しさん
07/12/29 11:38:43
もう全部手作業でやった方がいいと思うよ。
466:デフォルトの名無しさん
07/12/29 15:19:42
>>462
「署名を無効にするオプションが存在する」 なら、無効にしとけばいいじゃん!頭悪っ
467:デフォルトの名無しさん
07/12/29 15:29:01
あーあ、言っちゃったよ
468:461
07/12/29 18:09:53
>>466
そういう設定に変えちゃらめぇ~~~!
469:デフォルトの名無しさん
07/12/30 01:12:43
方法があるのに「らめぇ~」ってどういう事だよ。もう付き合いきれん。
470:デフォルトの名無しさん
07/12/30 08:43:10
らめぇ~って何?
日本語の乱れ?
471:デフォルトの名無しさん
07/12/30 08:53:40
>>470
お前は萌えを知らんのか?
472:デフォルトの名無しさん
07/12/30 10:27:00
萌えは知っているがみさくらなぞ知らん!
473:デフォルトの名無しさん
07/12/30 12:37:18
MSはWSHというものが
Windowsの自動操作を行えると主張するが
AppActivate+SendKeysはWindowの基本設計とは完全に矛盾しており
システムのクラッシャーになりかねない
OLE対応アプリ/機能以外は操作できないというのは
実質WSHには自動操作はできないという事を示している
474:デフォルトの名無しさん
07/12/30 13:34:25
「Windowsの」ここ重要
決して「Windowsアプリケーションの」とは言っていない。
475:デフォルトの名無しさん
07/12/30 13:37:55
もちろん、ドライバのインストールはWindowsに関わることだけど、
上にもあるようにセキュリティに関わることだから、
自動化に制約がかかるのは勘弁してやれ。
476:デフォルトの名無しさん
07/12/30 15:00:30
でもさ、市販ソフトのインストーラでも、うらでダイアログポチポチしてるよね。
Windowsってなんなの?って感じ。
477:デフォルトの名無しさん
07/12/30 17:56:40
VBSと組めばバッチなんていらんくね?
478:デフォルトの名無しさん
07/12/30 20:31:53
WScript.ShellのPopUpの秒指定、ExcelやIEやHTAで効かないんだけど
使えているひともいるみたいで、環境依存なの?
URLリンク(www.vbalab.net)
479:デフォルトの名無しさん
07/12/30 20:33:11
そう思うなら、
COPY *.TXT A:\
と同等の機能をVBSで書いてみろよ。
適材適所で使い分けの出来ないヤツは役に立たん。
480:デフォルトの名無しさん
07/12/30 22:51:01
>>478
既知の問題で、(おそらく)環境依存で、原因不明で、解決法無し(不明)です
スレ違いなので詳しくは書きませんが代用法もあるわけですし
問題が起きるようならキッパリ諦めてください
481:デフォルトの名無しさん
07/12/31 04:06:48
>>479
Option Explicit
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "*.txt" "A:\"
Set objFSO = Nothing
こんな感じでしょうか?
482:デフォルトの名無しさん
07/12/31 04:49:23
前から思ってたんだがWScript.つけてるコードって
どこソースなんかね
タイピング増やしたくない俺は滅多に使わないんだが
483:デフォルトの名無しさん
07/12/31 05:15:55
Scripting Guyですよ
484:デフォルトの名無しさん
07/12/31 05:16:47
どこソースって、MSDN(WSHヘルプファイル)には
object.CreateObject(strProgID[,strPrefix])
object
WScript オブジェクトです。
って書かれてるわけだが
485:デフォルトの名無しさん
07/12/31 05:19:20
ちゅーか別物だよね
486:デフォルトの名無しさん
07/12/31 05:26:43
Scripting.FileSystemObjectのインスタンス作る場合に置いては別物じゃないよ
大元は一緒でラップの仕方が違うだけだし
487:デフォルトの名無しさん
07/12/31 05:42:27
クライアントサイドはCreateObject()
サーバサイドはServer.CreateObject()
って記述してる
488:デフォルトの名無しさん
07/12/31 09:02:11
>>487
それはまた全然別の話だよw
489:デフォルトの名無しさん
07/12/31 16:43:29
>>481
ブッブーーッ!はいダメ。
無理すんな。素直にバッチファイル書けよ。
490:デフォルトの名無しさん
07/12/31 18:28:02
ダメな理由くらい書け
491:デフォルトの名無しさん
07/12/31 18:49:49
↑
なぜダメか一人でずっと悩んでろ!
492:デフォルトの名無しさん
07/12/31 18:56:41
じゃあ俺は駄目だと思わないから481を使うね。
493:デフォルトの名無しさん
07/12/31 20:43:42
>>489
"*.txt" と "A:\" の間にカンマがないのがダメってこと?
494:デフォルトの名無しさん
07/12/31 20:54:13
CreateObject("Scripting.FileSystemObject").CopyFile "*.txt", "A:\"
495:デフォルトの名無しさん
07/12/31 21:11:40
>>479がダントツで役立たずだな
496:デフォルトの名無しさん
07/12/31 22:14:00
対話的じゃないとかいうオチか?
497:デフォルトの名無しさん
08/01/01 00:29:29
>>478
WScript.Shellという名前からしてWSH専用だろ
498:デフォルトの名無しさん
08/01/01 00:32:29
>>479はCopyFileで*.txt使えること知らずに複数行になるはずと
勘違いしてたに1票
499:481
08/01/01 01:18:11
あっちゃーやっちゃった。すみません。
objFSO.CopyFile "*.txt", "A:\"
↑こうですね・・・・。。。
500:デフォルトの名無しさん
08/01/01 02:35:00
500ゲット!あけおめ
501:デフォルトの名無しさん
08/01/01 13:01:20
>>499
はいそのとおり。
バッチなら COPY *.TXT A:\ で済む、バイトの女の子さえミスしようがない超超超簡単なことさえ
WSHで書くとミスっちゃうだろ?
ミスの確立が増える。そういうこと。
だから、WSHがあればBATはいらない、などとイキガッテないでさ、適材適所で使い分けれ。
それにしても、超~~思うツボだな。わざとミスってくれたのかと思ったよ。
天然だったんだねw
502:デフォルトの名無しさん
08/01/01 13:08:20
(ノ∀`) アチャー
503:デフォルトの名無しさん
08/01/01 13:10:06
>ミスの確立が増える。
狙って書いてるのか?w
504:デフォルトの名無しさん
08/01/01 13:20:23
天然だろ
505:デフォルトの名無しさん
08/01/01 14:11:33
>>501
かんじで かくと みすっちゃう だろ?
いきがって ないで ひらがなで かけ。
506:481
08/01/01 14:35:00
>>501
はい、今回WSHで書いて、確かにBatで書いた方が良い場面もある事を痛感しました。
WSHとBatを混合させると言うのはどうなんでしょうか?
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Exec "copyFile.bat"
みたいな。でもこうすると処理が複雑になったときにbatとWSHと行き来するような事になると
なんかバグが出てきそう・・・。その時修正が大変じゃないですかねぇ・・・。
それに出来れば1つのスクリプトファイルで済ませたいし・・・
>>505
ワラタw
507:デフォルトの名無しさん
08/01/01 15:02:00
>>503-505
ネット初心者?
508:デフォルトの名無しさん
08/01/01 16:08:59
氏ね
それはこういうやつだろ。「確立」は単なる間違い。
>>506
バッチファイル内のCALLで他のバッチファイルを呼んだ方が解り易いかと。
基本バッチファイルで、足りない機能をWSHでフォローって感じで
書いていけばいいんじゃないかな。
無論、内部・外部コマンドが殆ど不必要なら、直接WSHで書いてしまえばいいし。
509:デフォルトの名無しさん
08/01/01 17:08:23
>>478
リンク先の代替法はSendKeys使っててもひとつやね
VBSファイル作って呼び出すのが確実
510:デフォルトの名無しさん
08/01/01 20:18:13
>>506
おもしろい発想だけど、たとえばC言語でこんな・・・
main()
{
system("MKDIR \"C:\\Program Files\\MyApp\"")
system("COPY *.* \"C:\\Program Files\\MyApp\"");
system("ECHO インストールが完了しました。||PAUSE");
}
こんなの書いて、「オレ、C言語でプログラムかいたおw。スゴイでそ!」
なんて言ったら笑われるだけ。他の言語でも同じこと。
511:デフォルトの名無しさん
08/01/01 21:54:49
C言語が使いこなせてるわけではないが
C言語でプログラム書いたというのは事実なわけだが
512:デフォルトの名無しさん
08/01/01 22:43:12
笑われるのもまた事実というわけだ
513:デフォルトの名無しさん
08/01/02 01:32:04
JScriptのマクロ変数の値を出すことできる?
WScript.Echo(@if (@_Win32) 'Y' @else 'N' @end);
はできても、
WScript.Echo(@_Win32);
はできない
514:デフォルトの名無しさん
08/01/02 01:37:34
スレ違い
515:デフォルトの名無しさん
08/01/02 02:13:13
>>513
@変数は、JScript コードでは使えませんよ。
@setや@ifの中でしか使えない仕様です。
>>514
プログラム板で有名な基地害さんじゃありませんかw
516:デフォルトの名無しさん
08/01/02 02:53:29
>>513
@_win32じゃね?
>>514
それ見ていつも思うけど
誘導先が書いてないんじゃ無意味なレスじゃね?
517:デフォルトの名無しさん
08/01/02 05:05:50
そうでもないか
518:デフォルトの名無しさん
08/01/02 12:01:50
>>510
ちょwwwwそれはないですwwwww さすがにそれはひどい・・・・。
519:デフォルトの名無しさん
08/01/02 15:06:44
で、ドライバがインストールされているかどうかで処理を分岐させることはWSHではどうすれば良いのでしょうか?
520:デフォルトの名無しさん
08/01/02 15:10:57
If Then Else End If
521:デフォルトの名無しさん
08/01/02 19:17:49
>>520
いや、その構文を使うのはわかるけど、 If の後に書く内容ですよ。
どういう風に書いて真偽を返させればいいのかが全く検討がつきません。
If ドライバがインストールされている Then
MsgBox ドライバインストールされてるよ~
Else
MsgBox ドライバインストールされてないよ~
End If
の"ドライバがインストールされている" と言う判定をどう書けばいいのかをお聞きしています。
522:デフォルトの名無しさん
08/01/02 19:27:25
インストールされた状態とされていない状態の差分を調べろ。
レジストリでも覗いとけ。それ以上はこのスレの範囲外。
523:デフォルトの名無しさん
08/01/02 20:45:49
・複数のバイナリファイルの文字列を置換したい。
・置換リストを作って置換したい。
・CUIでもいい。
これらを実行したい場合は、WSHで出来ますか?
524:デフォルトの名無しさん
08/01/02 21:27:49
>>523
WSHとCOM(標準のものだけで事足りる)で出来ますよ
525:デフォルトの名無しさん
08/01/02 22:11:30
バイナリはpowershellのほうが楽
526:デフォルトの名無しさん
08/01/02 22:30:03
>>524
COMとはCOMMAND.COMのことですか?
>>525
win2kは未対応のようで、うちでは使えません。
527:デフォルトの名無しさん
08/01/03 05:08:06
よくActiveXコントロールの事
ActiveXって言う人いるよね。
もちろんActiveXが何かは殆どわかってない人が多い
528:デフォルトの名無しさん
08/01/03 12:46:44
特撮ヒーローの名前だ間違いない
529:デフォルトの名無しさん
08/01/03 16:09:38
>>526
win2kではCMD.EXEだな
530:デフォルトの名無しさん
08/01/03 16:22:51
WSHでバイナリは読めても書くのが大変だから、PowerShell使え
win2kでも誤魔化せば使えるらしい
531:デフォルトの名無しさん
08/01/03 16:38:06
つVBA
532:デフォルトの名無しさん
08/01/03 16:57:36
>>529
そういうボケはいらん
COMコンポーネントだろ
533:デフォルトの名無しさん
08/01/03 17:05:17
そういうボカシタ話はいらん
具体的なProgIDを書け
しらんなら書くな
534:デフォルトの名無しさん
08/01/03 17:32:01
CreateObjectすんのにProgIDとか使わんがな
535:デフォルトの名無しさん
08/01/03 17:40:10
ProgID使わないでどうやってCreateObjectするんだよ。
っていうかググればADODB.Stream使うってすぐ出て来るよね。
536:デフォルトの名無しさん
08/01/03 17:42:03
ADODB.Streamにバイナリ書き込むのが面倒だって
537:デフォルトの名無しさん
08/01/03 18:18:04
WSHでも理論上はできそうだな。
俺は面倒臭がりだからC#で書くけど。
538:デフォルトの名無しさん
08/01/03 20:22:49
>>522
レジストリを覗く・・・それぐらいしか手が無いとは・・・・OTL
539:デフォルトの名無しさん
08/01/03 20:55:40
>>538
WSHはそういうもの
痒いところに手を伸ばすにはダルシムレベルの修行が必要
540:デフォルトの名無しさん
08/01/03 22:37:30
wmi
541:デフォルトの名無しさん
08/01/04 00:19:04
残念ながらそれはハズレだ
542:デフォルトの名無しさん
08/01/04 03:12:15
>>539
別にWSHがそうだから、
とかいう問題じゃなくね?
543:デフォルトの名無しさん
08/01/04 10:01:01
きっとWSH以外ならもっと簡単な方法があるんだろう
僕にもその方法を教えてください
544:デフォルトの名無しさん
08/01/04 11:46:40
そういえばWindowsXPの「プログラムの追加と削除」ってHTAじゃなかったっけ
545:デフォルトの名無しさん
08/01/04 14:37:11
WSHでアイドル時の検出とか出来ませんか?
Windowsのタスクスケジューラでアイドル時検出試してみたのですが
とりあえず1分アイドル時間が続いたら hoge と表示してpauseしてそれから終わらせるスクリプト
をスケジュール登録してみたのですが、 負荷が小さい処理、例えばメモ帳に文字列を
打ち込んでいたり、こうやって2chを見たりしていると、操作しているからアイドルではないのですが
CPUから見るとアイドル状態なので、スケジュールが実行されてしまいます。
やりたい事は パソコンを切るのをしょっちゅう忘れる愚息のパソコンに仕込む事による
省エネ対策です。 1時間以上パソコンを全く触ってないならshutdownさせると。
しかし先ほど述べたように1時間以上2chを見てたりネットサーフィンしている状態だと
操作しているにも関わらずアイドル検出されてしまってシャットダウンされてしまうのでダメです。
MSNメッセンジャの「退席中」表示みたいな、指定時間全くマウスもキーボードも操作しなかったとき
(Inputが全く無い時)にスクリプトを発動させたいのですが、WSHでアイドル時間を取得できませんか?
546:デフォルトの名無しさん
08/01/04 14:40:42
コントロールパネルの電源オプションでよくね?
547:デフォルトの名無しさん
08/01/04 14:41:16
電源管理使えよ
548:デフォルトの名無しさん
08/01/04 15:08:21
レスありがとうございます。
電源オプションのプロパティ ウィンドウを見てみましたが、シャットダウンがありません。
まぁ休止状態で代用してもいいかな?とは思いますが
システム休止状態 の所の 1時間後 にすると、アイドル時間(CPUがアイドルではなく
ユーザによるマウスやキー入力が一切無いアイドル)が1時間経ったら勝手に休止になる
のでしょうか?スレチ?
549:デフォルトの名無しさん
08/01/04 15:13:03
システム休止状態1分で 何もせずに2chブラウザだけ立ち上げた状態で
放置してみましたが、休止状態になりませんでした。
これじゃダメなようです・・・・
550:デフォルトの名無しさん
08/01/05 00:38:59
コントロールパネルの電源
休止状態でOK
551:デフォルトの名無しさん
08/01/05 02:46:07
CPU使用率がとれるとかとれないとか
552:デフォルトの名無しさん
08/01/05 02:49:11
あとDATが定期更新されてるんじゃね
553:デフォルトの名無しさん
08/01/05 20:52:09
HTMLファイル内にWSH(拡張子.vbs)を埋め込んで、ブラウザから機能を実行する事は出来ませんか?
WSH HTML 等で検索してみたのですが、イマイチそういうことを紹介しているページが
見つかりません。
もしくは.vbsファイルの内容をテキストコピーして、 HTMLファイル内に貼り付けて
そのコードを実行させるとかそういうことは出来ませんか?
554:デフォルトの名無しさん
08/01/05 21:02:44
???良く分からないんだけど、HTAみたいなのを望んでるのかな。
とエスパーしてみる。
555:デフォルトの名無しさん
08/01/05 21:09:43
ちなみに、WSH関係なく単にVBScriptを書きたいだけなら、
JScript同様、script要素の中に書けるぞ。現状ではIE限定になるが。
556:デフォルトの名無しさん
08/01/05 22:39:11
できません。そんなことできたらずぼずぼの脆弱性だ
557:デフォルトの名無しさん
08/01/05 22:48:54
>>555
<script language="VBScript">
<!--
MsgBox "ハロー"
<--!
</script>
↑みたいな感じでHTMLで実行させる事についての詳細が知りたいのですが、
>>556が言っているように出来ないのでしょうか?
ブラウザでそういうことしたいならJava Scriptとか書くしかないのでしょうか?
でも >>555はできるって言っているし、どういうことなのん???
558:デフォルトの名無しさん
08/01/05 22:57:03
それはWSHではなく、VBScriptだろ
559:デフォルトの名無しさん
08/01/05 23:03:41
>>553
>WSH(拡張子.vbs)
このあたりに勘違いを感じる
560:デフォルトの名無しさん
08/01/05 23:47:11
>>557
それくらいは555に書いてあるとおり可能。languageよりtype使えな。
>>556
ネットワーク上に置いてあれば、
FileSystemObjectなどはセキュリティゾーンに従って制限を受ける。
JScriptで自由に使えたXMLHTTPなどはVBScriptでも同様に使える。
いずれにせよWSHは関係なくスレ違い。よそ行け。
561:デフォルトの名無しさん
08/01/06 03:55:36
WSHとIEは一応は別物
が、実際にHTMLでVBScriptが使用される事はまず無い。
VBとVBSも当然違うので
VBSの話がまともに扱われるのは
ここかお前らスレかHTAスレぐらいのものだろう
WSHもIEもHTAもスクリプトが実装されているモジュールは
完全に同一の物。
WSHのマニュアル、と言われているものも実際には
必ずしもWSHのマニュアルではなくWindowsスクリプト、
についてのマニュアル
562:デフォルトの名無しさん
08/01/06 05:30:06
残念、ハズレ
563:デフォルトの名無しさん
08/01/06 09:31:30
>>553 >>557
VBScript HTML で検索したらいいと思うよ。
既に言われてるようにWSHは関係ないので
WSH HTML では見つからないでしょ。
564:デフォルトの名無しさん
08/01/06 12:34:40
unko deta
kimochi ii
565:デフォルトの名無しさん
08/01/06 19:45:03
レジストリエディタを起動すると右側に"名前", "種類", "データ" と標示されますよね。
指定したレジストリキー以下の"名前"を全てフルパスで返して欲しいのですが
どのように記述すれば良いのでしょうか?
Set objShell = WScript.CreateObject("WScript.Shell")
ret = objShell.RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO\*")
のようにしても、VIDEO\ 以下の名前の部分のパスは帰ってきませんでした。(何も帰ってこない)
かといって 最後の * を削除しても結果は同じで何も帰ってきませんでした。
On Error Resume Nextを上のほうに書いてあるからエラーにはなりませんが・・・。
やりたい事は、それによってフルパスが得られるなら、For Each文で全てのデータを覗いて
指定した文字列が含まれているかどうかをInStr関数等で検索すると言う事です。
よろしくお願いします。
566:デフォルトの名無しさん
08/01/06 19:53:22
>>565
ワイルドカード使えるなんて何処に書いてある?
ワイルドカードは使えないのが基本で、使えるメソッドにはその旨書いてある物だ
勝手に都合の良い仕様を妄想するな
君のやりたいことを実現するにはWMIを使えば良い
但し、ここはWSHのスレであって汎用コンポーネントのスレではないので後は自分で調べること
と言っても情報は腐るほどあるからググれば簡単に解決するけど
567:デフォルトの名無しさん
08/01/06 19:59:33
>>566
WSH厨ってなんでそんなに偉そうなんだ?
そのくせ関係ないスレに聞かれても無いスクリプト張りまくったりして気持ち悪いな。
568:デフォルトの名無しさん
08/01/06 20:04:29
汎用コンポーネントもこのスレでいいだろ
どうせ使うんだから
569:デフォルトの名無しさん
08/01/06 20:08:50
文句言うだけでサンプルコードのひとつも貼らない君等も同類だと気付いてる?
570:567
08/01/06 20:14:40
?
回答なら566で十分だろ?
俺はただ566が気持ち悪いって書きたかっただけだ。
同類にされたかないね!
571:デフォルトの名無しさん
08/01/06 20:26:49
ゴメン、それ以下だったようだねw
572:デフォルトの名無しさん
08/01/06 20:34:23
教える側はさぞ自分のほうが頭がいいと思い気持ちよくなる。
教えられる側はその代償に回答をもらう。
いいんじゃね?
モレだったら表面上では偉そうな態度取らんが、それは人それぞれ。
573:デフォルトの名無しさん
08/01/06 20:39:56
>>572
恥ずかしくならない?
574:デフォルトの名無しさん
08/01/06 22:12:33
>>573
モレは恥だと思うから、
>モレだったら表面上では偉そうな態度取らんが、それは人それぞれ。
って事ね。
575:デフォルトの名無しさん
08/01/06 22:13:47
>>566 は氏ねばいいと思いま~~す。
576:デフォルトの名無しさん
08/01/06 22:25:42
>>574
そういうの偉そうに書いちゃうのは恥ずかしくないの?
577:565
08/01/06 23:12:00
私が初歩的な質問をしてしまったばかりにスレが荒れてしまっているみたいで
申し訳ありません。
一応自己解決したので参考までに私がとった手段を書いておきますね。
WMIと言うのは一応調べてみたのですが、イマイチよく分からなかったので
WScript.CreateObject("WScript.Shell").Exec を使って
reg.exe を呼び出す事で処理しました。
reg query キー
とやると、指定したキー内の"名前", "種類", "データ"が全て列挙されるので
1行1行InStr関数にかけて目的のレジストリデータが存在するかどうかを調べる手段を
取りました。一瞬コマンドプロンプトの画面が立ち上がってくるのがちょっと気になりますが
これなら私にもかけました。
アドバイス下さった方、ありがとうございました。
578:デフォルトの名無しさん
08/01/06 23:24:39
>>576
楽しそうだね。
579:デフォルトの名無しさん
08/01/07 00:07:34
>>577
URLリンク(msdn2.microsoft.com)(VS.85).aspx
URLリンク(www.microsoft.com)
580:デフォルトの名無しさん
08/01/07 12:33:33
>一瞬コマンドプロンプトの画面が立ち上がってくるのがちょっと気になりますが
出てこなくする方法もあるけど
それが出ないのが気に入らないっていうひともいるだろうね
581:デフォルトの名無しさん
08/01/07 13:08:42
>>580
おお、そうなんですか?参考までに出てこないようにする方法を教えて頂けませんか?
IEの場合は
objIE.Visible = False
すれば見えなくなりますが、コマンドプロンプトの場合どうするんだろう・・・
582:デフォルトの名無しさん
08/01/07 16:36:53
cmd /?
583:デフォルトの名無しさん
08/01/08 01:46:31
>>562
どれをハズれと言ってるのかよくわからんのだが
まああれだ。
MSがいくら宣伝しても
VBSを使ってる人間は少数派。
というかもはや滅亡の道を歩んでおる
VBS < 壁 < javascript
.NET < 壁 < java
パワーシェル < 壁 < Perlなど
って事だ。
将来性を考えるんなら>>557もVBSはスルーして
JSにしときな
584:デフォルトの名無しさん
08/01/08 02:24:01
でもな、VBSのほうが断然早いんだ。特に配列。
たまにByRef受け取りなパラメータもあったりするし。
585:デフォルトの名無しさん
08/01/08 04:32:21
fsoで移動先に同名フォルダがある場合について質問です。
c:\test\test
というように同じフォルダ名で入れ子になっている環境で、
explorer上でc:\test\testを切り取り、c:\test内で貼り付けて上書きすると
二つのフォルダ内容が融合されますが、これをfsoで実現しようとしています。
Moveは移動先に同名アイテムが存在していてはダメということなので、
まずc:\test\testの中身を先にc:\testに移動させ、
c:\test\testが空になったら削除する。
この際に、
c:\test\test\foo.txt
c:\test\foo.txt
というように移動先のフォルダに同名ファイルが存在した場合、
まずc:\test\foo.txtを削除し、c:\test\test\foo.txtをc:\test\foo.txtに移動させる。
さらに同名フォルダの場合はそれぞれについて再帰的に処理していく。
というような手順を踏まなければならないのでしょうか?
もっとシンプルな方法があるなら教えてくれませんか?
586:デフォルトの名無しさん
08/01/08 05:09:32
>>585
質問は日本語でおねがいします
587:デフォルトの名無しさん
08/01/08 07:09:21
モールスぬるぽ銃乱射 URLリンク(www6.ocn.ne.jp)
1TGBIT ガッガッガッガッドガガッガッ!!!!!
>z/':y★r” ドガガガガガッ ∴ ∧変∧
ル%#*゚∀)___。 \从/ _ _ _☆_ _★∴*.`Д´)/
ノハ つ∞【〔ロ=:(∈(二(@ >‐― ‐★‐―☆∵*;:*; /
∧★∧
(*゚∀゚)φ―・ ・― ― ―・・― ・・―→ (モールスでガッ!)
588:604
08/01/08 07:47:55
>>585
CopyFolderとかなら上書きに関するパラメータがあるみたいだけど。
なんでMoveにはないのかね?
589:604
08/01/08 07:49:08
未来からきてすみません
590:デフォルトの名無しさん
08/01/08 08:23:31
>>583
残念ながらハズレです
591:585
08/01/08 13:46:21
>>586
(´・ω・`)
>>588
なんでですかねー? >Moveの上書きパラ
CopyFolderの場合はあくまでCopyなので、後でコピー元を削除するとしても、
一時的に同一アイテムが階層違いで存在してしまうことになってしまいます。
この方法だとサイズの大きいアイテムのときに問題が出てきます。
となると、移動先の同名アイテムを先に削除してから移動させる、
という選択肢しかなくなってしまうと思うんです。
しかしそれがどう考えても複雑な処理になってしまう。
みなさんどうやってるんですか?
592:デフォルトの名無しさん
08/01/08 14:18:12
CopyFolder には上書きオプションがあって
Move には無い。
どこか抜けてるところが、いかにもマイクロソフトらしい。
593:デフォルトの名無しさん
08/01/08 14:31:42
moveは内部renameなのでrenameに上書きがないから
594:デフォルトの名無しさん
08/01/08 15:01:03
>>591
ShellオブジェクトのFolderオブジェクトを使えばできた。
以下、"F:\temp\test\test"を"F:\temp\test"へ上書きするサンプル。
Set objShell=Wscript.CreateObject("Shell.Application")
set objFol = objShell.NameSpace("f:\temp")
call objFol.MoveHere("f:\temp\test\test", &H10)
595:585
08/01/08 15:54:53
>>594
動作確認できました。
ありがとうございますm(_ _)m
しかしこのMoveHereって移動エラー発生時点で処理が中断されるっぽいですね。
スキップさせるにはやっぱり自分で書くしかないですね。
MoveHere.VBS
URLリンク(www.vector.co.jp)
けっこうみんな苦労してるっぽい
URLリンク(www.roy.hi-ho.ne.jp)
596:デフォルトの名無しさん
08/01/08 16:15:45
>>595
FolderItemオブジェクトのInvokeVerb使って、
"切り取り(&T)"して"貼り付け(&P)"という手もあると思いますが・・・。
まあ、エラーが出れば止まるのは同じでしょうね。
597:デフォルトの名無しさん
08/01/08 16:46:24
shellのmoveはcopy+deleteだから
598:デフォルトの名無しさん
08/01/08 16:52:30
fsoで
if folderexists then deletefolder
movefolder
がいいんじゃないの
on error使ってもいいけど
599:585
08/01/08 17:26:35
>>596
それって裏でMoveHereが動いてるのでは?
>>597
そのようですね。いろいろ実験してると分かりました。
>>598
それだとフォルダとフォルダのマージにはならないような。
移動先のかぶってないファイルも削除されてしまう。
600:デフォルトの名無しさん
08/01/08 17:29:09
movefileでぐるぐる
601:デフォルトの名無しさん
08/01/08 21:50:28
> まずc:\test\foo.txtを削除し、c:\test\test\foo.txtをc:\test\foo.txtに移動させる。
> さらに同名フォルダの場合はそれぞれについて再帰的に処理していく。
ファイル名とフォルダ名が同じだったらどうするんだろ
602:デフォルトの名無しさん
08/01/08 21:58:05
すきにしてくれ
603:デフォルトの名無しさん
08/01/08 22:24:30
つrobocopy.exe
604:585
08/01/09 06:53:12
>>601
そのへんは考えてあります。
MoveHereの標準動作を見ると
移動先に同名アイテムがない → 移動
移動元:ファイル → 移動先:ファイル → コピー先削除 → 移動
移動元:ファイル → 移動先:フォルダ → エラー(中断)
移動元:フォルダ → 移動先:ファイル → エラー(中断)
移動元:フォルダ → 移動先:フォルダ → マージ(再起処理へ)
ということみたいですが、
ファイル-フォルダ、フォルダ-ファイルの場合の中断は問題があるので
ダイアログでも出すか、スキップするかで対応。
605:デフォルトの名無しさん
08/01/09 16:41:28
cronNTで動かすスクリプトはネットワーク上のファイルにはアクセス出来ないのでしょうか?
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
WScript.Echo((objFSO.DriveExists("\\\\Server\\SharedDocs")).toString());;
というスクリプトをcronNTで動かした場合、falseになります。
606:デフォルトの名無しさん
08/01/09 18:12:05
DriveExists?
607:デフォルトの名無しさん
08/01/09 20:35:09
>>605
それ、cronNTじゃない環境では動くの?
608:デフォルトの名無しさん
08/01/09 23:44:50
>>606
URLリンク(msdn.microsoft.com)
>>607
コピペミスで2行目に ; が1個余分に付いてしまったorz
foo.js というファイル名で保存して、コマンドプロンプトから cscript で実行させれば動きます。
共有フォルダに置いてあるDLL(AutoItX3.dll等)を regsvr32 した後、スクリプト中で
ActiveXObject() して使おうと思い、コマンドプロンプトからの動作確認ではうまく動いたので
cronNT に起動スケジュールを書いておいたら動いてはくれず、色々と調べていたら
共有フォルダへのアクセスに失敗している事が分った次第です。
もし、cronNT が原因で他の類似ソフトでは再現しない問題なら他に良い物が有れば
それに乗り換えようとも思ってます。
ただ、VMware Player の中で動かしている都合
(無料版はディスクイメージの容量を後から大きくするツールが付属しない)で、
しかも既に残り容量にも余裕が全く無い為、
Windows Services for UNIX Version
URLリンク(www.microsoft.com)
の様なのでは無く、もっと軽い物でないと無理です。
609:デフォルトの名無しさん
08/01/10 01:57:32
cronNT類似とか関係なく、例えばWSHとかHTML, HTAなど
他のActive Script実行環境でやるとどうなるか試してみろ。
610:デフォルトの名無しさん
08/01/10 09:00:52
>>608
ちょっとかなりスレ違いっぽいが
cronNTサービスのプロパティを開いて
ログオンをローカルシステムアカウントから自分のアカウントに変えてみて
611:デフォルトの名無しさん
08/01/10 11:28:47
Aというディレクトリに a,b,c,d,e というファイルがありました
それをBというディレクトリにmoveしますが途中で終了してしまい
a,b,cまでしかmoveされませんでした
その後もう一度AをBにmoveしたところ上書きしますか?と聞かれたので
「はい」で最後まで完了したのですがBのナカミを見たところ
d,eしかありませんでした
あるOSで実際に起こった出来事です
612:デフォルトの名無しさん
08/01/10 13:53:18
で?
613:デフォルトの名無しさん
08/01/10 15:46:01
>それをBというディレクトリにmoveしますが途中で終了してしまい
「それ」 とは何か。具体的に書け。
614:デフォルトの名無しさん
08/01/10 16:54:33
>「それ」 とは何か。具体的に書け。
単数形だから「Aというディレクトリ」じゃね
615:デフォルトの名無しさん
08/01/10 17:24:00
>611
最初のmoveにより、ディレクトリAからファイルa,b,cが消えた。
その状態でディレクトリAを再びmoveさせれば、ディレクトリBにファイルd,eしかないのも別におかしくないだろ。
616:デフォルトの名無しさん
08/01/10 20:57:58
普通はディレクトリとその中身のファイルは別だからねぇ。
ディレクトリを移動(上書き)というのはディレクトリ自体の移動ではなく中身の移動のことだし。
中身の移動であるという観点から見れば、上書きが発生すること自体おかしな話だわな。
617:デフォルトの名無しさん
08/01/10 21:32:01
なぜ 「それ」 が問題なのかというと、
Aというディレクトリを move せずに
a,b,c,d,e というファイルを move すればよかったんだよ。
「それ」 が A なのか a,b,c,d,e なのかで結果が違ったんだね。
618:デフォルトの名無しさん
08/01/10 21:57:15
Macはどうでもいいよ。
619:デフォルトの名無しさん
08/01/11 17:16:43
a,b,c,d,e なら「それら」だろ
620:デフォルトの名無しさん
08/01/11 20:19:27
>>611
ご愁傷さま
621:デフォルトの名無しさん
08/01/11 20:56:54
URLリンク(www.microsoft.com)
を JScript に移植したくて以下のように書きましたが、実行すると
xxx.js(4, 1) SWbemServicesEx: 無効なクエリです。
というエラーで止まってしまいます。
どこが間違っているでしょうか?
var strComputer = ".";
var objWMIService = GetObject("winmgmts:\\\\" + strComputer + "\\root\\CIMV2");
var colMonitoredEvents = objWMIService.ExecNotificationQuery(
"SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " +
"Targetinstance ISA 'CIM_DirectoryContainsFile' and " +
"TargetInstance.GroupComponent= " +
"'Win32_Directory.Name=\"c:\\\\scripts\"'");
while (true)
{
var objLatestEvent = colMonitoredEvents.NextEvent;
WScript.Echo(objLatestEvent.TargetInstance.PartComponent);
}
622:デフォルトの名無しさん
08/01/11 20:58:28
>>611
次から気を付けようなw
623:デフォルトの名無しさん
08/01/11 20:59:57
>>622
ここが間違ってる
var colMonitoredEvents = objWMIService.ExecNotificationQuery(
"SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " +
"Targetinstance ISA 'CIM_DirectoryContainsFile' and " +
"TargetInstance.GroupComponent= " +
"'Win32_Directory.Name=\"c:\\\\scripts\"'");
624:621
08/01/11 21:09:46
>>623
すみません、書き方が悪かったです。
どこが間違ってるかはエラーメッセージが教えてくれているのでわかってました。
どう直せばいいんでしょうか?
625:デフォルトの名無しさん
08/01/11 21:41:29
デバッグくらい自分でしろ~
他人に投げるな~~
626:デフォルトの名無しさん
08/01/11 21:42:52
var colMonitoredEvents = objWMIService.ExecNotificationQuery(
"SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE "
+ "Targetinstance ISA 'CIM_DirectoryContainsFile' and "
+ "TargetInstance.GroupComponent= "
+ "'Win32_Directory.Name=\"c:\\\\\\\\scripts\"'");
627:デフォルトの名無しさん
08/01/11 22:38:22
wwww
628:621
08/01/15 17:17:28
>>626
ありがとう
629:デフォルトの名無しさん
08/01/18 06:33:04
CreateObject("ADODB.Stream")
上記でエラーがでます。
おそらく、ファイルが必要だと思うのですが、
それはどうやったら手に入りますか?
630:デフォルトの名無しさん
08/01/18 07:29:28
>>629
とりあえずエラーの内容書いてみ
631:デフォルトの名無しさん
08/01/18 21:42:53
>>629
MSからダウンロードに決まってるだろ
632:デフォルトの名無しさん
08/01/18 22:22:49
標準で入ってない環境、まだあったっけ?
633:デフォルトの名無しさん
08/01/19 09:49:15
FileSystemObjectとか称してテキストファイルの読み書きしか出来ないの?
fread,fwriteとかseekのメソッドを提供してるクラスって無いの?
634:デフォルトの名無しさん
08/01/19 09:59:08
出来ない
ADODB.Stream
635:デフォルトの名無しさん
08/01/19 15:46:30
ADODB.Stream ってファイル全体をいっぺんに読み込んでしまうよね?
デカイ動画ファイルの 最初の数バイトだけ 読み込んで処理したいけど
ファイル全体を読み込んでしまうため時間がかかってしょうがない。
何か良い手は無いですか?
636:デフォルトの名無しさん
08/01/19 16:18:25
FileSystemObjectで読む
637:デフォルトの名無しさん
08/01/19 22:25:52
PowerShellやC#に逃げる
638:デフォルトの名無しさん
08/01/20 01:04:11
↑
自分の殻に閉じこもる現実逃避型。
639:デフォルトの名無しさん
08/01/20 01:25:31
debugでダンプする
640:デフォルトの名無しさん
08/01/20 17:01:36
殻=shell
641:デフォルトの名無しさん
08/01/20 22:13:18
basp21
642:デフォルトの名無しさん
08/01/20 22:46:52
客先のPCにbasp21がインストールしてあれば苦労しないよ
643:デフォルトの名無しさん
08/01/20 23:24:23
スクリプトをインストール(=使用準備なので何処かのディレクトリにスクリプト置くだけでインストールになる)は可能なのに
COMコンポーネントのインストールは不可なんて馬鹿げたことを言い出すような低レベルな奴など相手にするな
こんなこと言い出すのは、嫌レジストリ厨とか"インストール"の意味を分かってない奴とか、相当な初心者の類だが、
もし"客先"ってのが会社なら、そんな奴がシステム管理においての権限を持ってるなんてゾッとしないねw
まあそれ以前にWSHスクリプトを外注する会社ってのもアレだけどw
644:デフォルトの名無しさん
08/01/20 23:37:16
FileSystemObjectなら使えるだろうに、なぜ使わん?
645:デフォルトの名無しさん
08/01/21 00:12:46
スクリプトの中で COM みつからなかった初回のみ regsrvr32 すれば?
646:デフォルトの名無しさん
08/01/21 00:14:43
>>635
> デカイ動画ファイルの 最初の数バイトだけ 読み込んで処理したいけど
とのことだ。
バイナリは無理だろ。
647:デフォルトの名無しさん
08/01/21 00:15:20
>>646 は >>644 へのレスね。
648:デフォルトの名無しさん
08/01/21 01:28:09
OpenBinaryFile()
649:デフォルトの名無しさん
08/01/21 01:50:38
> バイナリは無理だろ。
何が?
650:デフォルトの名無しさん
08/01/21 01:55:19
FSOでってことだろ
651:デフォルトの名無しさん
08/01/21 04:47:12
ForBinaryReading
652:デフォルトの名無しさん
08/01/21 10:21:14
それは今回の用途とは違うわけで
653:デフォルトの名無しさん
08/01/21 16:21:14
baspをbase64してwsfに入れて実行時に登録
654:デフォルトの名無しさん
08/01/21 16:36:19
すなおにVBで作って納品46
655:デフォルトの名無しさん
08/01/23 01:59:20
VBSファイルごとにアイコン変える方法おすえて
656:デフォルトの名無しさん
08/01/23 02:11:42
>>655
ショートカット作って、ショートカットのアイコン変えるとか
657:デフォルトの名無しさん
08/01/24 21:41:26
そういうアイコンハンドラを使えばいいんじゃね
なければ作ればいいんじゃね
658:sage
08/01/31 00:57:14
1.WSHを使って指定URLをIEから立ち上げる
2.(1)のURLのHTMLに含まれるjavascriptを解析して
自動で実行したい
WSHで1.はできると思うのですが、2はできますでしょうか?
できるのであればヒントを教えていただけぬか
659:デフォルトの名無しさん
08/01/31 00:59:05
HTMLDocument
660:デフォルトの名無しさん
08/02/01 20:30:46
最近 WSH を始めた者です。
WSHShell の Run メソッドでアプリを起動して使おうとしているんですが、
普通にアイコンをダブルクリックして起動した場合と挙動が違って困っています。
とりあえずわかったことは、そのアプリは ¥Document and Settings¥ユーザ名¥
Application Data¥アプリ名 以下に一時ファイルを作るんですが、WSH から
起動した場合ファイルが生成されないようです。
WSH の場合でもちゃんと走るようになる為には何か別途設定がいるのでしょうか?
今は基本的に WSHShell.Run(アプリのバス, 4, True) を呼んでるだけです。
661:デフォルトの名無しさん
08/02/01 21:42:20
>>660
カレントディレクトリを設定しろ
設定仕方はWSHヘルプに載ってるので嫁
662:デフォルトの名無しさん
08/02/02 07:34:31
>>661
どうもです。
>WSHヘルプ
すみません、実はこれが何を指すのか分からん程度なんですがw
>カレントディレクトリを設定しろ
URLリンク(msdn.microsoft.com)
によると CurrentDirectory というプロパティがあるそうなのでこれを適宜セット
する、で正解ですか?
で、できたらどんな値にセットするかも教えていただけると助かるのですが...
もしかしたらWSHヘルプというものにそれが書いてあるんでしょうか。
逆に考えると、普通にダブルクリックで起動したアプリではカレントディレクトリが
適宜セットされているから動く、ということでしょうか? もしそうなら一体どんな値になって
いる? という疑問がわきますが...
663:デフォルトの名無しさん
08/02/02 08:38:11
右クリック-プロパティ
664:デフォルトの名無しさん
08/02/02 09:38:40
通常はダブルクリックしたものがあるディレクトリがカレントディレクトリとなる。
665:デフォルトの名無しさん
08/02/02 11:10:49
>>662で言ってる CurrentDirectoryって Windows2000にデフォルトで入ってるWSHでは
動きませんよねぇ。なんか代替のメソッド無いですかね?
666:デフォルトの名無しさん
08/02/02 13:14:22
>>665
Win2Kでも、WSH5.6なら、("Wscript.Shell").CurrentDirectryが使える。
インストール直後のバージョンは、どうだったかな‥
古いWSHでも、("Wscript.Shell").Run """ショートカットファイル.lnk""",,False なら
問題ない。False設定しか使えなくなっちゃうけども。
Wscript.ScriptFullName のほうは今回無関係ですかね。
667:デフォルトの名無しさん
08/02/02 16:33:34
そのスクリプトファイルのショートカットを作って作業フォルダを設定しろ
668:デフォルトの名無しさん
08/02/03 02:07:27
WSHでファイルを読み取り専用に変えることはできますでしょうか?
669:デフォルトの名無しさん
08/02/03 02:20:08
readonly属性をつけることならできるな
670:デフォルトの名無しさん
08/02/03 03:43:53
>>669
それです。教えてください。
671:デフォルトの名無しさん
08/02/03 17:41:54
Attributes=1
672:デフォルトの名無しさん
08/02/03 18:09:40
ヘルプみろ
673:662
08/02/04 06:06:35
>>664
なるほど。その値でうまくいくようです。ありがとうございます、
674:デフォルトの名無しさん
08/02/06 16:53:29
質問です。
現在、VBSCriptで各ディレクトリのアクセス権限を
テキストに書き出す仕組みを作成しています。
コマンドは下記のようになっております。
CACLS <ディレクトリ名> >> <出力ファイル>
ディレクトリ名、出力ファイル名はパラメータとして受け取り、
文字列を結合してWshShell.Runに渡しております。 ・・・【1】
ここで問題なのですが、【1】の文字列をコピペして
DOSプロンプトで実行すると、正しく出力がされているのですが、
WshShell.Runにて実行すると、正しく出力されません。
この部分のコードは下記のようになっております。----------*
Command = "CACLS " & DIRName & " > " & ExportFileName
objShell.Run Command ' WShellオブジェクトは生成済み
--------------------------------------------------------*
恐れ入りますが、どなたかこのような現象を経験されておりましたら、
解決策の指南のほどよろしくお願いいたします。
675:デフォルトの名無しさん
08/02/06 18:26:05
>WShellオブジェクトは生成済み
ソース全部貼るべき
「・・・【1】」って違う場所に書いてない?
676:デフォルトの名無しさん
08/02/06 18:27:44
>WshShell.Runにて実行すると、正しく出力されません。
とはどうなるのだ?
677:デフォルトの名無しさん
08/02/06 19:11:25
Set objShell = WScript.CreateObject("WScript.Shell")
Command = "CACLS %cd% > out.txt"
objShell.Run Command
これで試してみたけど、うまくいかないね。
Command = "cmd /c cacls~
ではうまくいくけど。
678:デフォルトの名無しさん
08/02/06 20:04:10
%windir%\system32\cacls.exeと指定したらどう?
679:デフォルトの名無しさん
08/02/06 21:50:01
リダイレクトはシェル(cmd.exe)の機能。
680:デフォルトの名無しさん
08/02/07 06:34:50
フルパス指定でも無理
681:674
08/02/07 09:15:53
皆さんご回答ありがとうございます。
>>WshShell.Runにて実行すると、正しく出力されません。
>とはどうなるのだ?
パラメータ無しで実行したCACLSのように、ヘルプが表示されます。
経過ですが、
>>677さんの"cmd /c cacls~"で試してみたところ、うまくいきました。
大変お世話になりました。
682:デフォルトの名無しさん
08/02/08 12:25:55
タクススケジューラの引数について質問です。
Windowsタクススケジューラで設定した引数が渡ってこない(WScript.Arguments.Count = 0)のです。
同じパス(コマンドライン)で作ったショートカットを実行すると引数が渡ってくる(WScript.Arguments.Count > 0 )のです。
実際に試した記述は、「c:\test.vbs abc」と「c:\test.vbs "abc"」と「"c:\test.vbs abc"」です。
何か特別な記述方法などあるのでしょうか?
先輩方、よろしくご教授ください。
683:デフォルトの名無しさん
08/02/08 13:36:44
cmd /c c:\test.vbs abc
684:デフォルトの名無しさん
08/02/08 15:31:49
先輩!ありがとうございました!
685:デフォルトの名無しさん
08/02/08 21:29:01
ファイルをドラッグアンドドロップしたらパスを表示するスクリプトが動きません。
どこを直せばよいか教えてください。
var strArgument = new Array();
if ( WScript.Arguments.count() == 0 ) {
WScript.Echo ("コマンドライン引数が指定されていません。");
}
else {
for ( strArgument in WScript.Arguments ) {
WScript.echo ( strArgument[i] );
}
}
686:685
08/02/08 21:37:42
スクリプトをダブルクリックした時は正常作動しますが
ファイルをドロップすると何も表示されません。
スクリプトエラーも出ないので困っています。
687:デフォルトの名無しさん
08/02/08 22:03:46
コマンドライン引数が指定されているからに決まってるだろ
688:デフォルトの名無しさん
08/02/08 22:04:54
var strArgument = new Array();
if ( WScript.Arguments.count() == 0 ) {
WScript.Echo ("コマンドライン引数が指定されていません。");
}
else {
WScript.Echo ("コマンドライン引数が指定されました。");
}
689:デフォルトの名無しさん
08/02/08 22:18:40
for ( strArgument in WScript.Arguments ) {
WScript.echo ( strArgument[i] );
}
これ、なにしてるの?
690:デフォルトの名無しさん
08/02/08 22:42:40
>>688
var strArgument = new Array();
これ、なにしてるの?
691:デフォルトの名無しさん
08/02/08 22:52:48
URLリンク(msdn.microsoft.com)
692:デフォルトの名無しさん
08/02/08 23:25:21
>>685
// var strArgument = new Array();
if ( WScript.Arguments.count() == 0 ) {
WScript.Echo ("コマンドライン引数が指定されていません。");
} else {
for (i = 0; i < WScript.Arguments.length; i++ ) {
WScript.echo ( WScript.Arguments(i) );
}
}
.vbsファイルしか作った事がないけど、なんとなく.jsファイルはこれで動くんじゃないかなぁと・・?
693:デフォルトの名無しさん
08/02/08 23:56:38
>>692
> if ( WScript.Arguments.count() == 0 ) {
count はメソッドじゃなくプロパティ。
694:デフォルトの名無しさん
08/02/09 00:10:28
>>693
えー?
695:685
08/02/09 00:12:24
>>692
動きました。ありがとうございます。
只今WSHをJScriptで書こうと、vbsのスクリプトを翻訳しながら勉強中です。
でもJSのサンプルコードが少なくて困ってました。
今回は元コードに配列を使っているように見えたので、それらしく書き換えたけど動きませんでした。
なんでここまで違いが出るのか、まだ理解してませんw
↓元のサンプルコード
Option Explicit
Dim strArgument
If WScript.Arguments.Count = 0 Then
WScript.Echo "コマンドライン引数が指定されていません。"
Else
For Each strArgument In WScript.Arguments
WScript.Echo strArgument
Next
End If
696:デフォルトの名無しさん
08/02/09 00:28:24
>>695
実際にはいろいろな書き方ができるので、余計に混乱してるのかも。
元のスクリプトになるべく忠実に対応させるなら、以下のような書き方もできる。
if (WScript.Arguments.length == 0) {
WScript.Echo("コマンドライン引数が指定されていません。");
}
else {
var e = new Enumerator(WScript.Arguments);
for (; !e.atEnd(); e.moveNext()) {
WScript.Echo(e.item());
}
}
697:デフォルトの名無しさん
08/02/09 00:31:07
for (var e = new Enumerator(WScript.Arguments); !e.atEnd(); e.moveNext()) {
すっきり
698:デフォルトの名無しさん
08/02/09 00:41:48
>只今WSHをJScriptで書こうと、vbsのスクリプトを翻訳しながら勉強中です。
なぜ?遅いのに。いろいろ細かいことにうるさいのに。などなど
699:デフォルトの名無しさん
08/02/09 01:35:29
マイクロソフトの公用言語はBASIC
ゲイツはBASIC長者
java には裁判で負けた恨みが有る
700:デフォルトの名無しさん
08/02/09 09:13:38
WSHは使うけど、今はもうVBScriptでは書かないなあ。
JavaScript(JScript)のある意味変態的な言語仕様に慣れてしまったら戻れない。
701:デフォルトの名無しさん
08/02/09 14:37:22
↑
変態
702:693
08/02/09 15:58:20
>>694
> >>693
> えー?
といわれてMSDN見てきた。
URLリンク(msdn.microsoft.com)
プロパティとメソッド、両方あるな……。
ふだんはJScriptで length 使うか Enumerator にして扱ってるんで、
確認不足で適当に書いてしまった。スマソ
703:デフォルトの名無しさん
08/02/09 16:38:49
>プロパティとメソッド、両方あるな……。
プロパティを見るとメソッドになってて、メソッドしかないような
704:デフォルトの名無しさん
08/02/09 17:18:48
動きさえすればどっちでもいいよ
705:デフォルトの名無しさん
08/02/09 17:22:03
with (WScript.Arguments) {
WScript.Echo(Count());
WScript.Echo(length);
WScript.Echo(Count); // エラー
}
706:デフォルトの名無しさん
08/02/09 20:48:58
basp21のsocketって非同期通信できませんか?
データ取得できたらコールバック関数を呼びたいんですが。
接続できなかった場合とかタイムアウトになるまで
他の処理ができない
707:685
08/02/09 23:10:36
昨日教えてもらったスクリプトを、テキストに出力しようとしたら働きません。
また教えてください。
var objFso = new ActiveXObject("Scripting.FileSystemObject");
var objFile = objFso.OpenTextFile("testdirlist.txt", 8, true);
var path String();
objArgs = WScript.Arguments;
for (i = 0; i < objArgs.length; i++)
{
path = path + objArgs(i) + "\n";
}
//WScript.Echo(path);//←働く
objFile.WriteLine(path);//←働かない
objFile.Close();
708:685
08/02/09 23:13:59
×var path String();
○var path = String();
709:デフォルトの名無しさん
08/02/09 23:46:55
絶対パスにすれば
710:デフォルトの名無しさん
08/02/10 00:18:19
var path = "";
で
711:685
08/02/10 00:30:39
>>709
動きました!
712:デフォルトの名無しさん
08/02/11 12:28:54
WSH 5.1(Win2k)環境でカレントディレクトリを変更したいのですが
Set foo = WScript.CreateObject("WScript.Shell")
foo.CurrentDirectory =
と言った.CurrentDirectoryプロパティはWSH 5.6(WinXP)以降の環境でしか動作しません。
もちろんWin2kのWSHをバージョンアップすれば動くのですが、それは手間がかかる為
やらずに解決したいと思っています。
やりたい事は、WSHスクリプトファイル(仮にhoge.vbs)と同じ階層に scriptと言うフォルダがあり、
そのフォルダの中に var.bat と言うファイルがあるとして
Set objShell = WScript.CreateObject("WScript.Shell")
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(".")
objShell.Run f.path & "\script\var.bat"
等として、他のフォルダ内の実行ファイルを実行したいのです。
しかし実際にコレをやると、指定されたファイルが見つかりません とエラーが表示されて実行できません。
確かにファイルは存在しますし、WScript.Echo f.path & "\script\var.bat" とかやってパスを確認しても
正しいパスです。
なので、カレントディレクトリを実行ファイルのある場所に移動しないと実行できないのかなと
考え、CurrentDirectoryを変更する方法を考えているのですが・・・
普通に考えてCurrentDirectoryを変更せずとも実行できるはずですよねぇ・・アドバイス頂けませんか?
713:デフォルトの名無しさん
08/02/11 12:37:49
パスをだぶるくぉーてーしょんで囲みなさい
714:デフォルトの名無しさん
08/02/11 14:26:29
>>713
レスありがとうございます。
strDrv = strCurrent & "driver\install.bat"
↑これで、カレントディレクトリ\driver\install.bat がstrDrv に入ります。
その後
objWshShell.Run strDrv
で、今までは出来ませんでした。なのでこれを" " で囲みます
objWshShell.Run "strDrv"
しかしこうすると、strDrvと言う文字列を起動しようとしてしまい、strDrvが変数として扱われず
単なる文字列として扱われるため動作しません。
objWshShell.Run ""strDrv""
として、"をエスケープしてみてもだめ~ とか考えてたら
strDrv = strCurrent & "driver\install.bat"
strDrv = """" & strDrv & """"
WScript.Echo strDrv
objWshShell.Run strDrv
これでいけました。最初の"が文字列の開始、 中2つの"が 文字列としての純粋な"を表し
(""で"を単なる文字列としてエスケープ)、最後の"が文字列の終了を表すダブルクォート・・・
結局 """" となり、非常に分かりにくいというか、混乱する形になったのですが、こんなもんなんでしょうか?
715:デフォルトの名無しさん
08/02/11 14:47:54
こんなもんです
716:デフォルトの名無しさん
08/02/11 16:13:45
>>714
Python がお勧め
717:デフォルトの名無しさん
08/02/11 16:15:22
strDrv = Chr(18) & strDrv & Chr(18)
718:デフォルトの名無しさん
08/02/11 17:42:26
>Set f = fs.GetFolder(".")
>objShell.Run f.path & "\script\var.bat"
objShell.Run ".\script\var.bat"
719:デフォルトの名無しさん
08/02/11 18:10:32
>>716
>>712
720:デフォルトの名無しさん
08/02/11 23:38:48
>>714
C言語やjavaだって "\"" みたいな、「たいへん分かりにくい混乱する表記」
になるから、こんなもんです。
もし、コードをスッキリさせたかったら、
Const QQ = """"
strDrv = QQ & strDrv & QQ
もしくは
strDrv = Q( strDrv )
Function Q(ByVal str)
Return """" & str &""""
End Function
みたいな方法がありますよ。(自分は後者をよくつかう)
721:デフォルトの名無しさん
08/02/12 01:25:32
Chr(34)は?
722:デフォルトの名無しさん
08/02/12 07:40:18
"自分は後者をよくつかう"って、使えるの、それ?
723:デフォルトの名無しさん
08/02/12 16:41:25
うん
724:デフォルトの名無しさん
08/02/12 16:56:37
>みたいな
コードはイメージです
725:デフォルトの名無しさん
08/02/12 20:18:12
>>724
実際のコードとは異なる場合があります。
726:デフォルトの名無しさん
08/02/12 20:24:57
>>722
使えない
727:デフォルトの名無しさん
08/02/12 23:32:48
使わない
728:デフォルトの名無しさん
08/02/12 23:43:08
使われない
729:デフォルトの名無しさん
08/02/13 00:07:38
こんばんです。1つ質問させてください。
vbsでプログラムを組んでいるのですが、vbs親プログラムからvbs子プログラムを
起動は出来ないのでしょうか?
~~~~~vbs親プログラム内~~~~~~~~~
Set objWshShell = WScript.CreateObject("WScript.Shell")
strCmdLine = "sub_program.vbs str01 str02 "
objWshShell.Exec(strCmdLine)
この記述で「sub_program.vbs」を引数2つ与えて起動できると思うのですが出来ません。
尚、コマンドプロンプトで[sub_program.vbs str01 str02]実行すると正常に起動します
修正点がありましたらお教えいただけないでしょうか。
730:デフォルトの名無しさん
08/02/13 00:16:04
>>729
strCmdLine = "cscript sub_program.vbs str01 str02 "
または
strCmdLine = "wscript sub_program.vbs str01 str02 "
と記述する必要がある。
コマンドプロンプトでは、"たまたま" cscriptまたはwscriptが省略できる。
731:729
08/02/13 00:23:32
>>730
ありがとうございました。無事起動すること出来ました。
コマンドプロンプトでは"たまたま"省略可能なんですか・・・
732:デフォルトの名無しさん
08/02/13 07:49:15
という事はExplorerでアイコンをダブルクリックすれば起動するのも"たまたま"だね。
733:デフォルトの名無しさん
08/02/13 08:13:26
//H:でたまたまを切り替えられる。
734:デフォルトの名無しさん
08/02/13 09:19:40
どう考えても>>721が正解
735:デフォルトの名無しさん
08/02/13 16:36:06
たまたまだけど、これもできる
strCmdLine = "sub_program.vbs str01 str02 "
objWshShell.Run(strCmdLine)
736:デフォルトの名無しさん
08/02/13 21:57:32
>>735
おまえ、何も解ってないな
737:デフォルトの名無しさん
08/02/14 00:12:08
そうだな、解るように言ってやれ
738:デフォルトの名無しさん
08/02/15 21:53:59
var fso= WScript.CreateObject("Scripting.FileSystemObject");
var d = fso.GetDrive(fso.GetDriveName("Q:\\"));
if(d.IsReady){ ...
とやってDVD-ROMドライブが準備できているかどうか調べているのですが、
DVDを入れて認識している最中にIsReadyが実行されるとウィンドウズ自体が数秒止まってしまいます
バックグラウンドで動かしていてもフォアグラウンドアプリまで停止してしまうので困っているのですが
これを回避するにはどうしたらいいのでしょうか?
739:デフォルトの名無しさん
08/02/15 22:14:09
FSOで問題あるときはShell.Applicationを使ってみるのが定石
740:デフォルトの名無しさん
08/02/16 06:37:35
ドアラ グッドウィルドームに立つ!
再生:654,421 | コメント:123,256 | マイリスト:20,510
URLリンク(www.nicovideo.jp)
凄い勢いで踊るドアラ
再生:482,525 | コメント:28,129 | マイリスト:17,837
URLリンク(www.nicovideo.jp)
ドアラが異端になった経緯
再生:424,284 | コメント:36,521 | マイリスト:9,417
URLリンク(www.nicovideo.jp)
ドアラーズブートキャンプ
再生:241,338 | コメント:18,996 | マイリスト:7,229
URLリンク(www.nicovideo.jp)