お前ら、WindowsScripting使ってますか? Part3
>>917 print "<html>Hello world</html>"
WSHの勉強を始めようと思って、本を一冊買おうと思ってるんだけど
オススメの本ってある?
>>3の本は随分古いようなので、今はどうなのかなと思って。
ちなみにおいらは、バッチファイルはある程度書ける、という程度のレベルです。
920 :
919:04/10/29 23:53:57 ID:Ap0nYukH
>>5の本は古いし、VBScripばかりなんだよね
>>912 一週間も前だからもうみてないな。
どの時点で上手く行ってないのかがわからないけど、
スクリプトファイルにD&Dしたファイルが起動したQTで開けないってこと?
もしそうなら、QT起動時に引数として渡したらどうでしょ。
var file = WScript.Arguments.Unnamed.Item(0);
var oExec = WShell.Exec( "QuickTimePlayer" + " \"" + file + "\"" );
でもスクリプトにaviをD&DしてもWMPは起動しないし、外してるかな。
923 :
912:04/11/03 01:47:40 ID:PB9dmDR7
>>922 たまに覗いてます!
ありがとうございました。QTにAVIを送り込むことが出来ました!
>でもスクリプトにaviをD&DしてもWMPは起動しないし、外してるかな。
WMPにAVIが関連付けされてるんですが、そのせいでWMP上でAVIが
再生されちゃうんですよ…。うちの環境だけですかね…。
でも、何とかQTでAVIを開けました。
後は、キーを送るの箇所辺りを弄ってみます。
どうも上手く作動してないっぽいです。
924 :
912:04/11/03 02:45:25 ID:PB9dmDR7
立て続けにすみません。
>>922さんのおかげで、何とか1ファイルだけの処理を
上手くこなす事ができるようになりました。
有難うございます。
一つの処理時に次への実行を待機させるようなのは、
やはりSleepメソッドは無いでしょうか?
やたらSleep行が多いもので…。
これがクリアできたら、次は複数ファイルへの対応です!
ボチボチ調べながら自分自身でも頑張ってみます。
925 :
912:04/11/03 02:46:35 ID:PB9dmDR7
>Sleepメソッドは無いでしょうか?
Sleepメソッド以外は無いでしょうか?の間違いです。
スレ汚しスマソ
>912
複数ファイルスクリプトにD&Dして処理するのなら、
WScript.Arguments.Unnamed.lengthで名前なし引数の数を確認して
ループで順に取り出していけばいい。
>912のスクリプト、while(oExec.Status == 0) WScript.Sleep(1000); で
起動したQTPの終了を待ってるけど、その後さらにキーを送ってるから
ここのステータスチェックでのsleepはいらないんじゃない?
処理待ちSleepは、キーを送ってその処理待ちならSleepで待つしかないかな。
こんな表記も出来るのね。今日初めて知った。
Dim a(2)
a(0)=array(0,1,2)
a(0)(0)=10
msgbox a(0)(0) ' 10と表示
ショートカットのリンク先に引数足して、
そのショートカットにファイルをドロップすると、
ショートカットで足した引数が WScript.Arguments で取れないみたいなんですが、
これは仕様ですか?
ショートカットで足した引数の後ろにドロップしたファイルがきて欲しい。
バッチファイルならいけたのに。
>>928 ほんとだ、出来ない。
スマートじゃないけど
目的のスクリプトを引数付けて呼び出すスクリプトを書くとか?
930 :
912:04/11/08 04:43:08 ID:2YtLn7z3
>>926 レスありがとうございます。遅くなってすみません。
>WScript.Arguments.Unnamed.lengthで名前なし引数の数を確認して
>ループで順に取り出していけばいい。
初心者なんで、何を言われてるかチンプンカンプン状態ですが、
WScript.Arguments.Unnamed.lengthをヒントにやってみます。
>ここのステータスチェックでのsleepはいらないんじゃない?
そこのsleepは処置待ちでのスリープです。
後、起動時にも即時にキーを送ってるっぽいので、今のバージョンでは、
多数sleep入れてしまっております。
ご教授ありがとうございます!
931 :
名無し~3.EXE:04/11/09 04:46:23 ID:E7QupWoW
932 :
名無し~3.EXE:04/11/09 11:30:22 ID:yAu/BLvf
microsoftのwshのサンプルってどこにありますか?
ヘルプには
>Windows Script Host のサンプルをダウンロードするには
>Microsoft Windows Script Technologies の Web サイト (
http://www.microsoft.com/japan/) のナビゲーション ウィンドウ領域にある [Windows Scripting Host] をクリックします。
>メニューにある [ダウンロード] をクリックします。
>ダウンロード ページの [サンプル スクリプト (英語)] をクリックします。[ファイルのダウンロード] ダイアログ ボックスが表示されます。
と書いてありますがそんなページは見つかりません。
また他にもよいサンプルのおいてあるところがありましたら教えてください。
やりたいことは、ファイルとレジストリ操作、ダイアログの表示です。
933 :
名無し~3.EXE:04/11/09 17:50:10 ID:OHm2GMYi
すみません、質問なのですが
Set IE=Wscript.CreateObject("InternetExplorer.Application")
↑の場合の「InternetExplorer.Application」の部分は、どうやったら調べられるのですか?
935 :
名無し~3.EXE:04/11/09 23:03:44 ID:OHm2GMYi
>>934 レスありがとうございます。
win2000のサイトのようですが、このoleview.exeは、XP SP2でも使えますか?
まあまずは試してみ。
939 :
名無し~3.EXE:04/11/10 00:32:10 ID:dH38g6sq
WSHかバッチファイルでデスクトップのスクリーンショットを取って
bmpかjpgでファイルに保存することはできるでしょうか?
>>939 そういうCOMを探すより、そういうEXEを探したほうが早いでしょう。
941 :
935:04/11/10 00:59:55 ID:0IqHZxsT
>>938 どうもです。
>>934のをインストールしてみたら、「iviewers.dllがない」って言われたので
ネット検索して見つけだしてコピー、ついでにoldバージョンの日本語化パッチを見つけたので
一工夫して日本語化、そしてOleviewには検索機能がないらしく、見方を把握するのに
手こずっていたら、こんな時間になってしまいました。
ProgID というのが該当部分なのですね。分かってしまえば便利ですね。
というわけで、
>>934のはXP SP2でも問題なく動作しました。
>>938のリソースキットも面白そうなのでダウンロードしました。
ありがとうございました。
943 :
m:04/11/10 12:00:00 ID:PmMEJcSc
あるキー配下にあるキー名を取得したい場合ってどうするんですか?
具体的には
HKCU\Softwareの中にあるキーを片っ端からゴニョゴニョしたいんです。
ってか他のキーにもゴニョゴニョする事を考えいるので、配下のキーを全部・・・的な
動作を知りたいです。
Win98でもWMIを手動インストールはできるのか。知らなかった。
947 :
m:04/11/10 15:01:48 ID:PmMEJcSc
> 944-955
ぬおぉぉ、助かりました
まさにこんな動きです。
WMIって良く解らんかったので頭が回りませんでした。
948 :
名無し~3.EXE:04/11/10 16:14:53 ID:Qneit69U
レジストリを検索して特定の文字列を見つけたら削除するスクリプトなんて
WSHで実現できないでしょうか?
ファイルやレジストリキーの削除は検索して出来るようになったのですが、
量が多いとめんどくさいので検索機能を使って一気にやりたいのです。
>>948 > WSHで実現できないでしょうか?
できるよ。
すぐ上でやりとりされてるのを参考にすればいい。
//でもぶっちゃけ一気に数十台のマシンをとか言うんでない限りスクリプト書くより適当なレジストリエディタ使う方が早そうだが。
950 :
948:04/11/10 18:00:06 ID:u2p4OJfV
>>949 レスありがとうございます。
ちょっと前のやりとりを参考に読んで自分でできるか試してみます。
ちなみにそのレジストリエディタはどのようなものでしょうか?
Vectorでちょっと見てみたのですが、検索して削除ってのはWinに付属の
レジストリエディタとあまり変わらなかったみたいなので。
よかったら教えてください。
951 :
948:04/11/10 18:34:13 ID:0pHBdo5H
二つほど教えてください。
1、vbsの拡張子だと実行するファイルの拡張子をWSFにするとエラーになりますけど、
これは何か宣言すれば動作するようになるのでしょうか?
今まで実害が無かったのでずっとvbsのままにしていましたが気味悪いので。
2、もうひとつですが、ファイルの名前を今日の日付にしてあるファイルをコピーしたい
のですが、これはどうすればできますか?
ファイル操作は初めてでコピーのやり方や日付情報の取り方すら分かりません。
ここのログを検索してもファイルの削除の方法は書いてあったのですが、
コピーの方法はどこにも書いてありませんでした。
放置放置
まあ取りあえずMSDN読め。
Google使え。
MsgBoxでvbYesvbNo等以外にすること出来る?
例えば、4つぐらいのボタンを並べるとかやりたいんだけどYes No Cancel以外できなくて。
MsgBoxとはそんなもんだ。
簡単に出せるけど、できることが限られてる。
IEを起動して、MsgBox風の外観にして、
HTMLでボタンを並べて、入力結果を元のスクリプトに返してやればいい。
初心者が増えてきたな。良いことだ。
958 :
名無し~3.EXE:04/11/11 16:12:50 ID:fZTohmvy
空白のあるフォルダや実行ファイルに引数を送るときは通常
"""c:hoge\hoge.exe -x"""
でやるよね?
でも、フォルダ名や引数が場合によって変わるからどうしてもこの形式が
使えないんだけど、こういうときに空白のフォルダ名や引数を送るには
どうしたらいいの?
ショートカットを作るとなると大量になるのでそれも無理です。
できたら、Wscript.run "C:\"+hogedir+"hoge.exe " +hoge
見たいな形でできたらいいんだけど、これって無理ですか?
例も日本語もむちゃくちゃだが、適当に引数の前後に"を付け加えるQuote関数でも作るとか。
960 :
958:04/11/11 16:31:00 ID:CBKbTJ5A
""""で解決しました。すみませんでした。
961 :
名無し~3.EXE:04/11/11 18:28:40 ID:ENl8B5W0
わざわざ「2ちゃんのスレ」などと書く必要はないな。URL文字列の、とかなら分かるけど。
Split関数(VBScript)/splitメソッド(JScript)で文字列配列にして、
適切に処理して、
"/"なりなんなりを間に挟んで再結合とか。
//先頭の
ttp://は事前に削除しといた方がやりやすい。
963 :
名無し~3.EXE:04/11/12 11:26:57 ID:uCMuzyOf
961です。
やってみたのですが、どうしてもできません。
とりあえずURLを入力させて各要素をひとつずつ表示させようと
しているのですが、それすらできません。
lengthやsplitの使い方が間違っていると思うのですが、
どなたか教えていただけないでしょうか?
MSDNに当たっても
function SplitDemo(){
var s, ss;
var s = "The rain in Spain falls mainly in the plain.";
// スペースの位置で分割します。
ss = s.split(" ");
return(ss);
}
と言う例があるだけでそれを真似たのですが出来てないみたいです。
以下、ソース
Dim i,RURL,ss
RURL=inputbox("input URL")
ss=split(RURL,"/") 'ss=RURL.split("/")でも出来ず
for i=0 to ss.length 'ss.countなども試したが出来ず
msgbox ss[i]
next i
Wscript.Quit intMsg
>>963 VBScriptとJScriptがごっちゃになりまくってるね。
JScriptならsplitから返ってくるのがArrayオブジェクトなので、そのlengthプロパティを参照できる。
VBScriptだと、配列は配列なのでUBound関数を使って配列長を取得する必要がある。
大抵は、同じような機能をJScriptはオブジェクトベースで、VBScriptは関数ベースで解決しているから、
異なる言語のサンプルを見る時はそれに対応した自分の扱う言語上での表現に留意しないといけない。
あと、JScriptは配列要素へのアクセスは[index]だけど、VBScriptだと(index)になる。
965 :
名無し~3.EXE:04/11/12 13:57:16 ID:A+iYBMN8
NTFSのファイルストリームに格納されているコメントの取得と設定のやり方を教えてください。