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

このエントリーをはてなブックマークに追加
1名無し~3.EXE
こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通のOSだったら当たり前に備わっている自動実行。
Windowsの標準に備わっているそれがWSH(Windows Script Host)です。
また、ここではWSHだけに限らずWMI、ADSIなどのネタもOKです。

・煽りや荒らしは無視の方針で。基本的にsage進行です。

・ここでヒントを得て完成したスクリプトは、出来れば皆さんにお披露目してください。
 同じことで悩んでいる人のためになります。

・質問する際は、OS及び使用するコンポーネントのバージョンもお忘れなく。

●過去スレ
#1 http://pc.2ch.net/test/read.cgi/win/1009175619/
#2 http://pc2.2ch.net/test/read.cgi/win/1022248379/
#3 http://pc8.2ch.net/test/read.cgi/win/1058829737/
#4 http://pc8.2ch.net/test/read.cgi/win/1100489339/
#5 http://pc8.2ch.net/test/read.cgi/win/1126543183/
#6 http://pc11.2ch.net/test/read.cgi/win/1155040873/

その他 >>1-10 あたり
2名無し~3.EXE:2007/09/23(日) 21:03:13 ID:2RosR0QK
●便利なリンク
Windows Script
http://www.microsoft.com/japan/msdn/scripting/default.asp
MSDN Library (オンラインドキュメント)
http://msdn.microsoft.com/library/ja/
Windows Script 5.6 ドキュメント ダウンロード (exe 形式; 1.67 MB)
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/JA/scd56jp.exe
OLE/COM Object Viewer ダウンロード (exe 形式; 656 KB)
http://download.microsoft.com/download/win2000platform/oleview/1.00.0.1/NT5/EN-US/oleview_setup.exe

Sesame Script (スクリプト作成初心者向けコラム)
http://www.microsoft.com/japan/technet/scriptcenter/resources/begin/default.mspx
Hey, Scripting Guy! (スクリプトのQ&A・ハウトゥ集)
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/default.mspx
Windows管理者のためのWindows Script Host入門 (@IT内記事)
http://www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html
Windows XP に含まれるコマンドラインツールの紹介 (@IT内記事)
http://www.atmarkit.co.jp/fwin2k/xp_feature/013commandtool/commandtool.html
ADSI (Active Directory Service Interfaces) の特集記事全文
http://web.archive.org/web/20050309045811/http://www.galliver.co.jp/writing/nikkei_tokushu/wad002/index.html

●個人サイト
Windows Script Wiki
ttp://winscript.s41.xrea.com/wiki/index.php
趣味のJavaScriptなページ
ttp://homepage3.nifty.com/aya_js/
Windows Scripting Host Laboratory
ttp://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
Tips - (小技にも満たない)微ワザ集
ttp://www1.u-netsurf.ne.jp/~tomo_c/tips/Scr002.html
3名無し~3.EXE:2007/09/23(日) 21:11:50 ID:2RosR0QK
●コンポーネント関連リンク

○Microsoft 製外部コンポーネント
DCOM
(98/Me ※リンク切れ) http://www.microsoft.com/japan/com/dcom/dcom98/dcom13.asp
(95)  http://www.microsoft.com/japan/com/dcom/dcom95/dcom13.asp
MDAC - データベース・メールボックス・WebDAV・バイナリの操作
http://msdn2.microsoft.com/ja-jp/data/aa937730.aspx
WMI(95/98/NT4.0) - 統一されたコンピュータオブジェクト化モデルを提供するスクリプティングAPI、リモート管理
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=AFE41F46-E213-4CBF-9C5B-FBF236E0E875
ADSI - Active Dictoryの機能を操作
http://www.microsoft.com/downloads/details.aspx?FamilyID=f4bf2bf6-ed15-4789-9c63-e849d530a6df&DisplayLang=ja
MSXML - XMLパーサ、SAX・DOM API、XSLT変換、POST/HTTPダウンロード
http://www.microsoft.com/downloads/details.aspx?familyid=993c0bcf-3bcf-4009-be21-27e85e1857b1

○サードパーティ製外部コンポーネント
BASP21 - メール、ファイルエンコード、文字コード変換、FTP/HTTPアップ、その他
http://www.hi-ho.ne.jp/babaq/basp21.html
Doodle2 - グラフィック変換、操作、描画
http://www.vector.co.jp/soft/winnt/prog/se219120.html
DynaCall - Win32APIコール
http://people.freenet.de/gborn/WSHBazaar/WSHDynaCall.htm
AutoItX - マウス・キーボード・クリップボード操作
http://www.hiddensoft.com/AutoIt/
4名無し~3.EXE:2007/09/23(日) 21:12:36 ID:2RosR0QK
●WSH(COM)参考書籍

「はじめてのWindows Scripting Host」 (株)アンク著 技術評論社
http://www.amazon.co.jp/gp/product/477410650X/

「[改訂版] VBScriptポケットリファレンス」
http://www.amazon.co.jp/gp/product/4774127930/

「使いながら覚えるWindows Scripting Hostプログラミング入門」 竹田英雄著 エーアイ出版
http://www.amazon.co.jp/gp/product/4871936678/

「Windows Scripting Host入門 with VBScript」 毎日コミュニケーションズ
http://www.amazon.co.jp/gp/product/4839900906/

「WSHで楽しむWindows95/98/NT4.0版 ウィンドウズ・スクリプティング入門 VBScript編」 メディアテック出版
http://www.amazon.co.jp/gp/product/4896270207/

「WSHクイックリファレンス」 羽山博著 オライリー・ジャパン
http://www.amazon.co.jp/gp/product/4873110068/

「Rubyを256倍使う本 邪道編」 arton著 ASCII
http://www.amazon.co.jp/gp/product/4756136036/

「ADSIスクリプトによるWindows2000システム管理 Windows2000管理者ガイドブック」ピアソン・エデュケーション トーマス・エック 著
http://www.amazon.co.jp/gp/product/4894712881/ (どちらかというとVBによる操作本?)

「標準ASPテクニカルリファレンス」山田祥寛著 SOFTBANK
http://www.amazon.co.jp/gp/product/4797314001/
5名無し~3.EXE:2007/09/23(日) 21:13:43 ID:2RosR0QK
6名無し~3.EXE:2007/09/23(日) 21:17:29 ID:2RosR0QK
テンプレ以上(・∀・)
見つけられなかったところはリンク切れって書いといた(・∀・)

次スレも立てずに意味もなく埋めた糞コテは死ね(・∀・)
コロコロとページのURLを変えるMSも死ね(・∀・)
7名無し~3.EXE:2007/09/23(日) 21:58:37 ID:U0hs+MX3
>>1

>コロコロとページのURLを変えるMSも死ね(・∀・)
いやまったく
くだらねぇ仕掛けでリソースをムダに使わせるページ構造も許せん、マジで
8名無し~3.EXE:2007/09/24(月) 01:10:29 ID:DEYMCrth
>>前スレ990
CStrとかArrayとかの関数を駆使してデータ型をあわせてやることってできない?
試せるものなら俺も試してみたいんだけど、なんのAxコンポーネント?
9名無し~3.EXE:2007/09/24(月) 03:36:57 ID:SjghtxEN
>>1

発言番号>>11はM口さんのために空けておいてあげて下さい。
10名無し~3.EXE:2007/09/24(月) 15:38:21 ID:pjBtfzoG
型指定できる言語使うか、ラップするか、型を変換するCOMを作るか白
手っ取り早いのはpowershellかのー
1111:2007/09/24(月) 16:06:57 ID:eaufB3wz
どうもです。しつこくWSHやってる11でございます。
とある方より連絡を受け参上した次第です。
あまりこちらは見てないですがすみません。

Windows Server World11月号にPowerShellの記事を書いたので良かったらみてください。

チェック式 WSH入門
―― 演習方式で身につけるWSH超入門 ――(@IT連載記事)
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_01.html
もよろしくです。

宣伝乙。ではではー。
12名無し~3.EXE:2007/09/25(火) 06:58:53 ID:R70FuRMC
>>11
M口乙w
13名無し~3.EXE:2007/09/25(火) 10:45:34 ID:4yTvHEKx
>11
ウィルスバスターが反応したぞ
阿龍お前なに仕込んだんだ
14名無し~3.EXE:2007/09/25(火) 10:57:22 ID:+FFzqz0l
>>13
おじいちゃんご飯はさっき食べたでしょ
15名無し~3.EXE:2007/09/25(火) 11:29:33 ID:4yTvHEKx
>14
だれじゃお前は!さっさとこの家から出ていけ!
16名無し~3.EXE:2007/09/25(火) 14:06:05 ID:rEJuuZC8
>>15
60年連れ添った女房の顔も忘れるなんてねぇ・・・
おじいちゃんもいよいよだねぇ
17名無し~3.EXE:2007/09/26(水) 19:48:03 ID:9NizuYkF
InternetExplorer.Applicationでウィンドウの右上の最大化ボタンを押すのと同等のメソッドかプロパティありましたっけ?
画面サイズを取得してサイズをあわせるしかないですか?
18名無し~3.EXE:2007/09/27(木) 11:31:10 ID:DeYmWi7c
>>11
第1回 WSHを始めよう

Microsoft MVP
Visual Developer - Scripting
牟田口 大介
2006/06/02
19名無し~3.EXE:2007/09/29(土) 22:36:16 ID:/mN/rW/R
スクリプトから「ctrl+ホイール」する方法はありませんか? 
20名無し~3.EXE:2007/10/03(水) 18:45:52 ID:kYrf4Oeu
HTTP/1.1 304 Not Modified
( ・∀・)(・∀・ )オツカイオワリ 三三三三3
(・∀・∀・)
(-_-) 誰もカキコしてない・・・
(・∀・)カンリョウ!!
21名無し~3.EXE:2007/10/08(月) 14:18:28 ID:T+jdN/55
WSH=VBS?
22名無し~3.EXE:2007/10/08(月) 14:27:27 ID:a9zIH+L7
no
23名無し~3.EXE:2007/10/10(水) 18:43:26 ID:AV8fHOm1
(-_-) 誰もカキコしてない・・・
24名無し~3.EXE:2007/10/13(土) 23:30:13 ID:g349oLgE
jsでもvbsでもどっちでもいいから
「ディスク上のサイズ」を取得する方法が知りたい・・・


>>19
sendkeysでctrlとscrolllockじゃダメ?
・・・イヤ、ミテナイダロウケド
25名無し~3.EXE:2007/10/13(土) 23:34:39 ID:h3t5db0s
>>24
WinAPIでサイズ取得して標準出力するexeをCで組んでそのexeを叩いたらできたけど
WSHだけで出来るか、ってことだよね?
26名無し~3.EXE:2007/10/14(日) 00:44:25 ID:g85L0OLw
クラスタ/アロケーションユニット単位に切り上げればいいんじゃない?
27名無し~3.EXE:2007/10/14(日) 16:00:24 ID:znuraTmG
>>25
圧縮されてたらサイズが違うってことじゃないの?
28名無し~3.EXE:2007/10/14(日) 21:59:46 ID:h2hqAvvC
スクリプトちょこっと組んでみたけど・・・
膨大なオブジェクトメソッドプロパティの中から使えるもの探すの大変だった
いちいちネットで調べて作ってると時間いくらあっても足らない
これがプログラミングってやつなのか、大変なんだな
29名無し~3.EXE:2007/10/18(木) 16:51:24 ID:oIaJudOl
2chの鯖のリンクだけスレ内から抽出してテキストファイルに保存。
それのやりかた教えて。
30名無し~3.EXE:2007/10/18(木) 17:17:10 ID:Docvv0YL
>>29
自分で調べろカス
31名無し~3.EXE:2007/10/18(木) 17:35:45 ID:oIaJudOl
>>30
いいから教えろ包茎
32名無し~3.EXE:2007/10/18(木) 17:40:52 ID:Docvv0YL
ヽ(`Д´)ノウワァァン
33名無し~3.EXE:2007/10/18(木) 17:43:45 ID:OysiApEQ
対象ファイルをhtmlにするかdatにするかで違ってきますね
34名無し~3.EXE:2007/10/18(木) 18:13:47 ID:oIaJudOl
>>33
いや、htmlでもなくDatでもなく、TEXTでいいんです。
テキストファイルに2ch鯖だけのリンクを抽出したファイルを作りたいんです。

何をするのかというとp2todatでリスト化されたURLリストを順番に読み込んで実行していきたいんです。
もちろん、鯖にやさしく過剰なアクセスやクロール行為などはやりません。

おしえてくださいまし。
35名無し~3.EXE:2007/10/18(木) 18:19:04 ID:oIaJudOl
>>32
すいませんでした。
36名無し~3.EXE:2007/10/18(木) 18:37:01 ID:mX/8qEJB
> 鯖にやさしく過剰なアクセスやクロール行為などはやりません。
信用できないな

そもそも手動でやってれば間違いなく鯖に優しいアクセスになる
自力でスクリプト書けないような無能は、本人が鯖への配慮もしてるつもりでも実際は出来てないだろうから
強制的に鯖に優しくなる手動でやらせておくのが吉
37名無し~3.EXE:2007/10/18(木) 18:41:58 ID:oIaJudOl
>>36
わかった。やめとく。
38名無し~3.EXE:2007/10/19(金) 22:01:23 ID:pnnmUMtF
OS: XP sp2
wshのバージョン: 5.6

マシンを再起動するコードを教えてくれませんか?
Set WSHSHell=CreateObject("WScript.Shell")
WSHShell.Run "C:\WINDOWS\system32\RUNDLL32.EXE Shell32.dll,SHExitWindowsEx 2"
としても、エントリがありません、と出てしまいます
39名無し~3.EXE:2007/10/21(日) 21:29:17 ID:/eU1MNMN
4038:2007/10/21(日) 22:38:04 ID:HYDYzM0Q
>>39
ありがとうございました
41名無し~3.EXE:2007/10/22(月) 03:42:43 ID:yIINOAp1
fs = new ActiveXObject("Scripting.FileSystemObject");
var objOutFile = fs.CreateTextFile("C:\\test.txt",1,1);
objOutFile.Write("ほげ");
objOutFile.Close();

こうすると、UTF-16で保存されてしまいますが、UTF-8で保存するにはどうしたらよいのですか?
42名無し~3.EXE:2007/10/22(月) 04:08:55 ID:iIIEEuoP
ADODB.Stream UTF-8
43名無し~3.EXE:2007/10/23(火) 23:15:16 ID:klW0leS2
strComputer = "nullpo"
Set CPUSet = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2").InstancesOf("Win32_Processor")

for each CPU in CPUSet
 Wscript.Echo "LoadPercentage:" & CPU.LoadPercentage
next


これでCPU(コア)ごとのCPU使用率取れますか?
おらのデュアルコアCPUマシン(Athlon64×2)では1つしか取れないんだけど?
44名無し~3.EXE:2007/10/26(金) 07:09:14 ID:YLBr5NF8
どっかの他PCにアクセスしてユーザ名とパスワード入力した状態って出来ますか?
NET USE使うしかないんでしょうか?
ドライブの割り当てはしたくないんですが。
45名無し~3.EXE:2007/10/26(金) 22:52:57 ID:IfzcXnJl
>>44
NET USE はドライブ名を割り当てなくても使える。
net help use かヘルプを参照しなさい。
46名無し~3.EXE:2007/10/26(金) 23:23:12 ID:YLBr5NF8
来週試してみます
47名無し~3.EXE:2007/10/27(土) 16:16:14 ID:5z6Mce+m
音声認識のプロパティ出さずに認識エンジンを設定することって出来ますかね?
48名無し~3.EXE:2007/10/27(土) 17:25:58 ID:l+KdL2rZ
うん
49名無し~3.EXE:2007/11/04(日) 17:30:16 ID:gpAEphfP
JScript + WSF でローカルで動作するバッチ処理的なプログラムを書いたのですが、
完成してから、FileSystemObjectでのファイル削除などがMcafeeの怪しいスクリプトを遮断する
機能によってブロックされるという致命的な問題に遭遇しました。

スクリプトを遮断する機能で毎回動作のたびに「許可」をクリックすることで回避可能ではありますが、
あまりに面倒なので常に許可するホワイトリストのようなものを探したが、見つからず。

Mcafeeに限らず、Nortonなどでも同様の問題が発生するようですが、同じような経験をされた方、
解決方法があれば教えてください。そもそもWSH以外でインストール不要で高機能なスクリプト言語があれば、
そちらに移行することも考えております。
50名無し~3.EXE:2007/11/04(日) 17:46:44 ID:M2Cn2wOu BE:91467432-2BP(445)
>>49

偉い方に教えてもらった対処法ですが
例えば

Set FS=CreateObject("Scripting.FileSyst" & "emObject") ;

の場合

Set FS=CreateObject("Scripting.FileSyst" & "emObject") ;

とかやったらどうでしょう?試してないですがノートン先生ならスルーしてくれそうな予感です。

というか
ノートンもマカフィーも入れてないので
これでOKなのかどうか教えてもらいたかったり。
51名無し~3.EXE:2007/11/04(日) 17:52:02 ID:M2Cn2wOu
ああしまった・・

前半の

Set FS=CreateObject("Scripting.FileSyst" & "emObject") ;



Set FS=CreateObject("Scripting.FileSystemObject") ;

です
52名無し~3.EXE:2007/11/05(月) 18:54:01 ID:i5tJkBKd
質問です。
vbs でポップアップメニューを作成するには
どうすればよいのでしょうか?ヒントだけでも
お願いしまっす。
53名無し~3.EXE:2007/11/05(月) 22:14:26 ID:BlJ486bt
MsgBoxってなかったっけ?
54名無し~3.EXE:2007/11/05(月) 22:25:18 ID:nKqW27R8
あれをポップアップメニューとは呼ばん
55名無し~3.EXE:2007/11/06(火) 08:52:22 ID:mMTaAUe8
>>52
VBS、WSHにそういう機能は有りません
実現したければそういうきのうのCOMを作るか探すかしてください

まぁ、AHKあたり使っちゃった方が手っ取り早いと思うけどね
56名無し~3.EXE:2007/11/06(火) 18:59:12 ID:M+s+xXd2
エラーになります。
空白があるパスの対処方法を教えてください。

var shell = WScript.CreateObject("WScript.Shell");
shell.CurrentDirectory = 'C:\Documents\ and\ Setting\Administrator\デスクトップ';
57名無し~3.EXE:2007/11/06(火) 19:12:57 ID:PGoxeNfX
いや、\のエスケープの問題だろ
58名無し~3.EXE:2007/11/06(火) 19:13:45 ID:Jd5jGHnW
もうVBSを使え
59名無し~3.EXE:2007/11/06(火) 19:21:56 ID:M+s+xXd2
>>56
「"」の場合は「\\」でやりました。
「'」の場合は「\」で問題ないようです。
60名無し~3.EXE:2007/11/06(火) 19:33:08 ID:PGoxeNfX
あるよ
"と'は自分と違うのをエスケープなしに挿入できる("'"とか'"'とか書ける)以外差はない
で、エスケープってのはJScriptで文字列を表現できないから使うもんであって
空白は普通に表現できるのでJScriptとしてエスケープは不要
逆に\は\自体がエスケープ文字に使われているので\は普通に表現できないからエスケープする

CurrentDirectoryはそもそも空白を含むパスを受け入れられる
61名無し~3.EXE:2007/11/06(火) 22:55:43 ID:VprE58du
/でも使っとけ
6252:2007/11/06(火) 23:48:32 ID:/MDmkMKN
>>55
dです。COM か... 大変そうですな orz
63名無し~3.EXE:2007/11/07(水) 20:42:42 ID:Uk4caTay
IEでそれっぽいUIでも作ればいいじゃん
64名無し~3.EXE:2007/11/08(木) 01:49:20 ID:7SUESWPj
65名無し~3.EXE:2007/11/08(木) 02:08:04 ID:IM5eBTuj
つ 「正規表現」
66名無し~3.EXE:2007/11/08(木) 21:35:38 ID:20qyuEPQ
前スレに引き続き指摘されますた。
67名無し~3.EXE:2007/11/09(金) 14:14:28 ID:kUQK3taz
>>50
> Set FS=CreateObject("Scripting.FileSyst" & "emObject") ;

>>49じゃないけど、これはNG。

まあこの程度ですり抜けられるようじゃアンチウイルスの意味無いと思うし。


ただし、UWSCスクリプト内でFileSystemObject呼んだ場合は何にも言われないから
同様のパターンで実行可能なのがあるかもしれない。
68名無し~3.EXE:2007/11/09(金) 22:55:15 ID:mWYWjoAn
IActiveScriptのものだけチェックしてるとか
69名無し~3.EXE:2007/11/11(日) 21:21:52 ID:AHMXXhyu
>>49 これを使えば?
Windows ScriptからWin32APIを呼び出せるようにするライブラリ
http://d.hatena.ne.jp/Asarima/20071107/p1
70名無し~3.EXE:2007/11/13(火) 22:08:23 ID:+GHf1LY+
BATとwshで文字列をやりとりすることは出来ますか?
ファイルを介さないと駄目でしょうか?

a.batからb.jsを呼ぶ
b.jsが何か文字列を返す
a.batはその内容を使って何かする
71名無し~3.EXE:2007/11/13(火) 22:11:00 ID:zcLXXEdm
batで%1とかつかって引数で渡す。
72名無し~3.EXE:2007/11/13(火) 23:45:39 ID:Ip41ByhH
SP+メーカー付属のバッチファイルでそれやってるな。あっちはjsでなくvbsだけど
73名無し~3.EXE:2007/11/13(火) 23:46:18 ID:Ip41ByhH
あ、「それ」ってのは>>70のことね
74名無し~3.EXE:2007/11/14(水) 09:15:44 ID:IFtPrZko
>>71
引数が使えるのはa→bの場合だ
70はb→cのところで文字列を渡したいんだから引数は使えない
この場合は標準入出力を使うがよろし
75名無し~3.EXE:2007/11/14(水) 15:44:47 ID:2CCfECGA
for /f %%1 in ('cscript hoge.vbs') do echo %%1
76名無し~3.EXE:2007/11/14(水) 16:38:33 ID:bRgypCbJ
>>74
bat内では"%1"等でコマンドライン引数を取り出せるのでjsからコマンドライン引数で渡す。
js内ではWScript.Argumentsでコマンドライン引数を取り出せるのでbatからコマンドライン引数で渡す。
ということだ。
http://www.atmarkit.co.jp/fwin2k/operation/command005/command02.html
77名無し~3.EXE:2007/11/14(水) 17:10:40 ID:2CCfECGA
脱帽
78名無し~3.EXE:2007/11/14(水) 18:43:10 ID:bRgypCbJ
勘違い ああ勘違い 勘違い
7970:2007/11/14(水) 21:30:58 ID:KO3uEZWd
やりたいことができました。
ありがとうございました。

testA.bat
  for /f %%1 in ('cscript testB.js') do set folderName=%%1
  mkdir %folderName%

testB.js
  WScript.Echo("フォルダ01");
80名無し~3.EXE:2007/11/20(火) 22:12:17 ID:VEKX0U78
質問がありますです。
コンピュータABCは同じワークグループ名です。
XPSP2のPC[A]で共有を作った。
無効だったGUESTを有効にした。パスワードを空にした。
SECPOLで空パスワードでネットワークアクセスを受け付けるようにした。
SECPOLでGUESTのネットワークアクセスを拒否していないことを確認した。
共有のアクセス権 Everyone フルコントロール
NTFSアクセス権 Everyone 変更

スクリプトは、FSOでUNC指定している状態。
これで別のXPSP2のPC[B]からは、この共有にアクセス(ファイル作成)できた。
別のWindows2000[C]から、そのPCにアクセスすると、エラーになってしまった。
エラー番号から見ると、ユーザー名またはパスワードのミスマッチと出た。
GUIでその共有にアクセスすると、2000ではユーザー名とパスワードを訊かれた。
このときXPでも2000でも、ローカルのAdministratorでログオンしていた。
ネットワークは同一セグメント。
Windows2000でアクセスできないのは何故でしょうか。
できるようにする方法があるでしょうか。
81名無し~3.EXE:2007/11/20(火) 22:19:09 ID:VEKX0U78
引き続き質問です。

ドライブレターを使用せずにネットワークの共有フォルダを使用したいのですが、
そのときユーザーの資格情報を使うのは実現可能でしょうか?
GUIだとファイル名を指定して実行より普通にできますが、
自分で調べたとことろではスクリプトはドライブレターを使う方法ばかりでした。
82名無し~3.EXE:2007/11/20(火) 23:13:07 ID:gOjp+K58
ファイル名を指定して実行できるならrunかexecでできないの?
あんまり詳しくないので誰かフォローよろ
83名無し~3.EXE:2007/11/21(水) 01:24:51 ID:SPFt+BVD
なんか質問が漠然としててイマイチ意味がわからん。
質問の仕方が下手なのか、オレの理解を超える高度な質問なのか。
>GUIでその共有にアクセス
これはエクスプローラで、って意味だよな?

Windows2000 からアクセスできないのは、単にWindows2000にユーザとパスワードを登録してないだけ?
もう手元にWindows2000が無いから確かめられんが。

ドライブレターを使わない方法っていうと、
¥¥サーバ名¥共有名¥サブディレクトリ¥ファイル・・・
だろ。そういう事じゃなくって???UNCって言葉を知ってるくらいだから、わかってるやろね。

もしかしてコンソール型のコマンド?だったらドライブレターが無いと動かんのだが。

検証用の短いスクリプトを書いてを掲示板に貼り付けてみろ。
ただ単に「動かない」って言うだけじゃ問題解決せんぞ。
キミの文章は、一見すごく詳しく書いてあるように見えるが、実は具体的な事はぜんぜん何一つ書いてないやん。

あと、コードを貼り付けるときは、空白は   に置換してな。じゃないと読む気がしなくなる。
84名無し~3.EXE:2007/11/21(水) 01:26:26 ID:SPFt+BVD
あと、コードを貼り付けるときは、空白は   に置換してな。じゃないと読む気がしなくなる。
85名無し~3.EXE:2007/11/21(水) 07:31:10 ID:ostA5nqh
>80
俺同じことで悩んだことがある。
難しく書いてあるけど、つまり
ワークグループ上のPCで共有つくった。
この共有は、ユーザーが手作業で認証することなく
誰でも書き込みできるようにしたい。
XPだとできるけど、2000だとできない。
XPと2000で確認したときのユーザーは同じユーザー。
でいいか?
だとすると、そのカギはたぶん ForceGuest
XPから付いた機能。2000にはない。
FGが有効だとネットワーク資源にアクセスするときの試行順序が異なる。
2000で失敗するのはおそらく、共有を作ったPCのAdministratorと
2000のユーザー(Administrator)がマッチしたんで共有のAdministrator
のパスワードを求められたと思われる。
>80は薄々それに気付き始めていて、81の質問をしているように見えるな。
81の回答は知らん。
86名無し~3.EXE:2007/11/22(木) 21:04:54 ID:ZvxWKQzi
ドライブレターをWSHで変更したいんですが、
知っている方いらっしゃったら教えて頂けませんでしょうか?
87名無し~3.EXE:2007/11/23(金) 01:01:57 ID:RcwUXjpV
88名無し~3.EXE:2007/11/23(金) 12:20:45 ID:5ayYEZBT
時代はPowerShell
89名無し~3.EXE:2007/11/23(金) 15:37:16 ID:pxqIhImv
時代とかどうでもいいんだがそのPowershellというやつは便利なのか?
90名無し~3.EXE:2007/11/23(金) 16:29:21 ID:JzxCLucd
.NETのライブラリが素で使えるんだからWSHに比べりゃ基礎力が違うな
91名無し~3.EXE:2007/11/23(金) 16:41:35 ID:LQu5gBnH
基礎力が必要だな
92名無し~3.EXE:2007/11/23(金) 17:20:53 ID:cY5xDcD8
ttp://www.atmarkit.co.jp/fwin2k/operation/pshvswsh/pshvswsh_01.html
Windowsスクリプティング環境比較:PowerShell vs WSH
―― 伝統のWSH 対 先進のPowerShell、どっちを使う? ――

WSHとPowerShell、どちらを使うべきか?
ここまでの比較を振り返ってみると、現状ではアプリケーションの使い勝手としてはWSHが、
スクリプト言語の機能面ではPowerShellが優位になると考えて差し支えないだろう。
使い分けの決め手となるのは、システムにPowerShellなどを追加インストールできるか否かにかかっているといえるかもしれない。
WSHならばどこででも動作するが、PowerShellはそうではないからだ。
将来性に関していうと、WSHは今後セキュリティ対策やバグフィックスなどのための
マイナー・アップグレードのみにとどまり、メインとなる機能はさほど変化しないと考えられる。
ある意味「枯れた」「安定した」環境である。

筆者としては「こちらがお薦め!」とはいいにくいところがある。
本音をいえば「両方お薦め!」である。ぜひとも、どちらの環境にも触れてみていただきたい。
また、WSHをすでに使われている方は、ぜひ新しいPowerShellも使ってみていただきたいと思う。
93名無し~3.EXE:2007/11/23(金) 17:38:25 ID:cY5xDcD8
#フォームを表示するサンプル
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object System.Windows.Forms.Form
$form.TopMost = $true
$txt = New-Object System.Windows.Forms.TextBox
$txt.Text = "てきすとぼっくす"
$txt.MultiLine = $true
$txt.Dock = "Fill"
$txt.Add_TextChanged({Clear-Host;Write-Host '[' + $txt.Text + ']'})
$form.Controls.add($txt)
$form.ShowDialog()
94名無し~3.EXE:2007/11/23(金) 20:26:50 ID:3Va0+pWj
function tail([string]$file, [int]$line=10){
 Get-Content $file | Select-Object -Last $line
}
95名無し~3.EXE:2007/11/23(金) 20:35:07 ID:SA5SFI4k
Windows PowerShell (正式版リリース)1.0
http://pc11.2ch.net/test/read.cgi/win/1163764836/
96名無し~3.EXE:2007/11/27(火) 21:24:09 ID:JEXhs+tO
Execメソッド以降が固まってしまうことがあって困っています。
調べたところ、どうやらコマンドの結果が4096バイトを超えると固まるようです。
(dos窓が開いたままの状態でMsgBox("cmd end")が実行されない)
これを回避する手段はないでしょうか?
コードは以下です。

Set objWshShell=WScript.CreateObject("WScript.Shell")
Set objExec=objWshShell.Exec("C:\cygwin\bin\bash.exe --login -c /home/root/foo.sh")
Do While objExec.Status = 0
WScript.Sleep(1)
Loop
MsgBox("cmd end")

Do While Not objExec.StdOut.AtEndOfStream
strRes=strRes & objExec.StdOut.Read(1)
Loop
MsgBox(strRes)

97名無し~3.EXE:2007/11/27(火) 22:37:18 ID:w29ICyU7
単にSleepが短すぎるとかじゃないよなぁ?
98名無し~3.EXE:2007/11/27(火) 22:47:10 ID:dWqMnF1n
コマンド実行中に4096バイト溢れないように読み出したらどうかな。

Set objWshShell=WScript.CreateObject("WScript.Shell")
Set objExec=objWshShell.Exec("C:\cygwin\bin\bash.exe --login -c /home/root/foo.sh")
Do While objExec.Status = 0
  WScript.Sleep(1)
  If Not objExec.StdOut.AtEndOfStream Then
    strRes=strRes & objExec.StdOut.ReadAll
  End If
Loop
MsgBox("cmd end")
Do While Not objExec.StdOut.AtEndOfStream
  strRes=strRes & objExec.StdOut.Read(1)
Loop
MsgBox(strRes)

もしくはファイルにリダイレクトしてから読み出すとか・・・
99名無し~3.EXE:2007/11/28(水) 00:34:39 ID:LYipxaXQ
添削開始
Set objWshShell=WScript.CreateObject("WScript.Shell")
Set objExec=objWshShell.Exec("C:\cygwin\bin\bash.exe --login -c /home/root/foo.sh")
MsgBox objExec.StdOut.ReadAll
添削終了
10096:2007/11/28(水) 23:35:18 ID:KdWjqQzh
>>97-99
レスありがとうございます。
99氏のReadAllで対処することができました。

ところで4096バイトというのはなにか制限があるのでしょうか?
101名無し~3.EXE:2007/11/29(木) 00:17:53 ID:83NzChea
pipeのバッファ長
10296:2007/11/30(金) 00:22:06 ID:Fxl47CyX
>>101
なるほど。ありがとうございました。
103名無し~3.EXE:2007/12/02(日) 23:07:19 ID:TEBziwdN
WindowsXPProの質問です。
ドメインユーザーのSID(S-x-x-x....)
から、ユーザーID(Domain\UserID)を知りたいんだけど、
ActiveDirectoryにどんな方法でアクセスすれば良いですか?
ADSIを使うっぽいのですが、よくわかりません。
104名無し~3.EXE:2007/12/15(土) 09:24:53 ID:l9oY6uNQ
@Echo ほしゅ
105名無し~3.EXE:2007/12/26(水) 16:48:54 ID:ihpdP5iv
vbscriptで下のように FTP を実行するものを作りました。

------------スクリプトファイル----------
Set objExec = objWshShell.Exec("ftp -s:ftptest.txt")
Do Until objExec.StdOut.AtEndOfStream
strLine = objExec.StdOut.ReadLine
Wscript.Echo strLine
Loop

FTPの実行結果を取り出したく、標準出力を出しているのですが、
FTPサーバのレスポンスコード (226 BINARY Transfer complete. のような)をとることができません。
FTPのスクリプトファイルに記述したコマンド文字列(get 〜〜〜 など)は出力されます。

なにかレスポンスコードを取り出す方法はありませんでしょうか。
106名無し~3.EXE:2007/12/26(水) 17:42:45 ID:nPiR3OSS
ありますよ
107名無し~3.EXE:2007/12/30(日) 01:50:18 ID:yeQ7yJdx
>>105
それって普通に実行して>でリダイレクトした場合は取れるのか?
会話的な出力は無理なんじゃ?
108名無し~3.EXE:2007/12/30(日) 03:21:32 ID:cJTE6jYq
2>
109名無し~3.EXE:2007/12/30(日) 17:30:58 ID:CtFMOrJV
システムのプロパティで 「このコンピュータのプライマリDNSサフィックス」
をスクリプト(VBScript)で設定したいのですがレジストリを書き換えるしかないでしょうか?(Windows2000:WSH5.1)

レジストリ変更した場合本当にシステムのプロパティの
「DNSサフィックスと NetBIOSコンピュータ名」
から変更した場合と同じ効果が得られますかね。

'このコンピュータのプライマリDNSサフィックスに追加
SET WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite "HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\Domain" , "example.local", "REG_SZ"

SET WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite "HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\NV Domain" , "example.local", "REG_SZ"

'ドメインのメンバシップが変更されるときにプライマリDNSサフィックスを変更するか
SET WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite "HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\SyncDomainWithMembership" , "0", "REG_DWORD"
110名無し~3.EXE:2007/12/31(月) 02:02:49 ID:lbRF296b
WMIなんだけど
VistaだとCPUコアごと(デュアルコアCPU使用の場合)にCPU使用率取れないの?
会社のサーバ機(Win2003)だと普通に取れるのに。
111名無し~3.EXE:2008/01/15(火) 20:13:54 ID:NkT4qLhS
112名無し~3.EXE:2008/01/21(月) 00:22:04 ID:wT0Wq3sL
>>110
VistaからWin32_Processorが変わったらしいぞ
113名無し~3.EXE:2008/01/29(火) 15:37:22 ID:QlYaExwt
ファイルに連番を振って、連番状態をtxtファイルに保存するスクリプトをくんだんだけど、
引数多いとエラーになるからファイラの10ファイルずつ何度かに別けて実行するようにしたら、
前のスクリプトがtxtに書き込む前に次のスクリプトが実行されてしまって
重複する連番が発生しまう問題が出てきた。
これをなんとか回避する方法ってない?
114名無し~3.EXE:2008/01/29(火) 16:39:09 ID:HWw+z0EO
115名無し~3.EXE:2008/01/29(火) 18:01:12 ID:Bx0GxAeQ
ロックシリアライズ
116名無し~3.EXE:2008/01/29(火) 18:05:33 ID:ioJc4Ok0
>>113
方法1 ファイラからわけて実行するときは、同期して順番に実行させる
方法2 txtファイルはセッションごとにユニークなものを用いる
117名無し~3.EXE:2008/01/29(火) 18:23:51 ID:i99yh1lQ
vistaの検索にもインデックスサービスのような
スクリプトから扱えるインターフェイスはありますか?
あれば教えてください。
118名無し~3.EXE:2008/01/29(火) 21:44:23 ID:QlYaExwt
>>116
方法1はやり方が判らん。
方法2は統一連番なので連番用のtxtファイルは一つにしたい。
119名無し~3.EXE:2008/01/30(水) 00:13:52 ID:hK8k2kJv
>>113
引数を減らすわけにはいかんの?フォルダを渡してその中全部のファイルに連番ふるとか。
120名無し~3.EXE:2008/01/30(水) 01:01:03 ID:mcJ6fxxT
121名無し~3.EXE:2008/01/30(水) 19:58:35 ID:4UJpZWZC
WSHからIEを触っていますが、
<SCRIPT src="a.js" type=text/javascript></SCRIPT>
このa.jsの中身をどうしたらいじれるか悩んでいます。
IE.document.scripts.item(x).src にa.jsが入っているところまではわかりました。
しかし 〜.outerHTMLは「<SCRIPT src="a.js" type=text/javascript></SCRIPT>」
〜.innerHTMLは「」(中身なし) と中身がどこにあるのかわかりません。

最終的にはこのa.jsの中にあるconfirmを取り除くことが目標です。
ボタンの形をした画像のonclickでこのconfirmが呼ばれるため、
buttonimg.click()で処理が中断されてしまいます。(制御が戻ってこない)
どなたかお知恵をお貸し下さい。
122名無し~3.EXE:2008/01/30(水) 20:03:21 ID:I8vGwQ/o
confirm = "うんこ"

でいいじゃん。
123名無し~3.EXE:2008/01/31(木) 11:52:44 ID:zJJrJ/qA
最初意味がわかりませんでしたが、最終的に
div = IE.document.createElement("div")
div.innerHTML = " <script defer='defer'>window.confirm = function() {return true;}</script>"
IE..document.body.appendChild(div)
で解決できました。
ありがとうございます。

ところで、上記のやり方ではなく、
IEオブジェクトから直接confirmを上書きする方法はあるのでしょうか?
IE.document.window.confirm = "function() {return true;}"
だとオブジェクトがないみたいだし、右辺もあやしい?
124名無し~3.EXE:2008/01/31(木) 17:29:05 ID:gHRDlEQ4
>>121
スクリプトの中身はtextプロパティ

>>123
ParentWindow使え
あと右辺はもちろん関数
125名無し~3.EXE:2008/02/24(日) 23:45:43 ID:h5tbuJf2
あるアプリケーションへ,
{TAB}
{TAB}
{ENTER}
alt+W
P
という5つのキーを20回連続して入力したいのです。
かつ,5つのキーの間にそれぞれ1秒程度のwaitを入れたいのです。
で,以下のように記述したのですが,エラーが出ます。
どこをどう治せばいいのか教えてください。

var WShell = WScript.CreateObject("WScript.Shell");
For i=1 to 20 Step 1
WShell.Sendkeys("{TAB}{TAB}{ENTER}%WP");
Next

スクリプト: ****
行: 5
文字: 5
エラー: ';' がありません。
コード: 800A03EC
ソース: Microsoft JScript コンパイル エラー
126名無し~3.EXE:2008/02/24(日) 23:59:31 ID:sysKnAbW
JScript
for ステートメント


次のコードは、for ループの使用例です。

/* 初めに i は 0 に設定され、繰り返し処理の最後に 1 ずつインクリメントされます。
ループは、繰り返し処理の前に i が 10 かまたはそれ以上になったときに終了します。*/
var myarray = new Array();
for (i = 0; i < 10; i++) {
myarray[i] = i;
}
127名無し~3.EXE:2008/02/25(月) 00:06:21 ID:4AkMnxLm
さすがに言語の区別が付かん奴ってのは珍しいな
128名無し~3.EXE:2008/02/25(月) 00:32:29 ID:u4dXLMq0
JVB折衷か〜
爆笑じゃ〜
129名無し~3.EXE:2008/02/25(月) 17:51:14 ID:36gDupYt
こりゃひどい。前代未聞。ここまでひどいのは初めて見た。
130名無し~3.EXE:2008/02/25(月) 18:07:39 ID:4AEiq/3J
自演乙
131名無し~3.EXE:2008/02/25(月) 20:47:32 ID:1tRpIHdF
>>125です。
下記を見て,記述してみたのですが,爆笑・前代未聞レベルでしたか・・・
あきらめます。ありがとうございました。

Windows Scripting Host 2.0 キーを他のアプリに送る
http://homepage3.nifty.com/aya_js/wsh/wsh205.htm
132名無し~3.EXE:2008/02/25(月) 21:42:24 ID:kuHyV/Zj
>>131
一度、スクリプトの拡張子を.vbsに変えて実行してみたらどうだろう。
爆笑させてもらったお礼だ。
133名無し~3.EXE:2008/02/25(月) 21:47:14 ID:gUIMLeH3
あきらめなくても、素人らしく20回コピペしたらいいだろ。

バグがあろうが、セキュリティ上の穴があろうが、羅列で見苦しかろうが
「自分だけがわかって使う」なら「最強だ」という考えもありかと@業務で使わないのなら

まぁ、自分で作っても記憶は忘却する一方だから、コメントぐらいは入れとけよ。
134名無し~3.EXE:2008/02/26(火) 01:28:07 ID:2F5HbqQP
WSFにすればいいよ

<job>
<script language=jscript>
var WShell = WScript.CreateObject("WScript.Shell");
</script>
<script language=vbscript>
For i=1 to 20 Step 1
WShell.Sendkeys("{TAB}{TAB}{ENTER}%WP");
Next
</script>
</job>
135名無し~3.EXE:2008/02/26(火) 02:12:37 ID:6OUqc6/u
>>131
> var WShell = WScript.CreateObject("WScript.Shell");   JScriptの構文
> For i=1 to 20 Step 1                       VBScript
> WShell.Sendkeys("{TAB}{TAB}{ENTER}%WP");        JScript
> Next                                VBScript
136名無し~3.EXE:2008/02/26(火) 12:21:55 ID:rD2tWwy5
未練がましいなぁ・・・
本人がもういいって言ってるんだからあきらめたら?
137名無し~3.EXE:2008/02/26(火) 12:32:27 ID:Tapss4Ha
>>125
var WShell = WScript.CreateObject("WScript.Shell");
var title = "無題 - メモ帳"

function sendkeysleep (app,key,wait)
{
WShell.AppActivate(app);
WShell.Sendkeys(key);
WScript.Sleep(wait);
}

for (i=0; i<20 ; i++){
sendkeysleep(title,"{TAB}",1000);
sendkeysleep(title,"{TAB}",1000);
sendkeysleep(title,"{ENTER}",1000);
sendkeysleep(title,"%W",1000);
sendkeysleep(title,"P",1000);
}
138名無し~3.EXE:2008/02/28(木) 22:28:08 ID:yEaqSwG0
My Documentsのターゲットフォルダの場所を
ログオフせずに変更することはできませんか?
レジストリのどこを修正するかはわかっていますが
ログオフするまで有効になりませんでした。
SendKeyを使うしか方法はないでしょうか?
139名無し~3.EXE:2008/03/02(日) 18:43:06 ID:6e1kCfg7
>>138
shutdown -l
140名無し~3.EXE:2008/03/05(水) 22:31:46 ID:kBstZgxh
taskkill /im explorer.exe
141名無し~3.EXE:2008/03/25(火) 16:38:20 ID:9kazgLaF
すみません。初心者です。(オブジェクト指向もあやふやです。)
例えばファイルのコピーをしたいとき
fs.CopyFile "aaa.txt", "bbb.txt"
を使うために、前もって
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
を宣言(かな?)しておかなくてはならないんですよね?
それでmin メソッドの、
Math.min([number1[, number2[. . . [,numberN]]]])
を使いたいんですが、何を宣言するのかもわからないのです。
ヘルプやwebをいろいろ見て回ったのですがどうしてもわかりません。
どなたか、min メソッドを使用した最小限のプログラムの例を
教えていただけませんか。お願いします。
(もちろん、minメソッドなんか使わずに最小値を取り出すプログラムを
書いてもいいのですが、後学のためにもよろしくお願いします。)
142名無し~3.EXE:2008/03/25(火) 17:00:14 ID:1IL1Ctz1
宣言せずに使えるが?
143141:2008/03/25(火) 21:44:36 ID:qBx7ORss
例えばaaa.vbsなるテキストファイルを
Dim J
J=Math.min(1,2,3)
MsgBox J
と作って、このaaa.vbsをダブルクリックすると

行:2
文字:1
エラー:オブジェクトがありません。:’Math’
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

とエラーが出るのです。何が足りないのでしょうか。
かなり、アホな質問だとは思いますがどうかお願いします。
144名無し~3.EXE:2008/03/25(火) 21:51:41 ID:hNdtb4Xa
予想外の展開w
145名無し~3.EXE:2008/03/25(火) 22:06:03 ID:8WiypEE9
MathってJScript組み込みオブジェクトじゃないか?
146名無し~3.EXE:2008/03/25(火) 22:07:52 ID:ixyG0PvK
Mathって.NET Frameworkのオブジェクト(クラス)だろ
WSHで使えるのはCOM(ActiveX)オブジェクトだけ

まあCOMを通してWin32APIとか.NET Frameworkとかを使うことも出来るけど
元からそれらに対応している言語を使う方がいいだろ
147141:2008/03/25(火) 22:27:53 ID:qBx7ORss
ガーーーーーーーーーーーーーーーーーーーーン!!
お騒がせしてすみませんでした。あのヘルプはWSHだけのヘルプじゃないのね。

トホホ(;_;)
148名無し~3.EXE:2008/03/25(火) 22:38:43 ID:/YWxmjp7
VBS+VistaでGetFolder メソッド使ってプロファイルフォルダのSize取得しようとすると

エラー: 書き込みできません。
コード: 800A0046
ソース: Microsoft JScript 実行時エラー

で落ちる。2000やXPだと落ちないんだけど、これVista特有の現象ですか?
Vistaでも普通のフォルダはSize取れるんですけど。
149名無し~3.EXE:2008/03/26(水) 00:14:49 ID:t+afEoKa
>>147
> あのヘルプはWSHだけのヘルプじゃないのね。

いや、WSHだけのヘルプ。言っとくけど、WSHは言語の名前じゃないからね。
で、MathはJScriptのオブジェクトだから、VBScriptでは使えない。
150名無し~3.EXE:2008/03/26(水) 01:24:26 ID:KNcsBXpS
使えるだろ?
151名無し~3.EXE:2008/03/26(水) 01:54:14 ID:KNcsBXpS
<job>
<script language=javascript>
</script>
<script language=vbscript>
msgbox Math.max(1,2)
</script>
</job>
152名無し~3.EXE:2008/03/26(水) 04:57:05 ID:7LNLMS+G
>>151
それはVBScriptでJScriptのオブジェクトと使ってるのとは違うだろ。
153名無し~3.EXE:2008/03/26(水) 13:24:45 ID:KNcsBXpS
<job>
<script language=JScript>
</script>
<script language=VBScript>
msgbox Math.max(1,2)
</script>
</job>
154名無し~3.EXE:2008/03/26(水) 15:51:20 ID:7LNLMS+G
いやそういう意味ではなくて…

それはWSFでVBScriptとJScriptを使っているだけであってVBSじゃないだろって話。
155名無し~3.EXE:2008/03/26(水) 17:03:49 ID:KNcsBXpS
<job>
<script language=JScript>
</script>
<script language=VBS>
msgbox Math.max(1,2)
</script>
</job>
156名無し~3.EXE:2008/03/26(水) 18:06:43 ID:POgtdwah
目的ありきなのか手段ありきなのかってことだよな。
157名無し~3.EXE:2008/03/26(水) 18:52:46 ID:KNcsBXpS
set sc=createobject("scriptcontrol")
sc.language="jscript"
msgbox sc.CodeObject.Math.max(1,2)
158名無し~3.EXE:2008/03/26(水) 21:11:00 ID:TWV1SvVz
解ってないなぁ
159名無し~3.EXE:2008/03/26(水) 23:08:35 ID:uMAj67np
んじゃきっちり分かるように説明しる
160名無し~3.EXE:2008/03/27(木) 12:00:42 ID:2KaXxIPc
HOGE.VBS

WScript.Echo (Math.max(1,2))
161名無し~3.EXE:2008/03/27(木) 23:04:46 ID:ycxHXFId
>>157なら完全に使えてるな
162名無し~3.EXE:2008/03/27(木) 23:09:38 ID:2KaXxIPc
>>160 の実行結果も
---------------------------
Windows Script Host
---------------------------
2
---------------------------
OK
---------------------------
なんだけど?

HOGE.VBS //e:jscript
163名無し~3.EXE:2008/03/28(金) 17:53:53 ID:2JmwkR4J
解ってるなぁ
164名無し~3.EXE:2008/03/28(金) 21:54:09 ID:2RJ4tWHs
そうでもないか
165名無し~3.EXE:2008/03/29(土) 02:07:35 ID:cjLqnGDe
なにか悔しいことでもあったの?
166名無し~3.EXE:2008/03/31(月) 02:14:48 ID:RCtIg5di
質問です。
wshでドライバの有効無効を切り替えられますか?
可能ならばコード例をいただければと
167名無し~3.EXE:2008/03/31(月) 07:49:26 ID:J1B1LuSu
>>166
WSHでは出来ません
COM使えば出来ないこともないので
どうしてもやりたければWSHではなくCOMについて調べましょう
168名無し~3.EXE:2008/03/31(月) 17:56:54 ID:Ra0SLpc1
>WSHでは出来ません

SendKeys使えば出来ないこともないので
どうしてもやりたければWScript.ShellのSendKeysについて調べましょう
169kuchigakusaiossan:2008/04/05(土) 15:47:53 ID:pZPHR3rd
マルチポストですぅぅ
悩みすぎて口がくさいですぅぅ
H友達の同僚のサキちゃんにもきらわれそうですぅぅ
ヨロピク
891 名前: kuchigakusaiossan 投稿日: 2008/04/04(金) 11:47:41
すいません、スレ異かな。WSHの言葉だけで来ました。
悩んでます。だれか教えぇぇぇぇ〜〜て

EXCEL2003 VBAで 
 http://www.happy2-island.com/vbs/cafe02/capter00711.shtml あたりに
   WScript.Sleep 5000  っていうのがさりげにつかってありますが
    オブジェクトが必要です というエラーが出ますうううぅぅぅぅぅ
 私はどうすればいいのでしょうか。
 悩みと疲労で歯槽膿漏がますますひどくなりますうううぅぅぅ
ぐぐると以下の同じような人もいます。だれか愛の手を
win32のsleepじゃなくって、Wscript.echo もつかいたいし
>Excel VBA質問スレ Part5
878 :デフォルトの名無しさん:2008/03/02(日) 23:54:52
物凄く基本的な事で申し訳ないのですが・・・、処理待ちでスリープを掛けたく、
 WScript.sleep (250)
と記述していますが、エラー424 オブジェクトが必要です というエラーが出るのです。
何か参照設定が足りないんでしょうか。。
879 :デフォルトの名無しさん:2008/03/02(日) 23:56:42
ググれよ・・・
880 :デフォルトの名無しさん:2008/03/03(月) 00:01:10
>>878
WScript.exeを参照設定しろー
895 名前: デフォルトの名無しさん [sage] 投稿日: 2008/04/04(金) 19:36:53
実際問題としてVBAならDeclareが一番楽だと思うんだ
896 名前: デフォルトの名無しさん [sage] 投稿日: 2008/04/04(金) 21:11:06
Application.Waitのほうが簡単
170名無し~3.EXE:2008/04/05(土) 16:25:23 ID:Zt+/0iY1
VBAからWScript.Echoってどんな使い道があるの?
171名無し~3.EXE:2008/04/05(土) 17:29:10 ID:opCsAdvJ
正解は
Shell "WScript.exe ..."
だな
172名無し~3.EXE:2008/04/06(日) 05:20:20 ID:nlrXvzZ0
>>170
MsgBoxのほうが簡単
173kuchigakusaiossan:2008/04/06(日) 13:07:46 ID:Ax1XoNQY
>>170
Debug.Print と同じ用途と考えたけど
echo ではログ的に出力できそうじゃないみたいな
174kuchigakusaiossan:2008/04/06(日) 13:51:08 ID:Ax1XoNQY
>>169
お騒がせしてます。一応自己解決しました。
サキちゃんもよろこんでますぅ。

誤った解釈は、http://www.happy2-island.com/vbs/cafe02/capter00711.shtml はVBAじゃなくWSHのスクリプトそのもらしい。
VBAではWscriptのスクリプトは実行できないが、オブジェクトは動作できる(みたい)
 Wscript.sleep × sleep はオブジェクトではない
Wscript.run ○ runはWscriptのオブジェクト

質問は wscript.run("sleep 3") とか wscript.run("echo test") にすれば動きますがrunコマンド相当になり意味ナイスネ
Sub VBA_WScrit_test()
Dim WSH
Set WSH = CreateObject("WScript.shell")     ’wscript のshellを指定
WSH.Run ("sleep 3")
WSH.Run ("echo test")
End Sub

175名無し~3.EXE:2008/04/06(日) 13:59:10 ID:AOV8Fp3G
先生、どこから突っ込んでいいのか分かりません!
176名無し~3.EXE:2008/04/06(日) 18:02:36 ID:sJp4hCiu
175よ、お前のスルー力が試されておる。
177名無し~3.EXE:2008/04/06(日) 20:25:55 ID:PLT0SKwU
やむを得ず、sendkeys主体のvbsを使うことに
なったんだけど、sendkeys中にユーザー操作を
無効化しておくような方法ってないかな?

やっぱムリ?
178名無し~3.EXE:2008/04/08(火) 14:03:59 ID:+YeUwmcX
WSHとは関係無いけどUWSCにそんな関数あったな。
179名無し~3.EXE:2008/04/16(水) 19:21:44 ID:3BqZSYGn
ho
180名無し~3.EXE:2008/05/12(月) 15:02:59 ID:idT6RCfS
Xp質問スレから誘導されてきました。

下記の動作を自動化したいと考えています。
具体的な実現方法をご教授ください。

1.ディレクトリA内にある全フォルダ及び全ファイルをディレクトリBに移動する。
(ディレクトリA内にフォルダ及びファイルが存在しない場合はこのスクリプトを停止)
2.ディレクトリBに移動したファイルをデータベースに取り込む。
3.ディレクトリAディレクトリBからディレクトリC内の実行年フォルダ内の実行月フォルダ内の実行日フォルダに移動する。
(フォルダが無い場合は作成)

という処理を毎日8時半、12時、18時に行います。

※2番に関してはデータベース側のスクリプトになりますので、実現したいのは1番と3番です。
よろしくお願い致します。
181名無し~3.EXE:2008/05/12(月) 18:37:47 ID:yJOtbab4
1.で全部AからBに移動したのに、3.でAになんか残ってるの?
182名無し~3.EXE:2008/05/12(月) 20:25:39 ID:uCZ4KO0T
>>180
ファイル・フォルダの移動や作成はFileSystemObject使えば良い
年月日の取得はDateからYear関数などで取得すれば良い

ここはスクリプト作成依頼所ではないので、あとは自分で調べて書こう
183名無し~3.EXE:2008/05/16(金) 09:23:35 ID:zqGee6pu
>>182

情報ありがとうございます。
試してみます!
184名無し~3.EXE:2008/05/26(月) 13:02:19 ID:ZJjr1srY
makewin.exeでexe化したvbsのexeファイルが
savce@5/26定義パターンで木馬として片端から検出・検疫されたわ

ふざけんなSAV!!!!!!!!!!ヽ(`Д´)ノ
185名無し~3.EXE:2008/05/27(火) 23:28:44 ID:5IR62930
>>184
ウチも!
自作アプリのインストーラを、いつも wsh で作成して exe 化して配布してたんだが
いきなりオレのソフトは全部ウイルスに認定されてしまったよ!
かといって、マイクロソフトの Visual Studio に付いてるクソなインストーラ作成ソフトは使いたくないし
InnnoSetup なんて、まるでキンタマみたいな恥ずかしい名前のソフトも抵抗あるし。
どうしよう・・・orz
186名無し~3.EXE:2008/05/28(水) 18:02:22 ID:U+POFhbu
そこで、MAOIXですよ。
187名無し~3.EXE:2008/05/28(水) 20:45:49 ID:ijLb+QnG
カッコ付けてexe化なんてしなければいいじゃんw
188名無し~3.EXE:2008/05/28(水) 22:05:22 ID:lcT2TWdz
exeにするならvb.netだな
189名無し~3.EXE:2008/05/29(木) 00:42:34 ID:swFNcekc
>>185
ところでWSHの.exe化ってのは、WSHやOSのバージョン毎の差を吸収できるもんなの?
できないのならWSHのまま配布するほうが良いと思うんだが。
190名無し~3.EXE:2008/05/29(木) 18:18:57 ID:DTlmIJ8o
>>189
exe化の原理は簡単。単純に、ローダとvbsスクリプトを COPY コマンドで物理的に結合してるだけ。
 COPY /B ローダ.exe+SETUP.VBS SETUP.EXE
ローダが実行時にスクリプト部分をファイルに書き出して、子プロセス wscript.exe で実行させる。
OSのバージョンに依存するような事は絶対に無い。
191名無し~3.EXE:2008/05/30(金) 10:51:12 ID:PIzZnjDJ
ttp://www.microsoft.com/japan/technet/scriptcenter/resources/scriptshop/shop0305a.mspx
をまんま使って、ワークグループ環境下で、リモートのOSのバージョン等を採取する
スクリプトを作成しています。

Set objWMIService = GetObject("winmgmts://" & "remotehost")
Set colOSes = objWMIService.ExecQuery _
("SELECT * FROM Win32_OperatingSystem")
For Each objOS in colOSes
  Wscript.Echo "OS Version: " & objOS.Version
  Wscript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & _
  "." & objOS.ServicePackMinorVersion
Next

Windows Server 2003に対しては、普通に動作するのですが、
Windows XP SP2のPCに関しては
 Microsoft VBScript runtime error: The remote server machine does not exist or is unavailable: 'GetObject'
で、拒否られてしまいます。
Google先生経由で色々調べて、XP側のファイアーウォールをOffにしたり、
wmimgmt.mscで、root\cimv2のパーミッションをいじったりしてみたり、
getObjectの引数をいじってみたり、色々やったのですが、ですが、状況は
変わりません。 orz
すごく基本的な点を見落としているような気がするのですが、どなたか、
アドバイスいただけませんか?
192名無し~3.EXE:2008/06/02(月) 08:02:20 ID:xPO8zd5Z
前に、「ネットワーク接続の有効・無効をするスクリプト」を見たことがあって、
仕事で使いたいと思ってるんだけれど、あの手段は「コントロールパネル」を開いたりを自動化してるっぽくて
オレの会社だとコンパネが開けないようになってるから使えなかったんだわさ。
マイネットワークを右クリックしてプロパティとかでネットワーク接続の画面は普通に出せるんだけど、
コンパネは開けない仕様になってて。
そういう場合はどうすればいいと思う?レジストリは権限ないし・・・
193名無し~3.EXE:2008/06/02(月) 08:18:12 ID:GIIWqOyj
ローカルエリア接続・無線LANをコマンドラインから有効/無効にする方法
ttp://tech.ironhearts.com/blog/archives/74
194名無し~3.EXE:2008/06/02(月) 18:50:53 ID:uGSz20SA
WSHを自由に使わせてるくせに、コンパネやレジストリへのアクセス権限無しとかgdgdだな
セキュリティーの概念を解ってないヘボ会社にはありがちだけどw
195名無し~3.EXE:2008/06/04(水) 10:19:34 ID:DZ08xA0B
>>191の自己フォローです。
結局、
 コンパネ→管理ツール→ローカルセキュリティポリシー
 →セキュリティオプション
 ネットワークアクセス:ローカルアカウントの共有とセキュリティモデル
 をクラシックに変更
で、解決いたしました。参考サイトは、以下の通りです。
ttp://dendoubako.cocolog-nifty.com/blog/2006/09/post_f08b.html
お騒がせいたしました。
(なんだかんだで、三日間もハマッテしまった。orz)
196名無し~3.EXE:2008/06/13(金) 16:15:06 ID:uYaVuoGG
4行目でエラーとなるんですが どこか間違っていますでしょうか?
---
Dim f
Set oMsg = CreateObject("CDO.Message")
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objText = objFs.OpenTextFile(WScript.Arguments(0))
myText = objText.ReadAll
objText.Close

oMsg.From = "送信アドレス"
oMsg.To = "宛先アドレス"
oMsg.Subject = WScript.Arguments(0)
oMsg.TextBody = "件名" & vbCrLf & myText
' 添付したい場合使用
'oMsg.AddAttachment WScript.Arguments(0)
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"メールサーバアドレス"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oMsg.Configuration.Fields.Update
oMsg.Send

197名無し~3.EXE:2008/06/14(土) 05:59:54 ID:J9SnL1u9
>>196
引数がたりないんでは?
Set objText = objFs.OpenTextFile(WScript.Arguments(0),1,False)

としたらどうだろう?
198名無し~3.EXE:2008/06/15(日) 01:00:26 ID:blTLCOLk
>>196
エラーの内容が分からんとな。
199名無し~3.EXE:2008/06/15(日) 14:34:01 ID:loKPXSjn
スクリプト単体で引数入れずに起動してるとかいうのは無いだろな。
200197:2008/06/15(日) 19:32:28 ID:jcYRz71J
>>199
たぶんそれだ。やってみたらわかった。
それか可能性としては、
WScriptの使えない場所(なんかのマクロとかで)で使おうとしているのかもしれない。



しかし、面白いな。"CDO.Message"か。
受信は、"MAPI.Session"らしい。
昔、BASP21でやったことあるけど、当時はこんなのしらなかった。
201名無し~3.EXE:2008/06/16(月) 11:10:05 ID:oNTE9LVr
ありがとうございます >>197

ただそうすると
oMsg.TextBody = "件名" & vbCrLf & myText
がSubjectに挿入されず,添付ファイル名が挿入してしまいます。

前起動したときはそうならなかったのですけど。

何度もお手数おかけします。
202名無し~3.EXE:2008/06/16(月) 14:40:47 ID:vFGvsFla
自分でデバッグ出来ない奴はスクリプト書くなよ
これは交通法規も知らない(免許のない)奴は車で公道を走るなってのと同じだ
エンジン掛けてギヤ入れてアクセル踏んでハンドル切れば車は動くが
それだけでは公道で車を運転する資格にはならない
スクリプトもとりあえず書くだけなら小学生でも出来るし、そのままで動くこともあるが
問題が起きたときにデバッグ出来ない奴は、スクリプト書けるとは言えないし書く資格もない
車の運転でも、公道を走る前にまず交通法規や運転技術を身に付けるように
スクリプトでも実用コード書く前に、まず構文規則とデバッグを身に付けなきゃならない


と、最近のあまりにも無気力な丸投げ質問に渇を入れてみました
203名無し~3.EXE:2008/06/16(月) 14:52:48 ID:ykhvW0pF
突っ込み所が満載な例えを出さないの。
204名無し~3.EXE:2008/06/16(月) 15:31:18 ID:SHT72aOI
そうでもないか。
205名無し~3.EXE:2008/06/16(月) 18:09:59 ID:BCDUeaPm
とりあえず何でもいいから書かないと身に付かないよ。
デバッグ出来ない奴は書くななんて言っちゃったらずーっとそのまんま。

最大限自分でなんとかするって心構えは必要だと思うけど。
最終的に他人に聞いて解決するにしても、それ以前の試行錯誤がないと
経験値にならないし、伸びる見込みもない。そういう奴は書いても無駄。
206名無し~3.EXE:2008/06/16(月) 22:00:00 ID:uMi9mtpF
書くだけじゃなにも身に付かんよ
君も言ってるが、「それ以前の試行錯誤」ってのがデバッグなわけで
そうやって、書いた上で「考えないと」身に付かん

例えば
Set objText = objFs.OpenTextFile(WScript.Arguments(0))
なら
WScript.Arguments.Count で、1つ以上の引数が渡されてるか
objFs.FileExists で、その引数をパスとするファイルが存在するか
そういうのを確認してからOpenTextFileする、そういう試行錯誤(デバッグ)が必要なわけよ
その後のReadAllも、ファイルが空だとエラーになるから、AtEndOfStreamで確認する
そうやってただ書くだけではなく、面倒がらずに処理を一つ一つ追っていけば
どの行ではなくどの処理がエラーになってるか解るし、そこまで解れば
質問するまでもなく解決する話かも知れない
そういった最低限のデバッグには、手間は要るがたいした知識は要らない

>>196のコードが書けるなら、WScript.Arguments.Countや
objFs.FileExistsに行き着くのはそう難しいことではないはず
なのにエラーが出たらそこで思考停止して他人に丸投げし
自分で試行錯誤する気が全くない、そういうところがダメなわけで
207名無し~3.EXE:2008/06/17(火) 06:41:32 ID:vvTweahD
 >>196のコードが書けるなら

それ、どっかのホームページからのコピペでしょ。
こんだけのコードが書けるヤツがデバッグすらできないはずは無い。
デバッグって言っても、ただ print 文や echo 文を入れまくるだけなのにね。
まるごとコピーしただけで理屈が分かってないから
何を print させればいいのかがわからない。だからデバッグできない。
208名無し~3.EXE:2008/06/17(火) 10:48:55 ID:563mmLYl
ところで、4行目というのは

Set objText = objFs.OpenTextFile(WScript.Arguments(0))

のことで良いのかな。
もしそうなら、ファイルをドロップして引数に与える分にはエラーになる箇所じゃない罠。

ただ、メールの件名(WScript.Arguments(0))にファイルのフルパスを与えるとは考えにくいから、
コマンドラインから手入力でファイル名だけ引数に与えているのだとすると、
その場合、カレントディレクトリを変更していない為のエラーはありえるかも。
209名無し~3.EXE:2008/06/19(木) 21:14:00 ID:PbO/hOTC
>>196

下のスクリプトは動いたので、問題はないように見えますが・・?

'Dim f
'Set oMsg = CreateObject("CDO.Message")
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objText = objFs.OpenTextFile(WScript.Arguments(0))
myText = objText.ReadAll
objText.Close

WScript.echo myText

Set objFs = Nothing
Set objText = Nothing

ドラッグしたファイルはtest.txtで中身は
 あいうえお。
 かきくけこ。

あいうえお。
かきくけこ。 と表示されました。

上の皆様がおっしゃっている内容を確かめてみるとよいかと。
なんの助けにもなってませんねー
210名無し~3.EXE:2008/06/19(木) 21:25:25 ID:PbO/hOTC
209です。
おれも皆様の力を借りたいことがあります。

Vistaでインストールされた更新プログラムのリストを表示させるスクリプトを作ろうと思ったのですが、よい方法はないでしょうか?
難しいのはアプリケーションのリストではなく、MicroSoftからの更新プログラム(KB〜みたいな)であるという点です。

XPではレジストリの以下の場所から一覧を取得するだけなので楽だったのですが、
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\
VistaではUninstallのキーはあってもその中に更新プログラムのキーがない。
同じ方法では取得できません。
レジストリがダメならWMI?WindowsInstallerオブジェクト?

よい方法を知りませんか?
211名無し~3.EXE:2008/06/20(金) 15:40:25 ID:GKZ2+8+R
212名無し~3.EXE:2008/06/21(土) 10:49:13 ID:m1Ys5slR
ありがとうございます。 >>211
上のURLを参考に、Vistaのhotfixを取得することができました。
・・でも少し抜けてるんですよね。ServicePack(KB936330)とか。
URLのコードにあった、Win32_QuickFixEngineeringを参考に調べていたら
ttp://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept05/hey0930.mspx
でなんかいけるかもなのでがんばってみます。
ありがとうございました!

今回試したスクリプトは以下
'---------------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuickFixes = objWMIService.ExecQuery _
("Select * from Win32_QuickFixEngineering")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set TextFile = objFSO.OpenTextFile("C:\test.txt", 2, True)

TextFile.Write "Computer,Description,Hot Fix ID,Installation Date,Installed By" & vbCrLf

For Each objQuickFix In colQuickFixes
TextFile.Write objQuickFix.CSName & "," & objQuickFix.Description & "," & objQuickFix.HotFixID & ","_
& objQuickFix.InstallDate & "," & objQuickFix.InstalledBy & vbCrLf
Next

TextFile.Close
213名無し~3.EXE:2008/07/15(火) 14:01:02 ID:MSaMbScD
コマンド実行unixの xx.sh > /dev/null 2>&1 にあたるリダイレクトってWindowsで出来ますか?
214名無し~3.EXE:2008/07/15(火) 14:07:31 ID:THmV8Aue
>>213
それはどうなるの?UNIXをあんまり使ったことが無いから判らないけどヌル箱の代わりはNULっていうデバイスがあるよ。
というより、スクリプトを出したほうがやりたいことが判りやすくてよいのではないかと。
215名無し~3.EXE:2008/07/15(火) 15:25:38 ID:I42WGyiI
要するに標準出力を捨てて標準エラー出力を標準出力として出力したいってことでしょ
216名無し~3.EXE:2008/07/15(火) 15:39:11 ID:THmV8Aue
そういうことはスクリプト内部を変更しちゃうからわからないなぁ。
ためしに今cscriptでNULにリダイレクトしてみたらハンドルが無効だぞハゲって言われちゃったよ。
217名無し~3.EXE:2008/07/15(火) 19:21:02 ID:+Z+QfLmA
>>215
違う。標準出力と標準エラー出力をまとめて捨てる。

>>213
コマンドプロンプト上で hoge.bat > nul 2>&1 ってのはできるけど、
リダイレクトはシェルの機能だから、WSHで出来るのかどうかは
わからないな。
Execメソッドで "cmd.exe /c hoge.bat > nul 2>&1" みたいに
やれば動くかもしれないけど、今試せる環境がないので未確認。
218名無し~3.EXE:2008/07/15(火) 19:26:35 ID:THmV8Aue
プロンプトを見たくないならRunの第二引数を0にすれば良いんじゃないかな。
219名無し~3.EXE:2008/07/15(火) 21:10:44 ID:xfeqMLQj
cscript >NUL 2>NUL

ふつうにできますが何か?
220名無し~3.EXE:2008/07/18(金) 08:57:51 ID:m/LYbVKS
>>219
StdOutやStdErrを使ったスクリプトでやってみてよ。
221名無し~3.EXE:2008/07/18(金) 09:21:37 ID:/qFN6kNU
w2kだが5.6 jpが入ってるところへ5.7をインストールしたら
日本語リソースそのまま使うみたいで5.7が日本語になった
222名無し~3.EXE:2008/07/18(金) 15:14:06 ID:XFnK5WyO
>>220
wscript.stdout.writeline 1
wscript.stderr.writeline 2
できるけど?
223名無し~3.EXE:2008/07/18(金) 15:30:19 ID:m/LYbVKS
>>222
>>216の時には出来なかったのだけど、今やったらなぜか出来た。
訳がわからんがまあいいか。
224名無し~3.EXE:2008/07/22(火) 14:37:12 ID:1x3O0bQO
>>216はwscript.exeだろ?
225名無し~3.EXE:2008/07/22(火) 16:04:02 ID:m8H9p6l1
いんや、CSCRIPTだったよ。
そうしたら(null) ハンドルが無効ですってコンソールに出た
226名無し~3.EXE:2008/07/23(水) 13:29:19 ID:H4TSZYUl
CScript の標準入出力は、バージョンによってちょっとずつ挙動が違うよ
自宅のVistaで試したコードが、職場の2kだと動かないとかザラ
227名無し~3.EXE:2008/07/23(水) 18:55:12 ID:kx1E3i+M
そりゃさすがにバージョンダウンは無理やろ
228名無し~3.EXE:2008/07/26(土) 15:54:20 ID:saqPtqJr
あるフォルダの中のその週に作業されたファイルを集計したいんですけど、ファイル属性で第何週目とかないんでしょうか?
あるいはロジックで上手いこと検出する方法はないでしょうか?
229名無し~3.EXE:2008/07/26(土) 16:06:55 ID:xOhG5Vbs
>CScript の標準入出力は、バージョンによってちょっとずつ挙動が違うよ
そうかぁ?標準入出力は内蔵FilsSystemObjectだから変わらんと思うが
230名無し~3.EXE:2008/07/26(土) 17:08:58 ID:elGRh4zI
>>229
日付で見ればいいじゃん
週ごとにするなら年ごとに第一週が何日あるかデータベース作れば
簡単に何周目かが分るし、つうか年またぎどうすんだ
231名無し~3.EXE:2008/07/26(土) 17:20:43 ID:WB4RWxle
>>228
今週作業したファイルを抽出したいって話なら、
ファイルの更新日時が何日前かを取得して、その値がWeekday(Now)以下なら今週。
232228:2008/07/26(土) 18:25:58 ID:kbSenNqx
>>230-231
ありがとうございます。今週分が必要なので>>231でいけそうです。
何日前かを計算するのは日付からNOWを引いて、答えの整数部分で考えればいいですよね?
233名無し~3.EXE:2008/07/26(土) 19:02:39 ID:icWXyyQo
>229
変な動きするのもある。
StdIn.Read(1)すると、一行読み込んだ上で先頭の1文字返す
(なので、その時点ではおかしくないのだが、次のReadの際には残りが捨てられている)
とか、そんな変な挙動をするものがある。
234名無し~3.EXE:2008/07/26(土) 19:09:23 ID:WB4RWxle
>>232
>何日前かを計算するのは日付からNOWを引いて、答えの整数部分で考えればいいですよね?
それだと誤差が出るはずなので、いったんそれぞれをDAYで丸めてから引き算した方がいい。
235名無し~3.EXE:2008/07/26(土) 23:47:05 ID:yRWXnRv/
>233
それは単なるバグじゃないのか?
「古いバージョンには○○なバグがある」 って言えば、「ふうんなるほど」 で話が終わるものを
「バージョンによってちょっとずつ挙動が違う」 なんて書くから誤解される。
236名無し~3.EXE:2008/07/27(日) 02:20:08 ID:EoLlJkI3
WScript.StdInの実装バグなので
Set StdIn=WScript.StdIn
StdIn.Read(1)
とすればよかったような
237名無し~3.EXE:2008/08/04(月) 17:45:05 ID:qtSSqajn
IE自動操作してるんだけども、
input type= file にはPCから wsh 実行しても入力出来ないのですか?

せっかく本まで買ってvbs覚えようとしてるのに、困った…(´・ω・`)
238名無し~3.EXE:2008/08/04(月) 18:56:19 ID:IyBaEu56
金玉ウィルスでも作るつもりか?
239名無し~3.EXE:2008/08/04(月) 20:27:14 ID:qtSSqajn
(`・ω・´)金玉なんて作るわけないでしょ!
240名無し~3.EXE:2008/08/04(月) 22:34:43 ID:tB95YHdp
つSendKeys
241名無し~3.EXE:2008/08/04(月) 23:53:35 ID:qtSSqajn
>>240
ありがとう、スマートじゃないけどその方法で取りあえず上手くいきました
242名無し~3.EXE:2008/08/05(火) 05:36:14 ID:gDmp4m0n
金玉ウイルスって何?
玉筋ウイルスなら知ってるが。
243名無し~3.EXE:2008/08/05(火) 17:42:33 ID:KazUXVcD
球筋ウイルスってなに?
キンタマウイルスなら知ってるが。
244名無し~3.EXE:2008/08/06(水) 09:28:25 ID:Wr7qdPjn
以下for(;;)
245名無し~3.EXE:2008/08/06(水) 11:24:45 ID:aAYjTfjb
break;
246名無し~3.EXE:2008/08/13(水) 19:55:03 ID:6iS3g15e
POWERSHELLってこのスレの人的に見てどうなの?
VBSで出来たことが全部出来るんですか?
247名無し~3.EXE:2008/08/15(金) 09:31:12 ID:B0JNZm6F
PowerShell はすばらしいですよ。
PowerShell を使えば、あなたの仕事がはかどります。
PowerShell ならシステムの管理が獲活に行えます。
例えて言うなら エスペラント語 みたいなもんです。
248名無し~3.EXE:2008/08/17(日) 13:31:35 ID:U69J/FrR
獲活?
249名無し~3.EXE:2008/08/28(木) 22:26:26 ID:uWfeBCSV
たぶん円滑
250名無し~3.EXE:2008/08/30(土) 14:11:12 ID:d0tUT80M
統合アーカイバプロジェクトのKBA.DLLをインストールして使ってみたのですが、複数ファイルをドロップした時に思うように動作してくれません。
例えば、

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oZIP = CreateObject("KBA.ZIP")

For Each sArg in WScript.Arguments
if FSO.FileExists(sArg) Then
oZIP.OpenArc sArg
MsgBox "1:" & sArg & "2:" & oZIP.ArcName
oZIP.CloseArc
End if
Next

上記スクリプトに、zipファイルを1つドロップした場合、「1:ドロップしたファイル名2:ドロップしたファイル名」とメッセージが出るのですが、
2個以上のzipファイルをドロップすると、1個目のファイルは「1:ドロップしたファイル名2:ドロップしたファイル名」、
2個目以降は「1:ドロップしたファイル名2:」となってしまいます。

OpenArcメソッドを使わなければ、それ以外のメソッド、ArcCmd(圧縮・解凍などの各種操作)・FileCount(格納されているファイルの総数を返す)などは複数のファイルでも正しく処理できます。
書庫の情報を取り出したり書庫内ファイルを検索するために書庫ファイルを指定するのがOpenArcメソッドですが、呼び出すと2個目以上のファイルの処理に問題が出るようです。
CloseArcメソッド(リファレンスには「OpenArcで結びつけたハンドルを解放する」とあります。)も機能していない?ようです。

更新日も古く、使っている人が少ないのか、googleでもほとんど情報を得られませんでした。どなたか、助言お願いします。
251名無し~3.EXE:2008/08/30(土) 21:28:30 ID:Oes8pJ1M
知らんけど、毎回オブジェクト作成→解放してみるとか
252名無し~3.EXE:2008/08/30(土) 21:44:45 ID:4ib5BU+k
jscriptでIEを操作して、「フォームを送信して結果の本文を取得する」
ってのをやろうとしています。

debug用に IE.Visible = true; で試しているところですが、
IE.Navigate2 でPOSTしてフォームの送信に成功し、結果が表示されるところ
まではできています。

しかし、その後 IE.document.body.innerhtmlや.innertextはもちろん、
IE.locationnameすらも取得できません。(nullが返る)
もちろん IE.ReadyState == 4 である事は待ってから取得しています。

こんなことってあるんでしょうか。
本文など情報を取得するにはどうすればよいのでしょう。
253252:2008/08/30(土) 22:57:59 ID:4ib5BU+k
IE.locationnameは取得できていることがわかりました。
たまたまデバッグしていたページのタイトルが空だっただけでした。

やはりIE.document.body.innerhtml, .innertextは取得できません。
254名無し~3.EXE:2008/08/30(土) 23:26:37 ID:sDyQKTTJ
間違ってるだけ
255名無し~3.EXE:2008/08/30(土) 23:47:47 ID:DSTdld3c
innerHTML innerText
VBじゃないんだから正しく書け。
256252:2008/08/31(日) 00:00:23 ID:Vnde2TRN
>>254-255
う…
その通りでした。ありがとうございます。

存在しないプロパティならエラーになるはずだと思っていたので、エラーに
ならない以上そういう問題はないと思いこんでしまっていました。
257名無し~3.EXE:2008/08/31(日) 22:46:35 ID:6Tzy7HL9
質問です
PowerShell というのはつまり
なんちゃって Perl
なわけですか?
258名無し~3.EXE:2008/08/31(日) 23:08:58 ID:EaFSdaSA
CGI=Perlと思っていたあの頃・・・
259名無し~3.EXE:2008/09/02(火) 22:39:04 ID:/oXppw8S
下のVBSとJScriptは同じ動作をするんですが、なぜJScriptのほうで var objSys = enumSys.item(); という手間がひとつ多く必要なのかがよくわからんのです。
どなたか教えてプリーズ。

-----VBS
Set wmi = GetObject("winmgmts:")
Set SystemSet = wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem")
for each System in SystemSet
 WScript.Echo "Caption: " + System.Caption
 WScript.Echo "Version: " + System.Version
 WScript.Echo "Memory: " + System.TotalVisibleMemorySize
next

-----JScript
var wmi = GetObject("winmgmts:");
var SystemSets = wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem");
for(var enumSys = new Enumerator(SystemSets); ! enumSys.atEnd(); enumSys.moveNext()) {
 var objSys = enumSys.item();
 WScript.Echo("Caption: " + objSys.Caption);
 WScript.Echo("Version: " + objSys.Version);
 WScript.Echo("Memory: " + objSys.TotalVisibleMemorySize);
}

あと、JScriptでWMIとかをいじる時に、オブジェクトの中身を見られるメソッドみたいなものがあれば教えて欲しいです。
enumSys.toSource()
だと「実行時エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。」と言われてしまいます。
260名無し~3.EXE:2008/09/02(火) 22:53:39 ID:UTiA0o1v
enumSysはEnumeratorオブジェクトだから
オブジェクトの中身って何
261名無し~3.EXE:2008/09/02(火) 23:20:06 ID:uJm2pAsf
>>259
自分でtoSourceをr定義する
262259:2008/09/03(水) 00:23:11 ID:JepG4paN
>>260
言われてみたら new Enumerator でオブジェクトを作ってた。
全然目が届いてなかったぜ。ありがとう

>>261 が自分で作れと言ったので9割コピペで捏造した。

function printProperty(obj) {
 for (var prop in obj){
  WScript.Echo(prop + " -> " + obj[prop]);
 }
}
<略>
for(var enumSys = ...
 var objSys = enumSys.item();
 printProperty(objSys);

だけど、なにも表示されない。
>>259 のコードで少なくとも .Caption と .Version と .TotalVisibleMemorySize は在るのがわかってるので、printProperty の for ループは最低3回はまわるはず(だよね?)
「->」だけの表示でもいいから3回は表示されると思ったんだけどその表示も無し。

神よ添削してくだされ。
263259:2008/09/03(水) 01:01:10 ID:JepG4paN
当初の目的は達成できました。
.Properties_ ってなんだよ!そんなの知らなきゃわかんないよ!って気分になりました。
moz-addon.g.hatena.ne.jp/ZIGOROu/20071101/1193945908 さんありがとう。

for(var enumSys = new Enumerator(SystemSets); ! enumSys.atEnd(); enumSys.moveNext()) {
 var objSys = enumSys.item();
 for(var enumProp = new Enumerator(objSys.Properties_); ! enumProp.atEnd(); enumProp.moveNext()) {
  WScript.Echo(enumProp.item().name + " -> " + objSys[enumProp.item().name]);
 }
}

「こんな局面のときは .Properties_ ってのが使えるぜ」みたいな知見は経験を積むしかないんだろうか?
あるいは体系的に学習すれば身につくレベルの話?
264名無し~3.EXE:2008/09/03(水) 01:27:09 ID:rs8DnNaP
経験かな
エンジンのバージョンごとにバグがあって
それに気が付かずに悩んだりすることもあるし
265名無し~3.EXE:2008/09/04(木) 19:27:26 ID:l2+9WVFc
WSH(JavaScript)でIEを操作するスクリプトを書いています。

IE = new ActiveXObject("InternetExplorer.Application");
IE.Visible = false;
IE.Navigate("http://www.google.com/");

てなことをやっていると、全く操作ができなくなることがある。
IE.Visible = true;
にして確認してみると、
「セキュリティの警告」
「セキュリティで保護されたページを表示しようとしています」
というポップアップが出ていて、OKをクリックしてやらない限りWSHからは
操作できないようだ。

こういうダイアログが出ているかどうかを確認して、出ていたらOKを押す、
というのはどうすればいいですかね。
266名無し~3.EXE:2008/09/04(木) 19:51:14 ID:2bJj6jy/
>>265
IE.Visible = true;

で、いいんじゃね?
267名無し~3.EXE:2008/09/04(木) 19:53:27 ID:l2+9WVFc
trueにすれば
ポップアップが開いたことをスクリプトから調べる方法
そのポップアップのOKを押す方法
はあるということ?どうすればいい?
268名無し~3.EXE:2008/09/04(木) 19:58:57 ID:2bJj6jy/
「スクリプトから」はしらない。
269名無し~3.EXE:2008/09/04(木) 20:13:30 ID:l2+9WVFc
あぁ、人が見てOKすればいいってことですか?
うーん、自動化したいということと、人がOK押してる間に
IE.ReadyState == 4で先に進んじゃうのよね。操作できないのに。

IE.Navigate("どっか");
while(IE.ReadyState != 4) {
  WScript.Sleep(250);
}
ほげほげ;

IE.Navigate("べつのどっか");
while(IE.ReadyState != 4) {
  WScript.Sleep(250);
}
ふがふが;

ってなことをしていて、"どっか"の時点で警告が出ると、さくっとほげほげの
処理を通り過ぎて"べつのどっか"へのNavigateを実行するけど失敗して、
かつReadyStateは4のままだから、人がOKを押す前にふがふがまで行ってしまう。

というわけで、(ほんとはやだけど)最悪OKは人が押すとしても、警告のせいで
IEの処理が止まってる事をスクリプトから把握できないと困るのよ。

できないとなると、こういうのを回避する別のいい方法はないかなあ。
270名無し~3.EXE:2008/09/04(木) 23:43:29 ID:xy3FNoG2
If .AppActivate(ダイアログのタイトル) Then .SendKeys "OKのショートカットキー"
271名無し~3.EXE:2008/09/05(金) 00:11:56 ID:ymZX69/d
トンクス、明日やってみる

if WScript.Shell.AppActivate("ダイアログのタイトル") {
    WScript.Shell.Sendkey("ショートカット");
}

JavaScriptだからこうかな。
VBScriptはオブジェクト名を省略できるの?
272名無し~3.EXE:2008/09/05(金) 00:14:55 ID:+9TG1vLi
VBScriptでもJScriptでもwith
273名無し~3.EXE:2008/09/05(金) 14:11:28 ID:8iLTXUTa
>>265
たぶんみなさん確実に私より詳しそうだから、全然はずしていたら読み飛ばしてください。

IEを操作するときは、どこかで、objIE.Navigate("about:blank") でブランクページを
作ってから目的のページに飛ぶほうがいい、って書いてあって(ように思う)
私は何も考えずにそうしてます。そういう問題ではないですか?

(っていうか、一旦ブランクにする理由はすっかり忘れてしまって、ググッたけど、
見つけられなかった。どういう意味なのか知っている人がいたら解説してほしいです....)
274名無し~3.EXE:2008/09/05(金) 14:48:19 ID:+9TG1vLi
しないほうがよい
275265:2008/09/05(金) 17:03:26 ID:VTJ1fL7j
>>273
IE.Navigateの問題ではなくて、モーダルダイアログに阻まれて元アプリの
コントロールができなくなる話なので、本質的にはIEに関係ないと思う。
たぶんIE.Visible = false;なのにGUIからしかコントロールができない
API設計のへぼさが問題だと思うけどしょーがないみたいね。
とりあえず>>270-271でうまくいったのでそれでいい事にする。

ところで、ActiveXObject()でオブジェクトを作るとエラーの判定ができる
けど、 wsfで<object />を使って作ると判定できないのかな。

ScriptPW.Passwordを使ってスクリプトを書いていたらscriptpw.dllが無い
環境でエラーになる事がわかったから判定したいけど、<object />で
作っていたので返り値で判断ができない。
<object />を使う場合は絶対失敗しない事を確信できる状況でしか使うな
ってことなのかな。

使えば使うほどかゆいところに手が届かない感じがしてくるなー。
ちょっとしたことに使うなら便利なんだけどさ…。
276名無し~3.EXE:2008/09/05(金) 18:13:47 ID:+9TG1vLi
<object id=hoge />
TypeName(hoge)で確認
277名無し~3.EXE:2008/09/05(金) 19:29:24 ID:VTJ1fL7j
>>276
すまん、俺が悪かった。
問題はそれ以前に、エラーになったらその時点で実行が止まっちゃう事にあった。

オブジェクトを作成できなくても実行を続けるにはどうすればいいかな。
278名無し~3.EXE:2008/09/07(日) 09:27:05 ID:F9Z8qgIn
HTAStopとNoScript(Firefoxのアドオンではない)で無効に設定しているので使ってません。
279名無し~3.EXE:2008/09/07(日) 21:28:33 ID:Bfr7d4al
>>274
IEなんて使わないで直接取りに行ったら?
POSTもできるし
Function PrintHttpDocSimply(url,param)
Dim oXmlHttp
Set oXmlHttp = CreateObject("MSXML2.XMLHTTP.4.0")
oXmlHttp.Open "POST", url , False
oXmlHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
oXmlHttp.send param
PrintHttpDocSimply = oXmlHttp.responseText
End Function

paramは ”hoge=hoho&baka=kaba&momar=hiroyuki”
とか入れておけばいい
280名無し~3.EXE:2008/09/07(日) 21:38:59 ID:TQSameT9
なぜ全角文字を混ぜる
281265:2008/09/08(月) 02:45:23 ID:K462bD72
>>279
>>274じゃないけど反応してみる

さっぱりわからんので教えてくらはい。

再帰してるのはなぜ?
PrintHttpDocSimplyの引数が(url, param)なのにoXmlHttp.responseTextだけ
渡すのでいいの?
つーかそもそもoXmlHttp.responseTextはどこで定義されているの?
282名無し~3.EXE:2008/09/08(月) 06:42:42 ID:L5IL5s6b
VBScript Function でぐぐれ
283265:2008/09/08(月) 16:13:17 ID:TQKBbcaA
ぐぐった。
VBScriptにはreturnが無いのね。
もしかして再帰できないの?と思ったら再帰の呼び出しはcallを使うのか…。

>>279
サンクス。
>>275にも書いたように>>270-271でなんとかしちゃったけど、後で試してみる。

あと>>277は、try {} catch() {}すればいい事に気がついた。
284名無し~3.EXE:2008/09/10(水) 00:05:22 ID:nQEAey34
wshとは直接関係無いけど

Windowsのシステム内でのレジストリとWMIの位置付けの違いがよくわからん
レジストリは設定の保存場所だろ?
WMIも設定の保存場所…なのか?
285名無し~3.EXE:2008/09/10(水) 01:11:02 ID:+SACXhEc
>>282
MSXML2.XMLHTTP.4.0 というObjectでいろいろ定義されている
古いOSならいざ知らずたいがいの環境で使えるのが吉
286名無し~3.EXE:2008/09/10(水) 01:20:16 ID:bhv+KmqL
昔作ったBATを置き換えようかと思ってるんだけど
%~dpnx1とか%~n1とかどう取得するの?
287名無し~3.EXE:2008/09/10(水) 01:59:46 ID:VUGKxJpv
>>286
コマンドラインパラメータの取得なら
WshArguments オブジェクト
http://msdn.microsoft.com/ja-jp/library/cc364463.aspx

パスの分解なら
FileSystemObject のメソッド
http://msdn.microsoft.com/ja-jp/library/cc428078.aspx
各種 Get****Name


なげーよカスと思っても口にしてはいけないよ。
288名無し~3.EXE:2008/09/10(水) 15:55:55 ID:TB/+ZEHL
サーバーのデスクトップ画面をリモートから保存したい
クライアントでATバッチ実行してサーバにBATのrunasでadmin権限取得用vbsをechoで作成して実行するようにスケージュル
指定時間になったら、サーバで上で自動作成されたadmin.vbsが実行されてクライアントの中のcap.batが実行される
cap.batでサーバのデスクットプ画面を保存するadmin.vbsは実行後にadmin.vbsで削除される

一応動いたけどサーバでcap.bat実行中の画面が保存されるので困っている
runasでsendkeys使っているので非表示でbatを起動することはできないのでsendkeyが終った後にcap.batの最小化又はウィンドウサイズを位置を変更したい
↓の方法も試しましたがコマンドプロンプトの画面はaltキーが反応してないみたいで使えませんでした
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1210643057

wshで実行中のコマンドプロンプトの最小化又はウィンドウサイズを位置を変更する方法はありませんか?
289名無し~3.EXE:2008/09/10(水) 20:49:57 ID:xOxjqnd6
わざわざそんなことせずともできると思うが、具体的に
290286:2008/09/11(木) 07:01:11 ID:KjAck0oQ
>>287
thx
291at.bat part1:2008/09/11(木) 08:49:14 ID:xAqasSGI
>>289
@echo off
@REM 実行するアプリとスケジュール時間
set RUNBAT=\\%COMPUTERNAME%\z$\bat\リモート\run_remote_pc.vbs
set RUNTIME=7:30

call :time_run

echo PC名 ping 内容 時間%h%時%m%分%s%秒>>atlog.txt
@REM ----------------------------------------------------------
for /F "tokens=1" %%a in (pclist.txt) do call :sub1 %%a
GOTO :EOF

@REM ----------------------------------------------------------
:sub1
SET LIST=%1
:PING
SET PING=ERR_LAN
ping /n 1 %LIST% | find "Reply" >tmp1.txt
for /F "tokens=1" %%a in (tmp1.txt) do SET PING=%%a
del tmp1.txt
IF NOT %PING%==Reply GOTO NGLAN
:OKLAN
echo Dim WshShell>\\%LIST%\c$\at_admin_run.vbs
echo Set WshShell = CreateObject(^"WScript.Shell^")>>\\%LIST%\c$\at_admin_run.vbs
echo WshShell.Run ^"runas.exe ^/user:megaoak\kanazawa ^"^"c:\at_admin_run.bat^"^" ^", 2 >>\\%LIST%\c$\at_admin_run.vbs
echo WScript.Sleep(100)>>\\%LIST%\c$\at_admin_run.vbs
echo WshShell.AppActivate(^"runas.exe^")>>\\%LIST%\c$\at_admin_run.vbs
echo WScript.Sleep(1)>>\\%LIST%\c$\at_admin_run.vbs
echo WshShell.SendKeys(^"kanazawa{ENTER}^")>>\\%LIST%\c$\at_admin_run.vbs
echo Set objFSO = WScript.CreateObject(^"Scripting.FileSystemObject^")>>\\%LIST%\c$\at_admin_run.vbs
echo objFSO.DeleteFile ^"c:\at_admin_run.vbs^">>\\%LIST%\c$\at_admin_run.vbs
292at.bat part2終り:2008/09/11(木) 08:54:52 ID:xAqasSGI
echo start wscript //nologo ^"%RUNBAT%^">\\%LIST%\c$\at_admin_run.bat
echo Del c:\at_admin_run.bat>>\\%LIST%\c$\at_admin_run.bat

AT.exe \\%LIST% %RUNTIME% /interactive c:\at_admin_run.vbs

echo %LIST% %PING% 接続OK %h%時%m%分%s%秒>>atlog.txt

GOTO :EOF

@REM ----------------------------------------------------------
:NGLAN
call :time_run
echo %LIST% %PING% 接続NG %h%時%m%分%s%秒>>atlog.txt
GOTO :EOF

@REM ----------------------------------------------------------
:time_run
@REM --/現在時刻のHとM取得/--start
for /F "tokens=1,2,3 delims=:" %%a in ("%TIME%") do set h=%%a&set m=%%b&set s=%%c
@REM 秒先頭の2桁
set s=%s:~,2%
echo -%h%時%m%分%s%秒-
@REM 先頭の0を取り除く
if %h% LSS 10 set h=%h:~1,1%
if %m% LSS 10 set m=%m:~1,1%
if %m% LSS 10 set s=%s:~1,1%
@REM --/現在時刻のHとMとS取得/--end
GOTO :EOF

↑↑これで一応動くようになったけど、テストしたらサーバで下のメッセージがでて5台しか成功してなかった

スクリプト"\\クライアントPC\z$\bat\リモート\run_remote_pc.vbs""(コンピュータへの接続数が最大値に達しているため、これ以上このリモートコンピュータに接続できません。)。
293名無し~3.EXE:2008/09/11(木) 18:03:54 ID:oxo2U/u+
minimizeall
294名無し~3.EXE:2008/09/11(木) 18:08:49 ID:WF6Xi3UD
>>293
全部のウィンドウが最小化するとサーバで起動中のアプリの画面をスクリーンキャプチャーできない
特定のウィンドウのみを最小化,移動,サイズ変更したい

なぜかわからないが、runas使わなくても動いたのでソースがシンプルになりました
また明日検証してみる
295名無し~3.EXE:2008/09/11(木) 18:13:23 ID:oxo2U/u+
>全部のウィンドウが最小化するとサーバで起動中のアプリの画面をスクリーンキャプチャーできない

???

>↓の方法も試しましたがコマンドプロンプトの画面はaltキーが反応してないみたいで使えませんでした

コマンドプロンプト以外には使えるんだろ?
296名無し~3.EXE:2008/09/11(木) 20:10:09 ID:WF6Xi3UD
コマンドプロンプトの画面のみを最小化,移動,サイズ変更したい
297名無し~3.EXE:2008/09/11(木) 21:57:27 ID:z48R5mCN
> コンピュータへの接続数が最大値に達しているため、これ以上このリモートコンピュータに接続できません。
Windows Server使え
298名無し~3.EXE:2008/09/11(木) 22:49:58 ID:WF6Xi3UD
>>297
windowsクライアントからwindowsサーバに対して実行してるから無理です
その問題はsambaサーバにキャプチャーしたpngファイルを保存する事にして解決しました
299名無し~3.EXE:2008/09/11(木) 23:17:17 ID:oxo2U/u+
start /min 続きバッチ
300名無し~3.EXE:2008/09/12(金) 06:57:04 ID:DXz7uta5
>>299
startで最小化あるんですね
ありがとう試してみます
301名無し~3.EXE:2008/09/16(火) 21:31:25 ID:OqBWXUZ3
301
302名無し~3.EXE:2008/09/19(金) 11:28:54 ID:9tqS9cEB
atでサーバをリモートでキャプ取るのできた
キャプソフトはccap.exe スクリーンセーバキャンセルできてPNG保存可能で197KB
exeやvbsをアクセス権フリーな状態のsambaに置いて後は普通にATコマンドのスクリプト書くだけだった
303名無し~3.EXE:2008/10/17(金) 19:19:30 ID:XaGw/LzA
職場でノートパソコンの更新があったが
ひきづつきwshは使えるようだ、よかった。
304名無し~3.EXE:2008/10/31(金) 22:10:39 ID:pltrwarm
webでツールバーとかアドレスバーとか戻るボタンがないブラウザ画面がポップアップすることがありますが、vbsであの状態のIEを呼び出せないでしょうか?
305名無し~3.EXE:2008/10/31(金) 22:25:34 ID:hqP79kIz
MenuBarとかToolBarとか
ttp://msdn.microsoft.com/en-us/library/aa752084(VS.85).aspx
306名無し~3.EXE:2008/10/31(金) 22:37:56 ID:pltrwarm
おおこんな便利なページがあるんですか!ありがとうございますいろいろ遊んでみます
307名無し~3.EXE:2008/10/31(金) 22:48:15 ID:pltrwarm
あははは楽しいです。
美しくないコードかもしれないけど結果は良好です。

Set IE = CreateObject("InternetExplorer.Application")
ie.menubar=false
ie.AddressBar=false
ie.toolBar=false
ie.visible = true
ie.navigate2 "http://www.google.co.jp/"
308名無し~3.EXE:2008/11/08(土) 16:14:45 ID:CSQUIZij
そういう書き方しかないべさ
309名無し~3.EXE:2008/11/16(日) 12:13:26 ID:jsDDDVhU
IEで動くVBSを書いていますが、
Setinterval で Subプロシージャを呼び出すときに
引数をSubプロシージャに渡したいのですが、エラーになります。
Googleも調べてみたのですが、解決できていません。

今書いている(エラーになる)コードは

Sub First
ID = window.setInterval("chk(" & a & ")", Time, "vbScript")
End Sub

Sub chk(b)
処理
End Sub

です。引数にはIPアドレスが入っています。

エラーは ')'がありません です。
エラーダイアログの"ライン"は 1 ですが、ソースの1行目はまったく関係ない内容(Dim定義)です。
おそらく、Setintervalの書き方の問題だと思うのですが、どなたかお解かりになりますか?
310名無し~3.EXE:2008/11/16(日) 14:52:18 ID:frYs1RTI
"chk(""" & a & """)"
311名無し~3.EXE:2008/11/30(日) 11:30:40 ID:42N27sG3
312名無し~3.EXE:2008/12/01(月) 02:28:06 ID:tUazuBOQ
質問させてください。
vbsからbatファイルを起動させて、当該batファイルの戻り値を取得したいです。

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("return.bat")

return.batは正常時0、異常時1を返します。
このbatをvbsから起動させた場合、戻り値はどのように取得できるのでしょうか。
よろいしくお願いいたします。
313名無し~3.EXE:2008/12/01(月) 18:29:13 ID:YhZLL2V/
ExitCode
314名無し~3.EXE:2008/12/01(月) 18:32:18 ID:SxqUT20G
315名無し~3.EXE:2008/12/03(水) 15:22:38 ID:ZqYgpyCA
Runを使えよ
316名無し~3.EXE:2008/12/04(木) 23:56:02 ID:mdmbOzTn
そんなのしRun
317名無し~3.EXE:2008/12/14(日) 13:59:58 ID:vsQqgwYe
今日初めてVBSを触りました。

IEのコンテキストメニューからパスワード生成を行えるように
したいのですが(ググったらコードでてきたのでそのまま利用)
実行するとInputBoxに書けませんというエラーが出ます。どうしてでしょうか?
メニューに登録したファイルの内容は↓
<SCRIPT LANGUAGE="VBScript">
<拾ったコード>
</SCRIPT>
拡張子はhtmにしてあります。
このファイルを直接ダブルクリックした場合は実行されますが、
右クリックからの起動はうまくいきません。
318名無し~3.EXE:2008/12/14(日) 14:09:33 ID:Pv8LMZtA
>>317
<SCRIPT LANGUAGE="VBScript">
<修正済みコード>
</SCRIPT>
319名無し~3.EXE:2008/12/14(日) 15:36:33 ID:pZTS1TIH
InputBoxは使えんよ
promptに変えろ
320名無し~3.EXE:2008/12/14(日) 17:05:33 ID:vsQqgwYe
むぅ・・・そうなのですか。
やってみます。
321名無し~3.EXE:2008/12/31(水) 13:16:01 ID:rgPn1704
322名無し~3.EXE:2009/01/06(火) 18:31:56 ID:/SR1ia3E
WScript.Echo("あけおめ");
323名無し~3.EXE:2009/01/09(金) 06:16:49 ID:QF8xGOdd
そんなに言うなら・・・ほら、開けましたよ

    \     毛       /
  腿  \_  |   _/
          彡彡彡
          ミミミミ クリトリス
         ミミミミ / ̄ ̄ ̄ ̄
         ノ σ ヽ 尿道
       / / ゚ヽ ̄ ̄ ̄ ̄
大陰唇 / //\\ \
 ̄ ̄ ̄ ̄  ( (   ) ── 錠前
      \ \\// /
         `   \/  '
\         *──肛門
  \_____/\_____/
324名無し~3.EXE:2009/01/09(金) 16:03:23 ID:Mg2wGxpw
ドメインに参加しているクライアントPC側で、パスワードの変更をすることはできるのでしょうか?
Ctrl+Alt+Del で出てくる「パスワードの変更」と同等の処理をしたい。
325名無し~3.EXE:2009/01/09(金) 17:01:35 ID:Mg2wGxpw
>>324 です。
自己解決しました。
ttp://www.vector.co.jp/soft/winnt/util/se248538.html
これで、やりたいことはできました。
326名無し~3.EXE:2009/01/09(金) 22:38:41 ID:xLY5sfUA
あげ。

>>215
念のために言うと、213は標準出力も標準エラー出力も/dev/nullに落ちるぞ。
327名無し~3.EXE:2009/01/09(金) 23:17:31 ID:lsbTOzQV
うしゅ
328名無し~3.EXE:2009/01/10(土) 01:18:20 ID:NcbVfhx+
329名無し~3.EXE:2009/01/15(木) 12:48:53 ID:j2IRk/B4
330名無し~3.EXE:2009/01/21(水) 13:20:20 ID:ngdCDsJZ
331名無し~3.EXE:2009/02/02(月) 11:51:14 ID:g/gk+65f
ho
332名無し~3.EXE:2009/02/06(金) 01:53:11 ID:QaTxAdVH
抽選プログラムを作るのだが、さっぱりです。
配列作って、名前格納して、ランダム数を返してとやろうと思うが、
プログラミング知識がないからどの関数、オブジェクト等使ったらいいかわからない。
わかる人みてたら教えてください。
333名無し~3.EXE:2009/02/06(金) 02:08:13 ID:RtieZEZ2
>>プログラムを作るのだが、

まず、ここが間違ってね?
334名無し~3.EXE:2009/02/06(金) 05:19:21 ID:P6lp/+Jv
>>332
Array、Randomize、Int、Rnd、UBound
変数を宣言するならDim、結果をダイアログ表示するならMsgbox

とりあえずこれで事足りるはず
ここはコード作成依頼所ではないのであとは自分で頑張りましょう

まぁ頑張るのが嫌だから諦めるってなら構わないが
頑張るのが嫌だから全部教えてってのは無しの方向で
335名無し~3.EXE:2009/02/06(金) 14:14:09 ID:92cdMgwW
>>334
ちゃんと教えてやれや
336名無し~3.EXE:2009/02/06(金) 22:17:43 ID:+iF1QBvo
ちゃんとやれよ。
以上。
337名無し~3.EXE:2009/02/06(金) 23:00:35 ID:92cdMgwW








んこ
338名無し~3.EXE:2009/02/07(土) 14:45:14 ID:TgO/tMu7
はいよ。
けっぱれ、VBScript!

Dim arrRes: arrRes = Array("大吉", "中吉", "小吉", "凶", "豚")
Dim iMax: iMax = UBound(arrRes) + 1
Randomize(Second(Time))

Do
If MsgBox(arrRes(Int(iMax * Rnd)), vbOKCancel) = vbCancel Then Exit Do
Loop
339名無し~3.EXE:2009/02/07(土) 15:11:11 ID:3rhOouhW
ありがとうございました
340名無し~3.EXE:2009/02/09(月) 23:20:19 ID:+sxPMNu/
WSHってバッチのGOTOみたいに処理って飛べない?
341名無し~3.EXE:2009/02/09(月) 23:43:05 ID:zHc9nJdI
使う言語次第だな
まあ大抵の言語はサポートしてるんじゃないか
342名無し~3.EXE:2009/02/10(火) 12:32:38 ID:K3mAHF4Y
↓この辺に、アンチ後藤
343名無し~3.EXE:2009/02/10(火) 23:03:08 ID:s6VWMy5j
URLエンコードをJscriptでやろうと思っているのですが
http://pc8.2ch.net/test/read.cgi/win/1126543183/156
のスクリプトを拝借したところURL全部がエンコードされてしまいます

http://www.tagindex.com/tool/url.htmlでURLを変換した時のような
「://」や「/」だけをエンコードすることはできないでしょうか↓
http%3a%2f%2fpc11%2e2ch%2enet%2ftest%2fread%2ecgi%2fwin%2f1190548945%2f
344名無し~3.EXE:2009/02/10(火) 23:59:22 ID:e11qerpL
URLエンコードをなんだと思(ry
目的がはっきりしているなら置換すりゃいいだけでしょ。
345名無し~3.EXE:2009/02/11(水) 12:41:23 ID:ooGgBaiE
フォルダを指定してコマンドプロンプトを開きたいのですがどのように記述すればよいのでしょうか?
346名無し~3.EXE:2009/02/11(水) 13:08:59 ID:tgWaCZf2
>>345
WshShell のカレント・ディレクトリを指定してから cmd を Run 。
347名無し~3.EXE:2009/02/11(水) 15:49:08 ID:ooGgBaiE
ありがとうございます。
一発のコマンドではできないんですね
348名無し~3.EXE:2009/02/11(水) 16:35:20 ID:CvOFcaSe
1行でってこと?
349名無し~3.EXE:2009/02/11(水) 18:10:18 ID:rw23u0Y9
WScript.CreateObject("WScript.Shell").Run "cmd /C start /D ""C:\Program Files"""
・・・なんかアホっぽい
350名無し~3.EXE:2009/02/11(水) 21:41:53 ID:18BMTdnd
cmd.exe "/K pushd {ディレクトリ}"
351名無し~3.EXE:2009/02/11(水) 22:47:23 ID:bH/mfyuf
入力された値が全角と半角の区別と、数値と文字の判定はどうやってするんだ?
文字で入力された場合にエラーとなるように表示したいんだが、判定がわからないからIf文で制御できないでいる…
352名無し~3.EXE:2009/02/11(水) 23:21:04 ID:ooGgBaiE
>>346-350
ありがとうございました
DOSの奥深さを知りました
353名無し~3.EXE:2009/02/12(木) 00:14:53 ID:nInNR6uz
AscB(MidB(文字, 2, 1))で2バイト目をチェックすれば分かる。
0なら半角
255なら、
 1バイト目を判定して、ある範囲なら半角カナ、それ以外は全角英数。
それ以外は全角

数値判定はIsNumeric使えば?
354名無し~3.EXE:2009/02/12(木) 18:46:38 ID:BS0CoEcR
プロポーショナルフォントのときはどするんだよ
355名無し~3.EXE:2009/02/12(木) 19:00:14 ID:s5GtsH1h
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
356名無し~3.EXE:2009/02/12(木) 19:13:16 ID:Qshlqz+a
どうせなら、シフトJIS以外の文字はどうするの?とか聞きゃいいのにw
357名無し~3.EXE:2009/02/12(木) 19:53:58 ID:6AmfxfN0
ADODB.Stream とかつかって、
Shift-JISに変換してバイトをチェック。
358名無し~3.EXE:2009/02/12(木) 20:11:14 ID:Qshlqz+a
だめだめシフトJIS以外の文字が?に化けちゃう
359名無し~3.EXE:2009/02/12(木) 20:17:06 ID:6AmfxfN0
?は全角としてよいのでなくて?
360名無し~3.EXE:2009/02/12(木) 20:58:32 ID:Qshlqz+a
?が全角でよいのか?
361名無し~3.EXE:2009/02/12(木) 22:15:21 ID:yGo0O3rT
日中韓以外には半角文字しかないよ。全角なんて概念ない。
本格的に考えだしたら、ギリシャ文字やキリル文字はどっち
(現地では半角相当なわけだ)という問題にぶち当たるが。
362名無し~3.EXE:2009/02/12(木) 22:17:16 ID:14FRFwWR
残念!ここは日本でした!
363名無し~3.EXE:2009/02/12(木) 22:38:23 ID:6AmfxfN0
>>357の方法での変換は、確かにShift_JISで当てはまらない文字は?になってしまう。

そもそもシフトJIS以外の文字の全角半角というのがいまいち微妙なのだが。
例えばどういう文字がどう判定されればいいの?
364名無し~3.EXE:2009/02/12(木) 22:43:48 ID:Qshlqz+a
シフトJIS以外の文字と判定されればいいんじゃない?
365名無し~3.EXE:2009/02/13(金) 00:46:46 ID:GyB/HYmf
文字集合と文字符号化形式の区別から始めるのか
366名無し~3.EXE:2009/02/13(金) 01:01:42 ID:em1rkTtF
静聴、静聴、パチパチ
367名無し~3.EXE:2009/02/13(金) 15:27:59 ID:em1rkTtF
どうぞ?
せいぜい蘊蓄を傾けてくだされ
368名無し~3.EXE:2009/02/13(金) 16:27:27 ID:TOy+BjMd
薀蓄は続けるんじゃないの?
耳を傾けるってこと?
369名無し~3.EXE:2009/02/13(金) 16:35:27 ID:em1rkTtF
ぐぐれば?
370名無し~3.EXE:2009/02/15(日) 00:08:45 ID:Kr0N6mCn
InputBox等でOKやキャンセルボタンを表示させないやり方ってありますか?
OKだけ表示とか。
PopUpメソッドだといろいろ表示ボタンがあるみたいですが、
非表示についてはなかったので。
371名無し~3.EXE:2009/02/15(日) 06:05:49 ID:N0kUIzB/
windowのソフトAを画面上半分、ソフトBを画面半分に並べるというこ
とはできますか? たとえばエクセルとワードのときを例にプログラム例を
教えてもらえませんか?
372名無し~3.EXE:2009/02/15(日) 06:08:32 ID:s0W7pGqf
無いよ
欲しければ作るしかない

ScriptFormなどのGUIが作れるCOMでWSHから作るか
お望みのGUIダイアログを持つCOM自体を自作するかはお好みで

そもそもWSHは、目的ドンピシャのことをやるものではなく、
とりあえず結果的に目的が果たせれば良いって時に使う簡易言語なので
足りないならまだしも余分だというのは許容するのが筋ですよ

GUIにも拘って開発したいなら、まともな開発言語使うがよろし
373名無し~3.EXE:2009/02/15(日) 16:32:00 ID:G5QYYO1i
>>371
タスクバーを右クリック→上下に並べて表示
374名無し~3.EXE:2009/02/26(木) 13:40:21 ID:74qHNQ1Q
なるほど
ありがとうございました
375名無し~3.EXE:2009/03/01(日) 21:51:18 ID:gOSlt3Kv
メモ帳がCOMとして扱えるようになると地味に便利なのではなかろうか、とふと思う
376名無し~3.EXE:2009/03/01(日) 23:44:20 ID:3NzW+Snc
ActiveX.exeのテキストエディタなら既にあるが
Win標準のメモ帳でないとダメか?
377名無し~3.EXE:2009/03/02(月) 22:26:34 ID:arqPendI
>>376
メモ帳だとなんかロマン感じるやん?みたいな
378名無し~3.EXE:2009/03/03(火) 13:12:03 ID:BcrRQftY
>375
 禿同、カーソル位置とかだけでも取得できればね〜
379名無し~3.EXE:2009/03/03(火) 13:32:14 ID:f8ZUsgB3
WSHから、他のアプリケーションを起動して、キー入力を送るときに
Sleep 100 のようにアバウトな方法で立ち上がるのを待つのではなく、
目的のアプリケーションがしっかり立ち上がった上でキーを送りたいんですが
そういうのを確認?というか通知してくれる機能とかはないですか?
380名無し~3.EXE:2009/03/03(火) 19:29:47 ID:8wLn83/t
>379
ie以外はプロセス監視でcpu使用率みるとかかな
381名無し~3.EXE:2009/03/03(火) 19:36:09 ID:L/JNpHyI
とりあえずAppActivateでウィンドウが立ち上がってることだけは確認できるが
入力を受け付ける段階に達してるかまで調べる手段は無い

CPU使用率も、アテになるものもあれば、アテにならないものも数多く存在する

そもそも、立ち上がり方ってのはアプリによって千差万別なんだから
汎用的な確認方法が有ると思う方が間違いだ

まともなプログラム言語使う場合でも、確認方法は対象に合わせて変えるものだ
382379:2009/03/04(水) 09:37:02 ID:cFHD5IR4
>>380-381
レスありがとうございます。
自分が対象とするアプリケーションでは、
ウィンドウが立ち上がって、且つCPU使用率が0になったら大丈夫そうなので、
その組み合わせでやってみます。
383名無し~3.EXE:2009/03/04(水) 21:31:08 ID:Pr9L9Uwr
WSHではSub以外に呼び出すコマンドある?
Runだと引数渡せないから処理を任せれないんだよね。
384名無し~3.EXE:2009/03/04(水) 22:09:46 ID:mhRd9Fi7
ShellExecute
385名無し~3.EXE:2009/03/04(水) 22:40:02 ID:Pr9L9Uwr
For文で繰り返しの中にIf文で条件付けて、Subを呼び出すと、
Subの処理が終わるとFor文の続きからになるから、自分の思うようにできない。
For文の初期化や、抜けるコマンドってありますか?
386名無し~3.EXE:2009/03/04(水) 22:41:17 ID:Pr9L9Uwr
ShellExecuteですか、調べてみます。
ありがとうございます。
387名無し~3.EXE:2009/03/04(水) 22:52:03 ID:KsZ3PBdL
>>385
Exit For
388名無し~3.EXE:2009/03/04(水) 23:46:37 ID:Pr9L9Uwr
Subの中でExit forつかえない!?
389名無し~3.EXE:2009/03/05(木) 00:02:44 ID:kdsQQi4S
Subの中で使うのではない
Subが終わってからForの中で使うのだよ

Subの中の条件によってExit Forする場合は
SubではなくFunctionにして、返した値によって
Exit Forするようにすれば良いだけの話
390名無し~3.EXE:2009/03/05(木) 01:07:30 ID:kiioCP+g
同じプログラム内で、SubとFunctionの併用は可?
391名無し~3.EXE:2009/03/05(木) 01:30:26 ID:lTIYg1zm
出来ないわけないじゃん
392名無し~3.EXE:2009/03/05(木) 01:39:45 ID:kiioCP+g
単純に構文ミスじゃね?
393名無し~3.EXE:2009/03/05(木) 01:45:47 ID:lTIYg1zm
もしかして、
> 同じプログラム内で、SubとFunctionの併用
ではなく
> 同名のプロシージャを、SubとFunctionの併用
なんてバカげたことしてるのでは?
394名無し~3.EXE:2009/03/05(木) 20:57:05 ID:KZRYQf4w
>379
 AutoItX の ControlSend を試してみるテもあるかな?
395名無し~3.EXE:2009/03/10(火) 01:05:58 ID:xAIJZTrp
var CN = WScript.CreateObject("ADODB.Connection");
CN.Open("DRIVER=SQLite3 ODBC Driver;Database=C:\\test.db");
CN.Execute("CREATE TABLE table1 (id, value);");
CN.Execute(".mode tabs table1;");
CN.Execute(".import import.txt table1");
CN.Close; CN = null;

SQLITEを使ってtest.db・table1を作成してタブ区切りのデータの入ったimport.txtから
データをインポートしようとしていますのですが、上記コードでは4行目で
near".":syntax error(1)のエラーが出てしまいます
コマンドプロンプトから3行目以下のSQL文と同じことをしてもエラーは出ません
どなたか助言をお願いします
396名無し~3.EXE:2009/03/10(火) 08:43:22 ID:j332ggtn
こういうソース見るたびにPowerShellにいけばいいのに、って思ったり
397名無し~3.EXE:2009/03/10(火) 16:54:27 ID:ihqAJi46
>>395
それならコマンドプロンプトを叩いたほうが早くないか?
398名無し~3.EXE:2009/03/10(火) 17:11:24 ID:fEB3/UWG
名前付きオブジェクトのオブジェクト名を省略してるからでねえの?
399名無し~3.EXE:2009/03/11(水) 12:05:01 ID:vW724bJL
>>396
そのソースに関してどのへんがPowerShellのほうに優位性があるのかkwsk
400名無し~3.EXE:2009/03/11(水) 19:40:59 ID:twyHq6vM
400
401名無し~3.EXE:2009/03/11(水) 19:54:07 ID:1yMJqijd
>>398
すみませんちょっと詳しくお願いします・・・
>>397
この先にだらだら他のこともするつもりなので・・・
402名無し~3.EXE:2009/03/12(木) 00:01:37 ID:SOq4v93w
>>401
コマンドプロンプトを叩くというのは、exec/runするってこと
対話的に実行したいならstdin/outを使えばいいし、シンプルでかまわないならコマンドに入出力(入力に関してはあらかじめスクリプトから出力)を指定してもいい
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20080805/312155/?ST=develop&P=2
403名無し~3.EXE:2009/03/18(水) 18:29:56 ID:1TDARhEw
Set objWSHShell = CreateObject("WScript.Shell")
objWSHShell.Run "notepad.exe まいでーた.txt"

↑を実行するとファイルが無い旨表示され新たにファイルを作るかどうか聞かれます。
これを、聞かれないようにする方法を教えてください
404名無し~3.EXE:2009/03/18(水) 18:32:32 ID:lUi0VL8q
中身は空でいいから先にファイルを作っておけばいい。
405名無し~3.EXE:2009/03/18(水) 18:34:05 ID:1TDARhEw
>>404
ありがとうございました。
406名無し~3.EXE:2009/03/18(水) 19:10:54 ID:mFXZ2vvQ
>>404
objWSHShell.CurrentDirectory =を実行しておく必要がないか?
407名無し~3.EXE:2009/03/18(水) 22:26:49 ID:8Qf0t6c/
別に無いけど
408名無し~3.EXE:2009/04/02(木) 14:38:26 ID:QbNgX8wt
なるほど
409名無し~3.EXE:2009/04/02(木) 16:55:40 ID:+fKY4eWZ
なるほど っていいたいだけだろ
410名無し~3.EXE:2009/04/02(木) 18:58:56 ID:QbNgX8wt
なるほど
411名無し~3.EXE:2009/04/02(木) 23:43:54 ID:qVgeHPAh
ファイル書き込みテストをしたいのですが、
タイムスタンプと書き込み成功、失敗をログに書き出したいのですが、
よいサンプル教えていただけませんか?
412名無し~3.EXE:2009/04/02(木) 23:56:44 ID:gu6GB/nX
>>411
最初からサンプルソースクレクレではなく
自分で書いて、解らないところを質問しろ
413名無し~3.EXE:2009/04/03(金) 00:44:12 ID:APA4RBWO
414名無し~3.EXE:2009/04/03(金) 10:38:18 ID:NpKi9nyK
VBSで引数で受け取った文字列にユニコードが含まれていた場合に
その部分を削除するにはどうしたらいいんでしょうか?

♠スペード ♣クラブ ♥ハート ♦ダイヤ

スペード クラブ ハート ダイヤ
415名無し~3.EXE:2009/04/03(金) 19:38:06 ID:1ttVetc2
VBSって正規表現なかったけ?まさかね
416名無し~3.EXE:2009/04/03(金) 19:45:37 ID:mozVT+aj
yes
417名無し~3.EXE:2009/04/03(金) 21:00:30 ID:OSCytWtJ
>>414
ユニコード文字を削除したら
「♠スペード ♣クラブ ♥ハート ♦ダイヤ」

「」
になるよ

「ス」はUnicode:0x30B9だし、「ペ」はUnicode:0x30DAと、どちらもユニコードの文字。
はっきり言えば「♠スペード ♣クラブ ♥ハート ♦ダイヤ」全体がユニコードの文字列。

おそらく、君がやりたいのは
「文字列にユニコードが含まれていた場合にその部分を削除する」
ではなく
「文字列にShift_JISに存在しない文字が有ったらその部分を削除する」
なんじゃないの?

後者の場合は、Shift_JISには存在しない
「♠♣♥♦」が削除され、
Unicode文字ではあるが、Shift_JISにも存在する
「スペード クラブ ハート ダイヤ」が残ることになる。
418名無し~3.EXE:2009/04/03(金) 21:11:23 ID:lHKXNTuI
>>417
それぐらいエスパーしろよ・・・。
419名無し~3.EXE:2009/04/03(金) 21:32:00 ID:mozVT+aj
>>418
>それぐらいエスパーしろよ・・・。
それおかしいだろ?
スキーヤしろって言うか?スキーしろって言うだろ?
420名無し~3.EXE:2009/04/03(金) 21:51:46 ID:n9mseU0m
アナルレイパーします。
421名無し~3.EXE:2009/04/03(金) 23:55:00 ID:qJkg0oeA
>>418
エスパー(意図の酌み取り)は後半でしてるじゃん。
単に前半で要求仕様通りだとこうなるって説明を入れてるだけで。
422名無し~3.EXE:2009/04/04(土) 01:24:53 ID:I1MEWlLr
なるほど
423名無し~3.EXE:2009/04/04(土) 16:44:40 ID:iSitawJj
>>422
アナルレイパーって何?
424名無し~3.EXE:2009/04/09(木) 04:20:14 ID:GTF3L2c8
分からないならレスしないでください
425名無し~3.EXE:2009/04/09(木) 07:35:35 ID:oUfTSnN8
このスレ開くと脳内にジャッカー電撃隊のOPが流れる・・・
426名無し~3.EXE:2009/04/09(木) 20:30:56 ID:GA22GXlP
WScript.ShellのPopupで第二引数を指定すると、n秒後に閉じることが出来ますよね?
これと同じようなことをInputBoxでやりたいんですが、どうすれば良いですか?
OKが押された場合、キャンセルが押された場合、どちらも押されずに指定秒数が経過した場合
の3通りでその後の処理を分岐したいです。

WinXP/WSH5.6で、dllなどの新規インストールは出来ない環境です。
427名無し~3.EXE:2009/04/09(木) 20:33:03 ID:awHYC9DT
ほかの方法を考える。
428名無し~3.EXE:2009/04/09(木) 21:46:13 ID:GA22GXlP
他の方法って何でしょうか?

WinXP標準環境のVBSで使えるGUI入力
表示位置、初期入力値指定可能
OK、キャンセル、指定秒数が経過、の分岐が可能

の条件を満たしていれば、InputBoxじゃなくてもいいんですけど
他の方法でこれらを満たす物がありますか?
429名無し~3.EXE:2009/04/09(木) 22:30:28 ID:GTF3L2c8
WScript.ShellのExecで子を起こしてそっちでInputBox出しな
430名無し~3.EXE:2009/04/09(木) 23:52:12 ID:Q72d+ivs
ClassとTimeOut使えば出来るな
TimeOutしてもClassのデストラクタは実行されるから
431426:2009/04/10(金) 00:45:11 ID:jnrC655t
>>429
ありがとうございます。
その方法でも目的は達っせそうですが、処理を書くファイルが分散するのは
好ましくないので、今回は>>430の方法でやることにします。


>>430
出来ました。
こんな方法があったなんて目から鱗です。
ありがとうございました。
432名無し~3.EXE:2009/04/10(金) 08:36:09 ID:wD95lKKk
w
433名無し~3.EXE:2009/04/10(金) 20:31:43 ID:cPEXIVrz
vbscriptの
Property Let
について、できるかぎり調べたんですが
複数の引数を渡す方法がわかりません
どうしたらいいですか?
434名無し~3.EXE:2009/04/10(金) 20:53:40 ID:YxXQFkOF
>>433Script56.CHMに思いっきり書いてあるわけだけど・・・
本当にできるかぎり調べたの?

>arglist
>Property Let プロシージャを呼び出すときに、Property Let プロシージャに渡される引数を表す変数のリストを指定します。
>複数の変数を指定する場合はカンマ (,) で区切ります。(ry
435名無し~3.EXE:2009/04/10(金) 20:53:46 ID:1fjQi+ry
>>433
' 定義
Property Let PropertyName(arg1, arg2, value)
WScript.Echo arg1
WScript.Echo arg2
WScript.Echo value
End Property

' 代入
.PropertyName("引数1", "引数2") = "値"
436名無し~3.EXE:2009/04/10(金) 21:30:34 ID:cPEXIVrz
>>434
もちろんモニターぶち破るほど凝視しました

> ' 定義
> Property Let PropertyName(arg1, arg2, value)
>   WScript.Echo arg1
>   WScript.Echo arg2
>   WScript.Echo value
> End Property
>
> ' 代入
> .PropertyName("引数1", "引数2") = "値"

単一引数では
.PropertyName = "値"
ですよね?
引数が増えるたびに左辺側が増えていくんですか?

個人的感覚では

.PropertyName = "値1", "値2", "値3"

なんじゃないかと思ったんですが。
437名無し~3.EXE:2009/04/10(金) 22:10:23 ID:1fjQi+ry
> 引数が増えるたびに左辺側が増えていくんですか?
そうだよ
ヘルプの定義も [Public | Private] Property Let name ([arglist,] value) ってなってるでしょ?
先に省略可能不定数のarglistが来て、最後に単一必須のvalue

> 個人的感覚では
> .PropertyName = "値1", "値2", "値3"
> なんじゃないかと思ったんですが。
プロパティってのはそもそも単一の値(value)を渡す概念だよ。
それ以外の引数(arglist)は値というよりは値の代入先への条件的なもの

例えばグリッド(升目)の3行6列目に"test"を入力する場合に
Property Let GridValue(row, column, value)
と定義して
.GridValue(3, 6) = "test"
って感じ

2chへの書き込みを行う場合で、名前、メール、本文を渡すみたいに、同列の値を複数渡すなら
Sub Write2ch(name, mail, text)
と定義して
Write2ch "名無しさん", "sage", "テスト"
だな

君の先入観とは食い違うのかも知れないが、そういうものだと納得して貰うしかない
どうしても
.PropertyName = "値1", "値2", "値3"
的なことがやりたいなら
Property Let PropertyName(values())
WScript.Echo values(0), vbCrLf, values(1), vbCrLf, values(2) ' Join(values, vbCrLf)
End Property
と定義して
.PropertyName = Array("値1", "値2", "値3")
438名無し~3.EXE:2009/04/10(金) 22:42:09 ID:cPEXIVrz
>>437
わかりました
Property Letをメンバ変数群へのセッターとして使おうとしてましたが
SubかFunctionを使うようにします。
439名無し~3.EXE:2009/04/14(火) 20:30:33 ID:xC/x9gm6
wshからPCをサスペンド(スタンバイ)状態にしたいんですけど、
%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState
を使った方法では休止状態が有効な場合休止状態(ハイバネ―ション)になってしまい、どちらか選べなくて困っています

確実にサスペンド(スタンバイ)に移行できる方法はありませんか?ご教授願います。
440名無し~3.EXE:2009/04/15(水) 03:37:35 ID:HDTq4yYe
441439:2009/04/15(水) 18:45:22 ID:WeeZsX7B
>>440
ありがとうございます
でもこれだとエクセルの無い環境では使えませんよね・・・

そちらのタスクマネージャを使う方法も見ましたがこちらのOSがVistaなので利用できませんでした。
他の方法はないのでしょうか・・・
442名無し~3.EXE:2009/04/15(水) 19:16:40 ID:kP3+rv1F
>>441
Vistaならshutdown.exeコマンドを呼べばいいと思う。
443439:2009/04/15(水) 20:55:52 ID:WeeZsX7B
>>442
なるほど!そういう方法があったのですね。
よろしければスタンバイに移行するコマンドを教えていただけないでしょうか?
444名無し~3.EXE:2009/04/16(木) 00:17:56 ID:NLAwaM+Q
shutdown/?
445名無し~3.EXE:2009/04/16(木) 00:33:25 ID:uDkOsXWB
タグがバラバラな複数のログを集計したいと思います。
最初の一行目がタグ情報となっており、2行目以降にデータがあります。
区切り文字は「,」です。
指定したタグの情報を取得出来るスクリプトを探していますがサンプルとか
ないですか?

私自身、全くプログラミングの経験がなくて途方に暮れてます。
何していいかさっぱり分かりません・・
自力でなんとかしたいものですが、おすすめのサイトとか
書籍があれば教えてください。
446名無し~3.EXE:2009/04/16(木) 00:50:04 ID:CA45KrUU
いきなりタグとかログとか汎用的な言葉出されても困る
区切り文字ってことはCSVなのか? タグ情報って列名のこと?
447名無し~3.EXE:2009/04/16(木) 01:34:22 ID:jAc01HJm
> 指定したタグの情報を取得出来るスクリプトを探していますがサンプルとか
> ないですか?
スクリプトは基本的に探すものではなく書くものだぞ
何処かにあることを知ってるなら、それを使うのもいいが
人に聞いてまで探すような物じゃない

> 私自身、全くプログラミングの経験がなくて途方に暮れてます。
誰だって最初はそうですよ

> おすすめのサイトとか
何のためにテンプレがあるんだかちょっとは考えよう>>2-5

あとは勉強して実際に書いてみて、どうしても行き詰まったら
具体的にどういう処理をしたくて、どういうコードを書いて、どういう不都合があるのか
また質問においで

ここはスクリプト作成依頼所じゃないので、丸投げでそういうの書いてとかは無しでよろしく
448名無し~3.EXE:2009/04/16(木) 01:55:33 ID:P+x7Pij7
カンマ区切りテキスト(CSV)形式なら、MS-Access/Excel とか OpenOffice.org Base/Calc で集計すりゃいいんじゃないの
まぁしょっちゅうやるならモジュール作ったりした方がいいかもしれない

職場で運用するとかで、どうしてもWin標準添付のモノでしかやっちゃいけないとか、
運転中のシステムのログの集計結果を1時間毎に出す必要があるとか、
ってな制約があるならしょうがないけど、無理にスクリプトを使う必要は無いんじゃないかな
(それならなおさら素人がやるもんじゃないとは思うが)

個人的にはスクリプトでそういうのやるなら perl が楽だと思う
449名無し~3.EXE:2009/04/16(木) 14:47:47 ID:a1NQuIWX
wshで何か一から書こうとするといっさいプログラム言語触ったことがない香具師にとってはハードル高い
(使うだけならともかく)
少なくても素のVisualBasicよりは確実に難しい
ファイル入出力はfso使うとか構造つかむまでそれなりに時間がかかった覚えがある
450439:2009/04/16(木) 19:06:52 ID:sZceJi2u
>>444
ハイバネートのコマンドはあったんですがサスペンドのコマンドが見つからないんですが・・・
やっぱり不可能なんですか・・・?
451名無し~3.EXE:2009/04/16(木) 21:13:09 ID:NLAwaM+Q
vbc/?
452名無し~3.EXE:2009/04/16(木) 23:37:17 ID:gd9zV5VO
おお本当だsuspendにはサスペンドの選択肢がないね。

まあググってみるとこんな感じのコードがいっぱい見付かる。
Set sh = CreateObject("Shell.Application")
sh.Suspend

肝心のMSは実装してねえぞと主張しているのが気掛かりではあるが。
ttp://msdn.microsoft.com/en-us/library/bb774100.aspx
453名無し~3.EXE:2009/04/16(木) 23:57:29 ID:Xx+Mg3lY
っていうか>>440をExcel無しで実行する方法で良いのでは?
454439:2009/04/17(金) 00:19:26 ID:ykM6yz16
>>452
ありがとうございます
試してみましたが反応なしでした・・・

>>453
Excelを使わない方法とはタスクマネージャを使う方法のことですか?
Vistaではメニューにシャットダウンの項目がないんで使えませんでした・・・
455名無し~3.EXE:2009/04/17(金) 01:29:48 ID:qPzkE+HH
> Excelを使わない方法とはタスクマネージャを使う方法のことですか?
違う
456名無し~3.EXE:2009/04/17(金) 02:19:42 ID:eS4a/KzE
CreateObject("Shell.Application").shutdownwindows
457439:2009/04/17(金) 17:41:05 ID:ykM6yz16
>>455
具体的にどういった方法のことですか・・・?

>>456
こっちは反応がありましたが、終了のダイアログが出るだけですね・・・
458名無し~3.EXE:2009/04/17(金) 19:55:59 ID:eS4a/KzE
sendkeys
459名無し~3.EXE:2009/04/21(火) 01:04:56 ID:sxyqTq+t
suspend.exe
460名無し~3.EXE:2009/04/26(日) 12:57:52 ID:hN24fcsP
    Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem") 
    For Each objOperatingSystem in colOperatingSystems 
        ObjOperatingSystem.Win32Shutdown(1) 
    Next
    Wscript.Echo "シャットダウン処理を実行しています。"


これを実行して"シャットダウン処理を実行しています。"と表示されるのに、
実際にはシャットダウンされない場合があります。
何が原因と考えられますか?
OSはXPSP2です。
461名無し~3.EXE:2009/04/26(日) 20:36:12 ID:JZHCdzJZ
>>460
引数がまずい。それだと未保存のメモ帳があるだけで止まる。
あとはWScript.EchoじゃなくてWScript.Shellのpopupメソッドで
時間経過したら閉じるようにすべきかも知れない。

しかし仮にスクリプトが正しかったとしても、そもそもWindowsの
シャットダウンがスクリプトからそんなに確実に実行できるもんなのか
という疑問もあるけどね。
462名無し~3.EXE:2009/04/26(日) 21:11:02 ID:6hbGqw4a
>>460
単純シャットダウンごときにわざわざWMI使う香具師初めて見た
いくつか他の方法あるのに
463名無し~3.EXE:2009/04/26(日) 21:24:18 ID:YxEmjG2Q
>>462
> 単純シャットダウンごときにわざわざWMI使う香具師初めて見た
なんてわざわざ言う香具師初めて見た
464名無し~3.EXE:2009/04/26(日) 22:54:07 ID:lJ+cDE8H
いくつかあるんならひとつくらい挙げる心遣いが欲しいぜ
465名無し~3.EXE:2009/04/26(日) 23:00:40 ID:YxEmjG2Q
代替法でなく、理由を知りたいんだろ
466名無し~3.EXE:2009/04/27(月) 01:10:28 ID:nVE9eCMf
なるほど
467460:2009/04/27(月) 08:22:11 ID:RCPGHJ3a
>>461
ありがとうございます
調べてみます

>>462
文法の意味を理解せず
スクリプト丸写しでやってるからです

参考にしたURL
ttp://www.microsoft.com/japan/technet/scriptcenter/scripts/desktop/state/dmstvb08.mspx
468名無し~3.EXE:2009/04/28(火) 00:42:11 ID:xpBMK336
469名無し~3.EXE:2009/05/03(日) 00:30:35 ID:nT+UO9ic
なるほど
470名無し~3.EXE:2009/05/04(月) 19:08:31 ID:pB9NsdJr
お前ら、PowerShell使ってますか?
471名無し~3.EXE:2009/05/06(水) 01:12:29 ID:IVrMxyMV
じぇーんじぇーん
472名無し~3.EXE:2009/05/06(水) 01:19:38 ID:i9i6Zpew
わしゃ今や PowerShell 9割、WSH 1割
473名無し~3.EXE:2009/05/06(水) 18:53:58 ID:aMrhoeJz
そんな便利なんか。使ってみるか
474名無し~3.EXE:2009/05/06(水) 23:45:14 ID:z83QDpCi
ほとんどのPCにまともにインストールもされていないものを覚えるのはどうも気が進まない。
475名無し~3.EXE:2009/05/07(木) 00:28:08 ID:iycG5mAd
先月からXPとVistaのビジネス系エディション向けには自動更新配布始まったな
476名無し~3.EXE:2009/05/07(木) 00:38:47 ID:zrBTZ2eF
WSHが自動削除されたら考えるよ。
477名無し~3.EXE:2009/05/07(木) 00:44:44 ID:xlSN69wH
GnuWin32を置き換えるために暇な時に勉強中。
grep -r hoge *
イコール
Get-ChildItem -recurse * | Select-String hoge
だけは覚えた。
478名無し~3.EXE:2009/05/07(木) 00:52:15 ID:zrBTZ2eF
スレあるよ。

Windows PowerShell 2.0
http://pc12.2ch.net/test/read.cgi/win/1221046998/
479名無し~3.EXE:2009/05/07(木) 01:20:52 ID:9lIDUGpx
WSHでDynaWrap使わんでもいいようにさえしてくれれば
それでよかったんだがなぁ。GUIはHTAで我慢できるし。
MSにはいまあるものをもっと大事に育ててほしいもんだ。
480名無し~3.EXE:2009/05/07(木) 01:28:17 ID:iycG5mAd
俺はScriptoMatic使わんでもいいようにさえしてくれればそれで
481名無し~3.EXE:2009/05/07(木) 04:33:33 ID:5VRTlytH
○Scriptomatic
×ScriptoMatic
482名無し~3.EXE:2009/05/07(木) 23:11:01 ID:m087N9RP
PowerShellはWSHを完全に置き換えるものじゃない。
PowerShellからWSHを利用するのもありだし
それに
483なんだ?オレに振られたのか?:2009/05/07(木) 23:40:21 ID:D2qIMiSw
PowerShellはWSHと違って、保存済みスクリプトファイルを実行することが既定ではできない。
ポリシー(=どーせレジストリ)で解除できるが。
484名無し~3.EXE:2009/05/07(木) 23:46:00 ID:cF08cEzM
まあ名前自体シェルとしか名乗ってないわけだしな
485名無し~3.EXE:2009/05/08(金) 15:04:23 ID:XEPp6UuS
なるほど
486名無し~3.EXE:2009/05/08(金) 19:04:02 ID:JrXQqf3G
で、PowerSHELLのデメリットは
・ほとんどのWindowsPCでインストールされていない。
・使える人も少ない。
・資料も少ない。
・保存済みスクリプトを実行できない・・・なんたらかんたら
ということですね。
それでは、PowerSHELLにはどんなメリットがあるのか?
CM明け、>>483さんに説明してもらいます。
じゃあCM!
487名無し~3.EXE:2009/05/08(金) 19:59:26 ID:52AvfZLw
まあ、.NET の機能をまるまる使えるんだから強力だわな
488名無し~3.EXE:2009/05/08(金) 20:27:29 ID:XEPp6UuS
なるほど
489名無し~3.EXE:2009/05/08(金) 20:46:52 ID:htxwcXFB
Windows7にPowerShell V2が標準搭載されるから
Windows7が普及してからだな
490名無し~3.EXE:2009/05/12(火) 17:49:17 ID:IqMqd3mw
なるほど
491名無し~3.EXE:2009/05/16(土) 21:31:26 ID:Rz66M/nY
プリンタのドライバインストール、設定ってWSHでできる?
492名無し~3.EXE:2009/05/16(土) 21:52:22 ID:/SzwN6cr
ドライバ関係なんて具体的には知らないが
C:\WINDOWS\system32\driversにファイルコピーして
ドライバ登録と設定情報をレジストリに書き込みするだけだよな?
そのくらいなら出来るけど素直にinfとかbat+reg使えよって言いたくなるな
493名無し~3.EXE:2009/05/18(月) 16:41:43 ID:1yzJEIC7
なるほど
494名無し~3.EXE:2009/05/23(土) 13:49:22 ID:b8XZakyb
WSHに管理者権限で実行するコマンドってありますか?
495名無し~3.EXE:2009/05/23(土) 16:15:09 ID:aVsYeng2
WSHにはないけど、COMを使うことでWSHで実現することは可能
ググれば情報有るから頑張って勉強しな
496名無し~3.EXE:2009/05/24(日) 15:48:57 ID:qyvwJUMs
WSHで、Volume control かWave のミュートを操作するサンプルってどっか落ちてない?

勤務先PCで User権限のみのXPSP3でつ。
497名無し~3.EXE:2009/05/24(日) 16:45:02 ID:QYLRzYcY
落ちてるものを拾うな
498名無し~3.EXE:2009/05/24(日) 17:14:06 ID:pl1xOw8Z
DirectXが入っていれば

' VBS
CreateObject("MSWebDVD.MSWebDVD").Mute = True 'でミュート、Falseでミュート解除

//JS
new ActiveXObject("MSWebDVD.MSWebDVD").Mute = false;//でミュート解除、trueでミュート

で出来るようだが。
499名無し~3.EXE:2009/05/24(日) 23:27:39 ID:qyvwJUMs
>>498
とりあえず、自PCのwin2kSP4 Power User権限では逝けました。
目的は達成させられそうです。ありがとうございました。


Part4からこのスレにいるのに調べれれないヘタレな俺。
500名無し~3.EXE:2009/05/26(火) 20:08:44 ID:YWv8ag1/
500
501名無し~3.EXE:2009/05/28(木) 18:55:09 ID:0aB6alpl
VBScript と JScript を交配させるたったひとつの方法
ttp://d.hatena.ne.jp/hasegawayosuke/20090516/p1
502名無し~3.EXE:2009/05/28(木) 19:47:35 ID:HudDQAtG
で?
使い道は?
503名無し~3.EXE:2009/05/28(木) 23:59:16 ID:6LvlcjwU
そこに山があるからさ
504名無し~3.EXE:2009/06/04(木) 15:20:12 ID:U2shAX9E
OutlookにコマンドラインからTODOなタスクを追加したいんだけど
どこかにサンプルないですか?

addtasktooutlook /high 腹筋1000回!

みたいなかんじで
505名無し~3.EXE:2009/06/04(木) 15:35:37 ID:jKnWPmzV
なんで解説ではなくサンプルを探すの?
そういう思考は浅はかな初心者の悪い癖だよ

サンプル探してその場を凌ぐのではなく
解説探して理解を深めようね

で、OutlookならコマンドラインではなくCOMとしてアクセスな
506名無し~3.EXE:2009/06/07(日) 17:53:10 ID:WTeLPH6o
VBSを使ってhtmlのソースから文字列を抜き出して使いたいのですが
文字参照で書かれた部分をちゃんと変換した後の形にする方法がわかりません
Replace関数で変換ということも考えたのですが、さすがに対応しなくてはいけないパターンが多すぎるので
何かいい方法ってないでしょうか?
507名無し~3.EXE:2009/06/07(日) 18:09:02 ID:nV3JrBhv
いったんDOMオブジェクトにするとか
508名無し~3.EXE:2009/06/07(日) 19:17:10 ID:d05Qikdv
set d=createobject("htmlfile")
d.innerHTML="{"
msgbox d.innerText
509名無し~3.EXE:2009/06/08(月) 06:20:18 ID:oqXReFxD
でも実際の所、常用されれる文字実体参照なんてそんなないよね
510名無し~3.EXE:2009/06/08(月) 12:10:20 ID:rvmZQbAH
だからなに?
511名無し~3.EXE:2009/06/08(月) 12:38:27 ID:ieBvgEr1
置換のほうが速いって
512名無し~3.EXE:2009/06/08(月) 12:42:16 ID:YSvVXFgQ
楽なのが一番だろ
513名無し~3.EXE:2009/06/08(月) 16:49:37 ID:ANWjb6BD
selectで一致したら変数に変換後のパターン放り込んどいて
最後にその変数使ってReplace関数かけるのが結局一番わかりやすくない?
514名無し~3.EXE:2009/06/09(火) 00:56:26 ID:mt6Snbpi
そんなに遅いのか?
515名無し~3.EXE:2009/06/09(火) 23:47:32 ID:n59VtdgS
>>513
>>508 みたいにスクリプト書いてくれれば他の人の役に立つよ
516名無し~3.EXE:2009/06/11(木) 12:35:34 ID:pvxygoc6
なるほど
517名無し~3.EXE:2009/06/21(日) 03:06:07 ID:pQN87Jvn
コンピュータのロック解除後やスタンバイ復帰後に、スクリプトの命令を実行するにはどのような方法があるでしょうか?

PCが一定時間操作されなかった場合に、既存のロックアプリを起動して解除後にダイアログ表示したいため、自作SCRファイル経由でロックアプリを起動し、その際にVBS(WSH)ファイルをキックしています。
ところが、ロックやスタンバイ時にプロセス(wscript.exe)が、SCRともどもロックやスタンバイ時に終了してしまうので、困っています。

通常(notepad.exeなど)は、ロック前にDo〜Loopで待機させ、WMIのイベント(当該アプリの起動と終了)を監視しておくことで、WSHの命令を実行できています。
ロックの場合、起動時間は処理の順番や実行待機によって解決できなくもないですが、いずれにしても終了時間の取得とダイアログ表示はほぼ失敗してしまいます。

ちなみにWSH側でやりたいことは、ロックやスタンバイの開始時間と解除(終了)時間をイベントログに書き込んで、解除後にダイアログに表示する、という処理です。

長くなりましたが、識者の方、アドバイスをお願いいたします。
518名無し~3.EXE:2009/06/21(日) 05:37:33 ID:9AsxSuL8
一番手っ取り早いのは別言語で作る方法だな
WSHでやりたいとしても、目的の部分はCOMとして作る必要があるから
別言語使わなきゃならないことには変わらないので
だったら別言語でCOM作ってWSHで動かすより
そのCOMを作れるような言語で直接アプリを作った方がいい
519名無し~3.EXE:2009/06/21(日) 14:02:20 ID:YkrwZ8hC
>>517
.scrから呼び出すwscriptを単なるWScript.ShellオブジェクトのRun()だけ
書いてるヤツにすればいい。そんでRun()の引数を終了を待たないヤツにして
本来のwscriptを呼び出せば失敗する可能性は低くなる。

あと注意点は次のものがあるな。
 ・その処理だと、ユーザーに気づかれない必要があるんじゃないの?
 ・Windows2000だとWMIが入ってない場合もある。
 ・そのときのログオンユーザーの権限が低いと、イベントログに書き込むのが
  エラーを出す可能性がある(気づかれる)。
520517:2009/06/21(日) 16:34:28 ID:hZdAyqNW
>>518
COMを自作するには、知識も時間も足りないし、専門職じゃないので運用・メンテ面からも難しいです。。
スレ違いかもだけど、今後のために(こういった連携においてWSHと相性のいい)お勧めの開発環境や言語があれば教えてください。

>>519
scr→WSH(WScript.ShellオブジェクトのRun())→WSH(ログ記録&通知)の3重にするってことですか。
ロックアプリは会社のものなので、処理だけ考えて後日検証してみます。

しかし、Run()だけで引数なしだと、キックされる側は「WScript.Arguments.Count = 0」で単独起動させない策は、確かにできないですね。
数行なら保守性は変わらなそうだし、そちらはVBEで配布するかな。。

Win2Kやログオンユーザ権限は、XP&administratorsグループのアカウント対象で問題ないです。

おっしゃるように最低限の隠蔽策を講じつつ、件の状況で処理を実現したいために、ややこしいことになってます。

あと一歩なだけに悔しいです。
521名無し~3.EXE:2009/06/25(木) 15:49:01 ID:qQpWklfp
vista + JScript で特殊フォルダ「ミュージック」のパスを取得する方法はありますでしょうか?
Shell.SpecialFolders でマイドキュメントは取得できるのですが・・・
522名無し~3.EXE:2009/06/25(木) 15:52:02 ID:V72CWr8X
おれもついでにイイか?
Xp + Jscriptで隣の奥さんの使用済みパンティーを取得する方法はありますでしょうか?
買い物のときにベランダ沿いに侵入すれば洗ったパンティーは取得できると思うのですが・・・
523名無し~3.EXE:2009/06/25(木) 16:03:25 ID:TkrEyaw6
new ActiveXObject('shell.application').Namespace(13).Path
524名無し~3.EXE:2009/06/25(木) 16:29:13 ID:qQpWklfp
>>523

早速試してみたところ・・・
なぜか undefined になります。

var x = new ActiveXObject('shell.application').NameSpace(13);
WScript.Echo("path="+x.path);

x.title には「ミュージック」がセットされていました。
525名無し~3.EXE:2009/06/25(木) 16:33:43 ID:TkrEyaw6
Path
526名無し~3.EXE:2009/06/25(木) 16:34:46 ID:TkrEyaw6
.Self.Path
527名無し~3.EXE:2009/06/25(木) 16:35:10 ID:01tMvTm9
new ActiveXObject('yourfilehost.application').Namespace(mature).Panty
528名無し~3.EXE:2009/06/25(木) 16:37:04 ID:qQpWklfp
self.path でいけました!

ありがとうございました(^^
529名無し~3.EXE:2009/06/25(木) 16:39:30 ID:01tMvTm9
used.Panty でいけました

ありがとうございました(^^
530名無し~3.EXE:2009/06/26(金) 21:34:25 ID:CNF38epp
哀しいものを見た^^
531名無し~3.EXE:2009/07/15(水) 16:25:30 ID:B2XAn6wr
xmlhttpを使用して、リファラーを送ってデータを取得したいのですがうまくいきません

set http = WScript.CreateObject("microsoft.xmlhttp")
http.open "GET", "http://taruo.net/e/", false
http.setRequestHeader "Referer", "テストテスト"
http.send
WScript.Echo http.responseText

診断君で試してみたところ、やっぱり送れていないみたいなんですが何か間違っているんでしょうか?
532名無し~3.EXE:2009/07/15(水) 17:08:41 ID:GKwZ01/x
533名無し~3.EXE:2009/07/15(水) 17:27:02 ID:j+tCnxTF
>>532
WindowsUpdateでその辺の仕様が変わるんだな。
これからも起き得るのかね?あぶねえな。
前にやったときは、さっさとCurl.exe使って逃げたわ。
534名無し~3.EXE:2009/07/15(水) 18:21:02 ID:GKwZ01/x
IEでも動かせるオブジェクトなんだからある程度は仕方なかんべ
535名無し~3.EXE:2009/07/15(水) 18:39:51 ID:7vBKI4Qq
さすがMS、酷い変更だ。リファラすら指定できないなんて。
4.0 5.0 がフルパス吐くのは、別の意味でセキュリティーの問題じゃないか?
ユーザー名に実名使ってる環境の場合、フルパスに実名含まれてしまったり・・・w
536531:2009/07/15(水) 23:13:42 ID:G8m72XGt
>>532
そういうことだったんですね
とりあえずMsxml2.XMLHTTP.5.0にしてみたら送れたのでよかったのですが
何だかcookie送る方にもバグがあるんですね・・・・
対策ページを見てみましたがうまくいかず
xmlhttpを使うのはあきらめました
537名無し~3.EXE:2009/07/16(木) 23:48:35 ID:s9Fi+J+f
自分の環境には5.0入ってないんで、Msxml2.XMLHTTP.6.0で試してみたが、Referer送れない。orz
538名無し~3.EXE:2009/07/17(金) 00:25:49 ID:MIUEZcIb
PowerShellへの移行策の一つと言うことか
539名無し~3.EXE:2009/07/19(日) 11:53:25 ID:BSXTI/Xi
wsh(≒jscript)はwineで使い物になる?PowerShellはwineで使い物になる?
詳しい人教えてくれ。
540名無し~3.EXE:2009/07/29(水) 01:05:20 ID:nmGF194p
使用言語はJavascriptで、他のファイルの関数を使うにはどうすればいいでしょうか?
wsfでインクルードするしかないでしょうか
541名無し~3.EXE:2009/07/29(水) 01:12:57 ID:U3tVg9DC
テキストとして読み込んでeval
542名無し~3.EXE:2009/07/29(水) 01:22:33 ID:nmGF194p
ありがとうございます!これでできました。
http://cwashington.netreach.net/depo/view.asp?Index=44&ScriptType=jscript
543名無し~3.EXE:2009/07/31(金) 11:39:46 ID:Gyufjk11
アプリの設定がメニューの深いところにあって、
いちいちメニュー階層を順に開いていくのが面倒なので
SendKeysで自動的にやろうとおもったのですが、
IMEがオンの状態ではメニュー項目がうまく選択できませんでした。

強制的にIMEをオフにしたいのですが、
vbsでIMEの制御は可能でしょうか?
544名無し~3.EXE:2009/07/31(金) 15:34:40 ID:fPLWy6Es
不要
545名無し~3.EXE:2009/07/31(金) 23:54:08 ID:f/yjxAXd
ウィンドウ操作はそれ用のCOMを覚えた方が先々便利
546名無し~3.EXE:2009/08/02(日) 18:03:13 ID:yp9Titym
Sever 2008 x64でオブジェクトが作成できませんと怒られてbasp21が動かない
何か方法はあるんでしょうか?
547名無し~3.EXE:2009/08/02(日) 18:11:53 ID:TBxPfJAM
32bit版のwscript/cscriptで実行する
548546:2009/08/03(月) 07:14:19 ID:rN5JviGQ
>>547
あっさり解決できました
本当にありがとうございました
549名無し~3.EXE:2009/08/03(月) 08:20:08 ID:G3uibfz0
WSH & 周辺環境は、32bit版さえ使えば、この先もしばらく使えそうなのか?
ますますPowerShellを覚える気力がなくなってきた。どうしよう・・・。
550名無し~3.EXE:2009/08/03(月) 08:46:05 ID:d466V8k7
だったら使わなければいいんじゃね?
551名無し~3.EXE:2009/08/03(月) 23:32:17 ID:19p30T4e
だったら覚えなければいいんじゃね?
552名無し~3.EXE:2009/08/04(火) 00:04:23 ID:DXguE6Su
わかりました。しばらくはJScriptで行きます。
Webでもローカルでもマクロでも一番使い勝手がよさそうなんで。
553名無し~3.EXE:2009/08/07(金) 19:33:38 ID:E5uAjbVg
xmlhttp = new ActiveXObject("Msxml2.ServerXMLHTTP");
xmlhttp.setTimeouts(20000, 20000, 20000, 20000);
xmlhttp.Open("GET", "http://www.google.co.jp/", false);
xmlhttp.Send();

タイムアウト設定が必要なのでServerXMLHTTPを使おうと思ったのですが、
3行目でオブジェクトがプロパティかメソッドに対応していないとエラーがでます。
どこが間違っているのか教えてください
554名無し~3.EXE:2009/08/07(金) 19:43:20 ID:x3CcgWEQ
555名無し~3.EXE:2009/08/07(金) 20:10:07 ID:E5uAjbVg
ありがとうございました。ついでに4行目もsendなんですね・・・
556名無し~3.EXE:2009/08/07(金) 21:02:15 ID:uHcZtJ30
vbscriptにしろよ
557名無し~3.EXE:2009/08/10(月) 13:32:44 ID:4SR4aBtB
いまさらVBSCRIPTはねえだろうw
JSCRIPTなら他の言語にもすぐに応用が利くからわからんでもないがw
558名無し~3.EXE:2009/08/10(月) 18:16:35 ID:Qzycj5VH
解ってない奴現るw
559名無し~3.EXE:2009/08/10(月) 18:21:23 ID:1VenD9zg
VBはいまだによく使うよ。
560名無し~3.EXE:2009/08/10(月) 19:21:04 ID:MjZIyAdN
>>559
その書き方だと、VBとVBScriptを混同しているように読めるが……。
561名無し~3.EXE:2009/08/10(月) 19:26:52 ID:1VenD9zg
別に混同しちゃいないけどさ、JSより、
VBの文法はいまだによく使うよってこと。
562名無し~3.EXE:2009/08/10(月) 20:20:50 ID:RqyYDiuX
WebのJSとwshのJSって文法ほぼ一緒だけど
使うオブジェクト違うから書き方変えるしね

だったらVBSで文法レベルから完全に違うほうがわかりやすかったりする
563名無し~3.EXE:2009/08/10(月) 23:11:57 ID:67y+NCjl
別に金が掛かる訳でもなし、適材適所で両方使えばええがな
564名無し~3.EXE:2009/08/11(火) 00:14:32 ID:7Q2C1XtL
EnumeratorだらけならVBSの方が簡潔に書ける。ぐらいしか思い付かない。
565名無し~3.EXE:2009/08/11(火) 00:17:18 ID:ihFQei8Z
たまにby Refの受け取りとかあったりするぐらい。
566名無し~3.EXE:2009/08/11(火) 11:55:36 ID:5VgQAFGn
MsgBox
Inputbox
使えないだろ>JScript
567名無し~3.EXE:2009/08/11(火) 15:01:44 ID:2Se6dKOv
Grepしたらこんなのが出てきた。すっかり忘れていたwww

function input(){
/***** JScript で VBScript の InputBox() 関数を使う関数 *****/
var scVB, VBarg, fvartype, i;VBarg = '';
scVB = new ActiveXObject('ScriptControl');
for (i = 0; i < Math.min(arguments.length, 7); i++){
fvartype = typeof(arguments[i]);
if (i > 0){VBarg += ', ';}
if (fvartype == 'number' || fvartype == 'object' && arguments[i] instanceof Number){
VBarg += arguments[i].toString();
} else if (fvartype != 'undefined'){
VBarg += '\"' + arguments[i].toString().replace(/[\"]/g, '\"\"') + '\"';
} else if (i < 3 || i == 5){
VBarg += '\"\"';
}
}
VBarg = VBarg.replace(/[\r\n]+/g, '\" \& $&\"').replace(/[\r]/g, 'Chr\(13\) \& ').replace(/[\n]/g, 'Chr\(10\) \& ');
scVB.Language = 'VBScript';
return(scVB.Eval('InputBox\(' + VBarg + '\)'));
}

var ret=input("説明文","タイトル","デフォルト100");

WScript.Echo(ret);
568名無し~3.EXE:2009/08/11(火) 15:27:19 ID:tCC4Lofi
そりゃActiveXObject使えばどうにでもなるさ
そんなのは皆知ってるし、ActiveXObject使うなら
わざわざVBSのGUIに拘る必要もないだろw
569名無し~3.EXE:2009/08/11(火) 18:03:52 ID:qMEHxjWM
COMは全て別途DLLが必要とでも思ってるんだろうか。
570名無し~3.EXE:2009/08/11(火) 19:53:02 ID:5VgQAFGn
EXEもあるが?
571名無し~3.EXE:2009/08/11(火) 21:25:54 ID:tCC4Lofi
>>569
なに勘違いしてるの?
572名無し~3.EXE:2009/08/11(火) 21:50:26 ID:5VgQAFGn
ちょっとCOM乱してる?
573名無し~3.EXE:2009/08/11(火) 22:00:53 ID:tCC4Lofi
だれが上手いこと言えとw
574名無し~3.EXE:2009/08/15(土) 07:46:06 ID:avxpvV7T
xmlhttpを使って同じURL(情報に変化有り)をループ処理で取得しようとすると
キャッシュを使ってるみたいで、1回目に取得したもののコピーしか取得出来ないのだけど
そのつど新しいデータを取得するにはどうしたらいいんでしょうか?
575名無し~3.EXE:2009/08/15(土) 08:01:54 ID:9s7XDhMw
HTTPリクエストに(ここではスレ違い)ついて勉強しましょう
576名無し~3.EXE:2009/08/15(土) 10:09:44 ID:avxpvV7T
>>575
送るヘッダなんかもいじってみたけどうまくいかなかったのですが
不可能ってことなんでしょうか?
577名無し~3.EXE:2009/08/15(土) 11:15:57 ID:qvpOcgUD
ブラウザだって[Ctrl]+[F5]で強制再読込できるんだ。出来ないわけ無い。
これ以上は、スレ(板)違い。
578名無し~3.EXE:2009/08/15(土) 12:04:35 ID:avxpvV7T
スクリプトでxmlhttpを使い、同一URLを連続で取得した場合に
データを新たに取得に行かないという問題なのですが・・・
579名無し~3.EXE:2009/08/15(土) 12:38:57 ID:7WPexxIz
xmlhttp キャッシュ でググれ
580名無し~3.EXE:2009/08/15(土) 16:26:37 ID:5dfMd7fo
「スレ違い」「板違い」と指摘されてるのに質問を続ける奴って何なの?
581名無し~3.EXE:2009/08/15(土) 17:41:19 ID:avxpvV7T
>>579
ありがとうございました、出来ました

>>580
上のほうでも同じようにxmlhttpの挙動に対する質問などもありますし
スレ違いだとは思わなかったので続けました
純粋に疑問なのですがどのあたりがスレ違いなんでしょう?
ここがwshのスレならば、範囲内だと思うのですが?
582名無し~3.EXE:2009/08/15(土) 22:23:22 ID:IaztbDhN
xmlhttpの質問をここでするのは、トヨタの車にSonyのカーナビ付けてる状況で
カーナビの操作不良トラブルでトヨタに問い合わせるようなものだ
xmlhttpはwsh用でもなんでもなく、
いろんな言語(車)に使える汎用コンポ(カーナビ)だってことを覚えて置いて
583名無し~3.EXE:2009/08/16(日) 00:51:24 ID:OrGIf2da
過疎ってんだからいいじゃん
無駄に細けーよ
584名無し~3.EXE:2009/08/16(日) 01:44:42 ID:kXw4hMGI
気分いい人を見つけるか、気分良くさせる話術を身に付けろってことさね
585名無し~3.EXE:2009/08/16(日) 07:40:28 ID:y/oOeE3m
むしろそれをスレ違いと言ったらこのスレには何が残るというのか
586名無し~3.EXE:2009/08/16(日) 08:34:22 ID:wWl4IgK0
wshの話題
つーか、そもそもここはそういうスレだろ?

それじゃ話題が少ないとか言う奴も居るかも知れないが、
少ないと何か問題あるのかと問いたいね

2chの鯖(とcgi)が弱かった頃は、話題(書き込み)が少ないと
すぐに圧縮で落とされたから、無理にでも話題作りをしなくちゃならなかったが
そういう問題が無くなった今となっては、無理に話題広げるより、
少ないながらもスレタイに沿った濃密な話題のみの方が断然良いからね
587名無し~3.EXE:2009/08/16(日) 11:11:34 ID:92sq03tG
なんだ、クレクレ厨か
588名無し~3.EXE:2009/08/16(日) 13:22:32 ID:RY/92RaQ
どのオブジェクトからがスレ違いで
何が許容範囲なのか明確に例題を挙げてもらいたいわw
589名無し~3.EXE:2009/08/16(日) 13:34:08 ID:Ep6+8lZw
俺様基準ってことだろ
590名無し~3.EXE:2009/08/16(日) 16:03:44 ID:r1QiDn9d
>>588
オブジェクト単位でどれがいい悪いじゃなく、内容がwsh特有の問題なのかどうかという話だと思うんだけど。
例えば、あるオブジェクトがwshで使ったときのみ違う動作をする、というような話しならこのスレ向き、
というか他所でしても「こっちいけ」って誘導されるような話だと思うし、
そうではなく、どの言語・環境で使っても同じ動作をするものを「こうさせたい」って話しなら
それはそのオブジェクトか、それが対象とする規格の話題を扱うスレのほうが適しているだろうと思う。
591名無し~3.EXE:2009/08/16(日) 16:17:49 ID:92sq03tG
言葉にならない 私の想い けれど いつかあなたに きっと・・・
592名無し~3.EXE:2009/08/16(日) 16:26:31 ID:xjMN8GP2
スレ違いを指摘する奴は移行先を示さない法則
593名無し~3.EXE:2009/08/16(日) 16:35:30 ID:UwvoqxIq
なんでスレ違いの奴に、わざわざこっちが移行先を探してやらなきゃならないんだ?
594名無し~3.EXE:2009/08/16(日) 17:56:05 ID:aQFRMbgr
FileSystemObjectの文字コードはどうやって決まってるの?
外国じゃシフトJISじゃないよね?
595名無し~3.EXE:2009/08/16(日) 19:12:33 ID:Y/yZE8LX
>>594
wikipedia
>マイクロソフト(日本法人)元会長の古川享によると、Shift_JISの制定には、
>アスキー、マイクロソフト(米)、三菱電機、マイクロソフトウェア・アソシエイツ、デジタルリサーチ(米)が関わり、
596名無し~3.EXE:2009/08/16(日) 21:59:49 ID:kXw4hMGI
そんなことはどうでもいいから
Scripting.FileSystemObject なんつう
長くて打つのがめんどいProgIDをどうにかしてくれ
597名無し~3.EXE:2009/08/16(日) 22:03:45 ID:92sq03tG
ひらがな4文字にするべき。
598名無し~3.EXE:2009/08/16(日) 22:04:22 ID:2HQFAnKG
>>596
自分のPC上でなら、設定次第でいくらでも短くできるけど?

というか、初心者はコードの文字数や行数的な短縮に躍起になる次期があるが
コードは読解性や最適化(意味としての短縮)の方が重要だよ
599名無し~3.EXE:2009/08/16(日) 22:07:49 ID:kXw4hMGI
環境依存の少なさも大事
600名無し~3.EXE:2009/08/16(日) 22:13:00 ID:2HQFAnKG
もちろん
だからこそ「自分のPC上でなら」と
その重要な点が犠牲になることを明記した
601名無し~3.EXE:2009/08/16(日) 22:15:29 ID:2Jv4So8E
>>597
すくぷり
602名無し~3.EXE:2009/08/16(日) 22:39:29 ID:gcXO2ZEs
VB2005以降みたいにスニペットでホイホイと行かないのはしょうがない話
603名無し~3.EXE:2009/08/16(日) 22:53:08 ID:jevHYVxW
入力補完機能があるエディタを使えば問題ない。
604名無し~3.EXE:2009/08/17(月) 19:38:25 ID:QtOZzW/u
>>590
じゃぁFileSystemObjectやWScript.Shellなんかもスレ違い?
605名無し~3.EXE:2009/08/18(火) 19:49:10 ID:kMLD2t0b
FileSystemObjectスレやWScript.Shellスレがあるのか?
606名無し~3.EXE:2009/08/18(火) 20:13:47 ID:S2hFvVkz
FileSystemObject を引き合いにだして、ディレクトリ構造とかファイル属性について質問してるようなもんだろ。
それらは、FileSystemObject や xmlhttp の固有の問題じゃない。

FileSystemObject だけでなく コマンドプロンプトやエクスプローラなどファイル管理共通の話題だし、
今回の例だとhttpヘッダの話題で、ブラウザやAjaxを使ったアプリ、telnetでhttpで鯖と対話するときとか、
あとはオミトロンなどでも、利用っつーか知らないと上手く扱えないもんだ。

httpヘッダの解説ページでも見ればすぐに解決するだろうし、さらっと答えても差し支えないけど、
答えたばっかりに、教えて君的にどんどんと質問レスばかりで埋まるようだと
完全にスレ違いになるし、それが嫌なんだろう。
607名無し~3.EXE:2009/08/18(火) 20:16:17 ID:p71GJEvH
大丈夫だよ、埋まるほども人いないから
608名無し~3.EXE:2009/08/18(火) 21:01:59 ID:rhBQ6KVW
というか>>590は一行目でオブジェクトが何かでなく内容の問題だって書いてるのに
それに対してこのオブジェクトはどうですかとレスする>>604が不明。
609名無し~3.EXE:2009/08/19(水) 10:29:33 ID:WGg2VE8w
ま、まさか、オマイらエディタの入力補完機能使わんで、全部手打ちにしてるんか?
そりゃ無茶だw キーボードも早く壊れるし、指も疲れる、可読性も良くない。
入力補完機能は日本語辞書と違って64文字の制限ないから、長い文を登録できるんだぜ。
フリーのメジャーなエディタならたいていは使える機能だわな。
関数やプロトタイプも余裕で登録できるんで、ぜひ使ってやってください。
610名無し~3.EXE:2009/08/19(水) 12:13:40 ID:qMq0YoQ5
全部手打ちだ。
611名無し~3.EXE:2009/08/19(水) 16:28:50 ID:oyXIXNnQ
>>594
Asc/ChrはSetLocaleで変わるがFSOは変わらんね
DLLで固定じゃないか
612名無し~3.EXE:2009/08/19(水) 17:38:16 ID:R8jmqPSw
notepad最高
613名無し~3.EXE:2009/08/24(月) 00:47:36 ID:UhNbx6kV
WSHでスキャナとカメラの中のフォルダって扱えませんか?
614名無し~3.EXE:2009/08/24(月) 08:24:31 ID:jZ03yQcV
無理
そもそもWSH自体には、ローカルであってもファイルやフォルダを操作する機能など無い
615名無し~3.EXE:2009/08/24(月) 18:11:44 ID:1pBOD32x
>>614
?? ファイルフォルダ操作は簡単だろ。スキャナダメはそうなんだけど。
616横レス:2009/08/24(月) 18:39:02 ID:LAYapniR
>>614は「FSOはWSHの一部ではないよ派」だと思われ
617名無し~3.EXE:2009/08/24(月) 19:11:57 ID:R5rjUpeC
wscript.exeにはfsoが内蔵されてるが?
618名無し~3.EXE:2009/08/24(月) 23:02:22 ID:gGokT/cL
wscript.exeにはfsoが内蔵されてないが?
WScript5.6パッケージには、FSOが『同梱』されてはいるが
数種入ってるサンプルCOMのひとつがFSOってだけの話で
別にFSOがWSHという実行ホストと直接関係有るわけではないし
619名無し~3.EXE:2009/08/24(月) 23:19:39 ID:urIpYgAU
MS-Windowsってなんなの?
620名無し~3.EXE:2009/08/25(火) 00:23:25 ID:hoDlDin+
wscript.stdin.readlineとかは内蔵fsoだが?
621名無し~3.EXE:2009/08/25(火) 01:04:38 ID:F2Ajuss/
内蔵fsoってなによ ていうかFSOって何か分かってるか
622名無し~3.EXE:2009/08/25(火) 01:13:22 ID:TXbKnVvq
どうでもいい
623名無し~3.EXE:2009/08/25(火) 03:18:31 ID:hoDlDin+
>>621
>>621
分ってないみたいだから、wscript.exeをobject browserで見てみるとよいよ
624名無し~3.EXE:2009/08/25(火) 06:13:40 ID:O29bAjvd
なんだ、ただ勘違いしてるだけかw
625名無し~3.EXE:2009/08/25(火) 15:11:31 ID:/GJjTGNi
ほれ

Library IHost
Windows Script Host (Ver 5.6)
Class FileSystemObject
IHost のメンバ
626名無し~3.EXE:2009/08/26(水) 05:38:00 ID:B2LpVl9D
┐(゚〜゚)┌
627名無し~3.EXE:2009/09/04(金) 17:03:19 ID:jKjPpgpi
>>620
VBSでこんなクラスを作ったとする

Class Hoge
  Public fso
  Private Sub Class_Initialize
    Set fso =  CreateObject("Scripting.FileSystemObject")
  End Sub
End Class

このHogeクラスはFileSystemObjectを内蔵している?
628名無し~3.EXE:2009/09/04(金) 17:31:08 ID:fqDq7lDU
粘着馬鹿が居る
scrrun.dllを削除して使えるかどうかで判定できるだろ?
629名無し~3.EXE:2009/09/04(金) 18:10:05 ID:jKjPpgpi
>>628
「(null): 指定されたモジュールが見つかりません。」って言われた

たぶんXPのWindows File Protectionが削除されたscrrun.dllを
速攻で復活させてるだけじゃ?
630名無し~3.EXE:2009/09/04(金) 18:23:58 ID:ELlrcgTf
標準でそのオブジェクトが使えるなら、どうでもいい話じゃないのか?
Windowsでしか使えないんだし。
631名無し~3.EXE:2009/09/04(金) 18:45:43 ID:fqDq7lDU
regsvr32 /u scrrun.dll
632名無し~3.EXE:2009/09/04(金) 18:49:46 ID:CBscgCCx
つまりwscript.exeはFileSystemObjectを持ってて実装はscrrun.dllに丸投げ
ただしCOM経由じゃなく直接dllをロードする
てことでいいのか
まあ何でも良いが
633名無し~3.EXE:2009/09/04(金) 19:18:57 ID:fqDq7lDU
なにを根拠に妄想をたくましくしてんだ?ぼけ
634名無し~3.EXE:2009/09/04(金) 19:29:53 ID:CBscgCCx
もちろん629からだが
是非ご高説賜りたいもんだね
635名無し~3.EXE:2009/09/07(月) 09:49:49 ID:niBBT+9B
この雰囲気、好きくない
636名無し~3.EXE:2009/09/09(水) 06:43:01 ID:mKiDYFp0
質問:WSHまたはWindows Scripting Component で任意のインターフェースをImplementsしたクラスを作成する方法はありませんか?

■経緯
Excel VBAで、外部COM DLLを使ってスクリプト作成しているのですが、
これをWSHに移植しようとしています。

しかし、問題は外部COM DLLで定義されているインターフェースのImplementsが必要な事です。
WSHではImplementsは非対応のようなので、困っています。

ググって見たところ、Windows Scripting Component にはImplementsを指定する箇所がありますが、
指定してみても「インターフェイスハンドラを作成できません」というエラーになります。
(hoge.wsc の中に <implements type="dhRichClient3.IFunction" /> <implements type="IFunction" /> のように記述)
どうも、このImplementsに指定できるインターフェースは、ASPとBehaviourというもののみのようです。
(何か勘違いをしている可能性が大ですが…)

任意のインターフェースをImplementsする方法はないでしょうか。

■やろうとしていること
SQLiteを使った、SQL文中でのユーザ定義関数の定義。
外部COM DLLは「dhRichClient3」、インターフェースは「IFunction」
リファレンスマニュアル:http://www.datenhaus.de/RC-Help/dhRichClient3.htm
■ASP,Behaviour以外のインターフェースを実装しようとしている人の質問(回答なし)
http://www.palm-jp.net/cgi-bin/ml/palm-tech-ml/msg00383.html
637名無し~3.EXE:2009/09/10(木) 19:09:44 ID:Rxuv3x7H
XP-SP3ってデフォ5.7なのね
今までI漏れのPCにIE7入れたからかと思ってたわ
つーことはXPSP3-IE6-WSH5.7の環境もあるってことか
638名無し~3.EXE:2009/09/11(金) 00:00:23 ID:jfkxOInx
俺も知らんかった
639名無し~3.EXE:2009/09/11(金) 10:52:35 ID:mRbnvINb
つーか俺が先日買ったばかりのWinXPインストール済マシンが、最初からXPSP3-IE6-WSH5.7だったよ。
640名無し~3.EXE:2009/09/11(金) 12:27:43 ID:SdwA2vDJ
Win7のVerはいくつだろね
641名無し~3.EXE:2009/09/11(金) 14:55:05 ID:XbLP+/qN
InternetExplorer.ApplicationでzipファイルにNavigate2すると
「ファイルのダウンロード」ダイアログが出るのですが、
これを自動で保存する方法はないでしょうか?
642名無し~3.EXE:2009/09/11(金) 14:58:31 ID:cqrP63L1
sendkeys
643名無し~3.EXE:2009/09/11(金) 18:15:43 ID:iWeyg2oG
>>631
オートメーション サーバーはオブジェクトを作成できません。
http://www.dotup.org/uploda/www.dotup.org129589.jpg.html
644名無し~3.EXE:2009/09/11(金) 19:57:50 ID:oH1Rk1Zr
>>640 IE8だから最低でも5.8だろ多分。
IE7だから5.7ってわけでもないんだが。
645名無し~3.EXE:2009/09/11(金) 21:53:14 ID:cqrP63L1
5.7になって何かよかったことがあるのか?
646名無し~3.EXE:2009/09/12(土) 01:16:59 ID:lalkaeIA
細々とでもアップデートしてくれること自体がいいんじゃん
番号だけかもしれんけど

とりあえず捨て去ることはないという証明にはなる
647名無し~3.EXE:2009/09/12(土) 03:33:40 ID:WpoHmTYS
>>640
System32のjscript.dllのプロパティを見ると5.8.7100.0となっている。
Windows 7 RCの64ビット版。
648名無し~3.EXE:2009/09/12(土) 11:50:44 ID:lalkaeIA
>>647
ありがとう
よかった
649名無し~3.EXE:2009/09/12(土) 19:13:12 ID:WNZ2NMuP
cmd.exeはアップデートないけど、ちっともなくならないな
んでも、cmd.exeをアップデートしてほしいな
650名無し~3.EXE:2009/09/12(土) 21:24:04 ID:uHTfzOPd
ちゃんとコマンド増えてるだろ
651名無し~3.EXE:2009/09/12(土) 22:49:33 ID:WNZ2NMuP
なんちゅう内部コマンド?
652名無し~3.EXE:2009/09/12(土) 22:53:14 ID:VYRMYvSC
norip
oshio
komuro
653名無し~3.EXE:2009/09/13(日) 00:31:00 ID:mwzFyCze
dictionary オブジェクトの item に配列を入れた場合、直接値の変更はできないんですか?

Set d = CreateObject("Scripting.Dictionary")

d.Item("hoge") = Array("bing", "bang")

d.Item("hoge")(0) = "ting"

' bing が出力される。
WScript.Echo d.Item("hoge")(0)
654名無し~3.EXE:2009/09/13(日) 00:48:58 ID:GSibjpcz
だな
655名無し~3.EXE:2009/09/13(日) 00:50:35 ID:E0QFUGQF
VBSの配列の代入は値のコピー。
だから、
d.Item("hoge")(0) = "ting"

Dim x
x = d.Item("hoge")
x(0) = "ting"
に分割され、このときxへの代入時に配列丸ごとコピーされて
d("hoge")が持ってる配列とxが持ってる配列は別物になる。
めんどくさい仕様だなぁ。
656名無し~3.EXE:2009/09/13(日) 22:57:18 ID:GSibjpcz
だね
657名無し~3.EXE:2009/09/14(月) 14:12:31 ID:ym3DmcgO
で、どうする?
658名無し~3.EXE:2009/09/16(水) 12:46:23 ID:O8adoxSh
そういう質問じゃないので不要
659名無し~3.EXE:2009/09/22(火) 17:47:22 ID:f8eHyCtX
Vista/7でスクリプトが管理者権限で実行されてるかどうかを調べる方法ってある?
660名無し~3.EXE:2009/09/22(火) 23:43:20 ID:ua4fgPA7
>>659
まず管理者権限かどうかを調べるってのはVistaより前でも結構難しいのよ。
そりゃローカルのユーザでログオンしてて自分が管理者かどうかを調べるなら
WMIで簡単だけど、ドメインのユーザだとドメインに聞かないとダメだろ?
だから簡単じゃない。

それにVista/7だと、それ以前にUACが有効になってたりそのUACがデフォルト
より厳しい設定になってる可能性もあるだろ。そうすると、たとえ本当に管理者で
入っていたとしてもスクリプトのチェックが蹴られたり、チェックで通っても
実際にしたい処理のときにUACに蹴られる可能性もある。

だから何をしたいのかをまず絞り込んでから個別に作るべきだな。
661名無し~3.EXE:2009/09/24(木) 22:24:17 ID:xUyLc6Jz
最近のヘイ スクリプティング ガイ!
がPowerShellばっかりな県
662名無し~3.EXE:2009/09/25(金) 00:40:04 ID:rKkYwStT
さすがにネタ切れだろ
663名無し~3.EXE:2009/09/25(金) 17:40:03 ID:04nmuvJP
むしろMS的にPowerShellよりWSHを推してたら驚く
664名無し~3.EXE:2009/09/25(金) 19:19:58 ID:rKkYwStT
その程度のことでは別に驚かないが?
665名無し~3.EXE:2009/09/27(日) 17:59:32 ID:TzLFyzEj
もしPINVOKEのCOMが標準提供されたらWSHの時代だな
666名無し~3.EXE:2009/09/27(日) 18:20:18 ID:kSF/I/Bf
まあ、諦めよう。
667名無し~3.EXE:2009/09/28(月) 10:00:42 ID:kC4ZBQjl
668名無し~3.EXE:2009/09/28(月) 10:34:11 ID:kC4ZBQjl
Markopee::Notebook: ドライブレターのないボリュームの容量を取得する
http://markopee.blogspot.com/2008/03/blog-post.html
669名無し~3.EXE:2009/09/28(月) 17:06:27 ID:2vo3Sj9E
PINVOKEのCOMをどっとねっとで書いて、WSH実行時に動的コンパイルして
インストールしないで使えばええんじゃね
670名無し~3.EXE:2009/09/29(火) 20:31:00 ID:nRCW7wUP
そこまでするなら素直にPowerShell使ったほうがいいような
671名無し~3.EXE:2009/09/29(火) 20:52:12 ID:2osslqGd
PowerShellのPINVOKEもめんど
672名無し~3.EXE:2009/09/29(火) 21:21:02 ID:BcdCkTRc
PowerShellなんてのも有るんだ。
なんかでこのスレ覗いて、そのままずっと自動レス取得にしといて良かった。
ちょっとtechnet読んでくる。
673名無し~3.EXE:2009/09/29(火) 23:26:16 ID:w+WE5kvG
PowerShellの方はAdd-Typeのお陰で随分楽になった
まあPythonのctypesみたいなのが元からあるのが理想だけど
674名無し~3.EXE:2009/09/30(水) 04:27:48 ID:VE3quA4g
367 :名無し~3.EXE:2008/02/19(火) 21:38:37 ID:qK/Wztn/
おれはこのVBSを作って自作ソフトからファイル渡ししてるけど
DoLoopとかforで回せばいいじゃん、めんどくさがりだなあ
'IrvineQueueFolder.vbs 'キューフォルダを指定してURLやURLリストファイル郡を登録
'IrvineQueueFolder.vbs 引数1 引数2 引数3 ...
'引数は、[キューフォルダ]または[URL]または[URLリストファイル名]で混在可
'キューフォルダは"/"で始まるように絶対指定する
QueueFolder="/Default/dorothy2/Auto" 'キューフォルダの指定(デフォルト)
'
Set Irvine = WScript.CreateObject("Irvine.Api")
Set arg = WScript.Arguments  'コマンドラインの引数郡
For i=0 to arg.Count - 1
 If Left(arg(i), 7)="http://" Then 'URL
  Url = arg(i)
  Irvine.AddQueueItem QueueFolder, Url 'アイテム登録
 ElseIf Left(arg(i), 1)="/" Then 'キューフォルダ指定
  QueueFolder = arg(i) 'キューフォルダの指定(指定以降はこのフォルダになる)
 Else        'URLリストファイル
  Set fso = CreateObject("Scripting.FileSystemObject")
  FileName = arg(i)
  Set TextFile = fso.OpenTextFile(FileName) ' テキストファイルのオープン
  Do Until TextFile.AtEndOfStream
   Url = TextFile.ReadLine ' 1行読み込み
   Irvine.AddQueueItem QueueFolder, Url 'アイテム登録
  Loop
 End If
Next
Set irvine = Nothing
368 :名無し~3.EXE:2008/02/19(火) 21:40:43 ID:qK/Wztn/
ああスマン、リファラ必要だったか、間違えた
ほんとごめん、無かった事にしてくれw
675名無し~3.EXE:2009/09/30(水) 18:59:30 ID:yNSminJl
IE の clipboard.GetData("text") を使ってるんですけど
クリップボードの中身が文字列でないときにエラーが出るんですけど
これどうして対処したらいいですか?


クリップボードの中身の sDataFormat が何か分かるプロパティとかあるんですか?
それがあればtextであった場合のみ実行できるんですが…。
676名無し~3.EXE:2009/09/30(水) 19:07:10 ID:uvZrgPLl
エラーを握り潰せばいいんじゃね?
677名無し~3.EXE:2009/09/30(水) 19:42:46 ID:yNSminJl
>>676
ありがとう。
エラー処理するのはあまり本位ではないのですが…
try で組もうと思います。
678名無し~3.EXE:2009/09/30(水) 20:48:09 ID:eF+M6xuO
それはあまりにも自分本位じゃまいか
679名無し~3.EXE:2009/11/08(日) 19:21:35 ID:7qQVL7wO
エラーにも言い分があるはず。こっちも心を開かないと
エラーも心を開くはずがない。
680名無し~3.EXE:2009/11/18(水) 10:55:25 ID:+QJ44J2l
CかC++で普通の旧式の非ウィンドウアプリケーション書いて、
データ入力部分だけhtaでGUIもどきのことをしたいと思っています。

質問1、execでstdinとstdoutだけを読み書きして
stderrはコンソールにそのまま出力ということは出来るのでしょうか?
これが出来ると本当に安直なプログラムが書けそうなんですが

質問2、exec のstdoutにデータが来てるかどうか読まずに確かめる方法はあるのでしょうか?
これが出来ないと予期しない出力は結局ファイルで合図しなければならないかと思っています

以上2点、レベルの低い質問かもしれませんが、自分で検索しても出来るかどうかよく分かりませんでした
特に1が出来ないと結局ファイルでやり取りしたほうが今作ろうとしているプログラムは書きやすいかと
思っています
681名無し~3.EXE:2009/11/18(水) 12:30:35 ID:m1LVyF2l
exec "cmd /c hoge 2>con"
682名無し~3.EXE:2009/11/18(水) 12:46:03 ID:+QJ44J2l
>>681
質問1は、できるのですね。やってみました。本当にありがとうございました

質問2は、できるのでしょうか?
683名無し~3.EXE:2009/11/18(水) 14:13:26 ID:m1LVyF2l
パイプはnon blocking readがないので無理
ファイルならatendofstreamで可能
684名無し~3.EXE:2009/11/18(水) 14:38:19 ID:+QJ44J2l
>>683
回答ありがとうございます。
用語がよく分かっていませんが、それで調べてみます。
685名無し~3.EXE:2009/11/21(土) 19:12:00 ID:q2jqgO7W
ノートPCに付いている専用アプリケーションキーを押す都度に
内蔵スピーカーからの出力と、外付けUSBスピーカーからの出力を
交互(トグル)に切り替えるにはどういったスクリプトを書けばよいでしょうか?
出来れば切り替えた際にダイアログを表示して確認出来ると尚良いです。

アプリケーションキーからスクリプトを起動させるところまでは
方法がわかっているのですが、肝心のスクリプトがわかりません。

ぶしつけなお願いとはわかっていますが、どうか宜しくお願いします。
686名無し~3.EXE:2009/11/21(土) 21:20:19 ID:l4Atd+m7
ここ( ttp://hp.vector.co.jp/authors/VA008065/ )の SetPlayDevice とかを叩けばいいんじゃない
Vista, 7 じゃ無理みたいだけど。
687名無し~3.EXE:2009/11/21(土) 22:00:31 ID:q2jqgO7W
>>686
ありがとう
それを元に調べてみるとVista、7からはサウンド関係の仕様に
変更があったようで使えないのですね
そうとは知らずにOSを書いてなくてすみませんでした
今のところVista以降に関してMSからも情報提供が乏しいようですね
688名無し~3.EXE:2009/11/22(日) 01:40:11 ID:uq5f84wJ
select caseって数値の比較とか出来ないんでしょうか?
a = 1 のとき a > 0が引っかからないのですが・・・
完全な決めうちしか出来ないって事ですか?
689名無し~3.EXE:2009/11/22(日) 13:32:21 ID:cCLt2wk9
>>688
頭を使え
690名無し~3.EXE:2009/11/22(日) 14:54:21 ID:HA1psbZl
3>a>=1なら b=1にしてSelect bにするとか mod使ってSelect 計算式
にするとかいくらでもやりようがあるだろうに (;一_一)
691名無し~3.EXE:2009/11/22(日) 15:27:40 ID:cCLt2wk9
>>690
頭を使った?
select case true
case a>0
692名無し~3.EXE:2009/11/23(月) 00:08:54 ID:Nzh7T0tA
select caseって、caseって書くくらいだから、決め打ち有りきだと思ってたけど、そう思わない人も居るんだな。
つか、a=1の時、a=1の処理がしたいのかa>0の処理がしたいのかを誰が決めるんだろ?
i7?pen3?
693名無し~3.EXE:2009/11/23(月) 11:22:05 ID:1SNAy8LO
「VBAみたいに『Is > 0』って書ければ良かったのに」って
>>688は言いたいんじゃないの?
694名無し~3.EXE:2009/11/23(月) 19:28:11 ID:8m8LyL5s
a = 1
Select Case a
Case a > 0
MsgBox "引っかからない"
Case Else
End Select

ってことだろ
VBSはIsもToもサポートしてない
695名無し~3.EXE:2009/11/23(月) 19:36:49 ID:8m8LyL5s
Is > 0 だった

696名無し~3.EXE:2009/11/25(水) 14:37:08 ID:vRBOSPMC
エクスプローラの"ファイル名でソート"と同じ規則でソートする方法はありませんか
エクスプローラの表示だと
 あ,txt
 ア,txt
 い,txt
 イ,txt
wshでファイルリストを出力すると
 あ,txt
 い,txt
 ア,txt
 イ,txt
となってしまいます
697名無し~3.EXE:2009/11/25(水) 14:45:05 ID:QJTE9W/a
698名無し~3.EXE:2009/11/25(水) 23:51:49 ID:vRBOSPMC
>697にある三番目のスクリプトをJscriptに書き換えたけどうまく動きません。添削をお願いします。
for文のループが実行されません。

FolderName="フルパス";
var fso=new ActiveXObject("Scripting.FileSystemObject");
var ie=GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}");
ie.Navigate(FolderName);
do {WScript.Sleep(100);} while ((ie.Busy) || (ie.ReadyState!=4));
var Folder=ie.Document.Folder;
for (var i=0; i < Folder.Count; i++){
var FolderItem=Folder.Items(i);
if (FolderItem.Type=="ファイル フォルダ"){
if(toLowerCase(fso.GetExtensionName(FolderItem.Path))=="txt"){
WScript.Echo(fso.GetFileName(FolderItem.Path));
}
}
}
//ie.Quit;//エラーが出る
699名無し~3.EXE:2009/11/25(水) 23:59:57 ID:TDrkyoKp
Document.Folderで手に入るのがコレ
ttp://msdn.microsoft.com/en-us/library/bb787868.aspx
Countというプロパティは無い
Itemsメソッドは引数を取らない
700名無し~3.EXE:2009/11/26(木) 00:46:36 ID:O7jscl7L
プロパティとメソッドの区別がついてないんじゃないの?
701名無し~3.EXE:2009/11/26(木) 21:57:55 ID:N/S5kwhR
本質的な違いはない
702名無し~3.EXE:2009/11/27(金) 00:40:22 ID:ZUJwRQCx
//ie.Quit;//エラーが出るだろぼけ
703名無し~3.EXE:2009/11/28(土) 23:53:27 ID:oniuazYX
だまれクズ豚
704名無し~3.EXE:2009/11/29(日) 13:26:33 ID:0uSg2Cxv
VBScriptとJScriptの区別がついてないんじゃないの?
705名無し~3.EXE:2009/11/29(日) 20:55:52 ID:0uSg2Cxv
シンタクス以外に本質的な違いはない
706名無し~3.EXE:2009/11/30(月) 18:37:23 ID:xUEhOJNz
動詞と名詞の区別がついてないんじゃないの?
707名無し~3.EXE:2009/12/01(火) 22:01:40 ID:yDXwDcOy
Cscriptで起動したスクリプトからコンソールアプリケーションを起動した場合に
その標準出力をスクリプトで受け取るような事ってどうやっても無理なんでしょうか?
708名無し~3.EXE:2009/12/01(火) 22:11:59 ID:lsMwusSy
>>707
関係ないけどWindows3.1のころは「ヘルプのヘルプ」ってのがあった。
最近は初心者切捨てでかわいそうだね。
709名無し~3.EXE:2009/12/01(火) 22:12:48 ID:HwFSNddt
どうやってもってなんか極めて困難かであるかのように
WshScriptExec使えばいいっしょ
710名無し~3.EXE:2009/12/01(火) 22:13:19 ID:WdXqZ7eU
>>708
いまだにPC初心者っているんだな。全国民に行き渡ったと思ってたぜ。
711名無し~3.EXE:2009/12/01(火) 23:45:51 ID:bXIPT5f9
誰に教わるでもなくいきなり車ができたり
英語が話せたり
そんなすごい人がいたら教えてください
712名無し~3.EXE:2009/12/02(水) 10:56:22 ID:ZUy7XsN4
単数と複数の区別がついてないんじゃないの?
713名無し~3.EXE:2009/12/03(木) 16:49:20 ID:rN3MSJ1f
hta アプリケーションのウインドウに、ファイルのドラッグドロップって出来ましたっけ?
ドラッグドロップしたファイルのパスをhtaで利用したいんですが。
可能ならどうやってイベントを拾えばいいですか?。
714名無し~3.EXE:2009/12/03(木) 20:44:12 ID:ThJuUPaj
715名無し~3.EXE:2009/12/05(土) 17:35:36 ID:/VdO4Ha3
XPとWScriptのJscriptで、manifest使ってレジストリ登録なしでAutoItXが使えたんでメモしとく。
まずWScript.ExeとCScript.Exeをコピーして適当なフォルダに入れとく。
AutoItX3.dllも同じところに入れとく。
同じ場所にテキストファイルを3つ作る。
wscript.exe.manifest
cscript.exe.manifest
AutoIt.AutoItX3.manifest
716名無し~3.EXE:2009/12/05(土) 17:36:31 ID:/VdO4Ha3
AutoIt.AutoItX3.manifest の中身

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.1"
processorArchitecture="x86"
name="AutoIt.AutoItX3"
type="win32"
/>
<file name="AutoItX3.dll">
<typelib tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" version="1.0" helpdir="" resourceid="0" flags="HASDISKIMAGE" />
<comClass clsid="{1a671297-fa74-4422-80fa-6c5d8ce4de04}" threadingModel="Apartment" tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" progid="AutoItX3.Control.1" description="AutoItX3 Class" />
</file>
</assembly>
717名無し~3.EXE:2009/12/05(土) 17:37:29 ID:/VdO4Ha3
wscript.exe.manifest の中身

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
version="1.0.0.1"
processorArchitecture="x86"
name="AutoIt.wscript.exe"
type="win32"
/>

<description>WScript.exe</description>

<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="AutoIt.AutoItX3"
version="1.0.0.1"
processorArchitecture="x86"
/>
</dependentAssembly>
</dependency>
</assembly>
718名無し~3.EXE:2009/12/05(土) 17:38:19 ID:/VdO4Ha3
cscript.exe.manifest の中身

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
version="1.0.0.1"
processorArchitecture="x86"
name="AutoIt.cscript.exe"
type="win32"
/>

<description>WScript.exe</description>

<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="AutoIt.AutoItX3"
version="1.0.0.1"
processorArchitecture="x86"
/>
</dependentAssembly>
</dependency>
</assembly>
719名無し~3.EXE:2009/12/05(土) 17:43:52 ID:/VdO4Ha3
// この test.js をコピーしたWScript.exeにドラッグして実行させると、画面の中央にツールチップが現れるはず。
// スクリプト起動時にこっちのWScript.Exeを選ぶスクリプト書いておけば、ポータブルでもAutoItXの機能が使える。

oAutoIt = new ActiveXObject( "AutoItX3.Control.1" );

oAutoIt.ToolTip("WSH★★★こんばんみ★★★Part7",500,500);

WScript.Echo(100);

oAutoIt.Sleep(3000);

WScript.Echo(200);
720名無し~3.EXE:2009/12/05(土) 18:51:16 ID:/VdO4Ha3
マニュフェストは下のように1つにまとめても動いたわw。分けなくてもよかったようだ。
wscript.exe.manifest の中身

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="wscript.exe" version="1.0.0.0" type="win32" />
<file name="AutoItX3.dll">
<typelib tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" version="1.0" helpdir="" resourceid="0" flags="HASDISKIMAGE" />
<comClass clsid="{1a671297-fa74-4422-80fa-6c5d8ce4de04}" threadingModel="Apartment" tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" progid="AutoItX3.Control.1" description="AutoItX3 Class" />
</file>
</assembly>
721名無し~3.EXE:2009/12/05(土) 19:26:28 ID:/VdO4Ha3
// sample自動的に隣のマニフェスト付きCscriptExeを使うmanifest.js

var s="cscript.exe.manifest と Cscript.Exe と \n";
s+="AutoItX3.dll が揃ったフォルダに、このスクリプトを置いておく。\n";
s+=" もしAutoItX3が登録されていればシステムの Cscript.Exe を使ったまま処理は続行する。\n";
s+=" 無ければ、このスクリプトは一旦終了し、\n";
s+="隣にある Cscript.Exe を使って起動する。引数も引き継ぐ。";
new ActiveXObject("WScript.Shell").Popup(s,0,'test',0);

var sArg='';for(var iii=0;iii<WScript.Arguments.length;iii++){sArg+=" "+"\""+WScript.Arguments(iii)+"\"";};;;
try{oAutoIt = new ActiveXObject( "AutoItX3.Control.1" );}catch(e){
new ActiveXObject('WScript.Shell').Run(new ActiveXObject('Scripting.FileSystemObject').GetParentFolderName(WScript.ScriptFullName)
+ "\\" + 'cscript.exe //E:Jscript //nologo ' + "\"" + WSH.ScriptFullName + "\"" + ' ' + sArg,1,0);;;
WScript.Quit();};

oAutoIt.ToolTip("WSH★★★こんばんみ★★★Part7",500,500);

var n=3000;

WScript.Echo("AutoItXのSleepを使ってみる " + n + " ミリ秒");

oAutoIt.Sleep(n);

WScript.Echo(3000);

oAutoIt.Sleep(3000);
722名無し~3.EXE:2009/12/05(土) 23:46:56 ID:/VdO4Ha3
とりあえず、ポータブルのJScriptでもAutoItXでアプリ制御、SeraphyScriptDialogでGUIフォーム、SFCminiでWin32API、いくつかは動いたんで最後のまとめ。 cscript.exe.manifest の中身。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="cscript.exe" version="1.0.0.0" type="win32" />

<file name="scrdlg.dll">
<comClass clsid="{86893BFE-A779-4685-8FC9-D63C8827C4C9}" threadingModel="Apartment" tlbid="{86893BFE-A779-4685-8FC9-D63C8827C4C9}" progid="SeraphyScriptDialog" description="scrdlg Class" />
</file>

<file name="AutoItX3.dll">
<typelib tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" version="1.0" helpdir="" />
<comClass clsid="{1a671297-fa74-4422-80fa-6c5d8ce4de04}" threadingModel="Apartment" tlbid="{f8937e53-d444-4e71-9275-35b64210cc3b}" progid="AutoItX3.Control.1" description="AutoItX3 Class" />
</file>
723名無し~3.EXE:2009/12/05(土) 23:48:35 ID:/VdO4Ha3
つづき、AMD は sfcminii.dll を sfcminia.dll に変える。

<file name="sfcminii.dll">
<comClass clsid="{1303599D-3028-4EAC-97BB-D9370B88B2DA}" threadingModel="Apartment" tlbid="{1303599D-3028-4EAC-97BB-D9370B88B2DA}" progid="SfcMini.DynaCall" description="sfcminii Class" />

<comClass clsid="{F5B4E399-F606-41FC-B049-D247156F8F3E}" threadingModel="Apartment" tlbid="{F5B4E399-F606-41FC-B049-D247156F8F3E}" progid="SfcMini.Structure" description="sfcminii Class" />

<comClass clsid="{4D2C1575-A55B-418F-A25C-ECEB45FC5FD2}" threadingModel="Apartment" tlbid="{4D2C1575-A55B-418F-A25C-ECEB45FC5FD2}" progid="SfcMini.MachineCode" description="sfcminii Class" />

<comClass clsid="{DC430254-87C0-4800-8C45-8B0C2BED1A53}" threadingModel="Apartment" tlbid="{DC430254-87C0-4800-8C45-8B0C2BED1A53}" progid="SfcMini.ClassEx" description="sfcminii Class" />

<comClass clsid="{6F5E1721-E8A4-48BB-B29F-A549EDA82CC7}" threadingModel="Apartment" tlbid="{6F5E1721-E8A4-48BB-B29F-A549EDA82CC7}" progid="SfcMini.tools" description="sfcminii Class" />
</file>
</assembly>
724名無し~3.EXE:2009/12/07(月) 00:20:21 ID:nBnCs4W2
//やべえ。銚子に乗って書いたが、設定がうまく遺憾人は無限ループになる可能性がある。
//1回で打ち切りにするテスト用スクリプトをカキコ。スマン。

// sample自動的に隣のマニフェスト付きCscriptExeを使うmanifest無限ループ回避.js

var s="cscript.exe.manifest と Cscript.Exe と \n";
s+="AutoItX3.dll が揃ったフォルダに、このスクリプトを置いておく。\n";
s+=" もしAutoItX3が登録されていればシステムの Cscript.Exe を使ったまま処理は続行する。\n";
s+=" 無ければ、このスクリプトは一旦終了し、\n";
s+="隣にある Cscript.Exe を使って起動する。引数も引き継ぐ。";

var objshl=new ActiveXObject('WScript.Shell');
if(objshl.Environment('process').item('senvstopscript')!=1){
try{oAutoIt = new ActiveXObject( 'AutoItX3.Control.1' );}catch(e){
objshl.Popup("この後RUNする\n\n"+s,0,'test',0);
var sArg='';for(var iii=0;iii<WScript.Arguments.length;iii++){sArg+=" "+"\""+WScript.Arguments(iii)+"\"";};;;
objshl.Environment('process').item('senvstopscript')=1;
objshl.Run(new ActiveXObject('Scripting.FileSystemObject').GetParentFolderName(WScript.ScriptFullName)+ "\\" + 'cscript.exe //E:Jscript //nologo ' + "\"" + WSH.ScriptFullName + "\"" + ' ' + sArg,1,0);;;
WScript.Quit();};
};
WScript.Echo(s,0,'test',0);
WScript.Sleep(2000);
oAutoIt = new ActiveXObject( 'AutoItX3.Control.1' );
var n=3000;
oAutoIt.ToolTip("AutoItXのSleepを使ってみる " + n + " ミリ秒",500,500);
oAutoIt.Sleep(n);
725名無し~3.EXE:2009/12/07(月) 01:28:35 ID:WsLj3zGr
ウチでも動いた。
また入れなおしたけど。
726名無し~3.EXE:2009/12/09(水) 15:51:14 ID:LISCbfE6
面白そうだからPortableSleipnir、LunaPocketでも試したがmanifestでは駄目だった。
でPortableSleipnirでScriptのほうに手を加えて、
起動するときにmanifest付きのwscript.exeから
起動しなおすようにしたらSleipnirやAutoItXのオブジェクトも使えた。
もちPortableはsleipnirからxmlをコピーしてメニューにスクリプトが出るようにしてからだがな。
727名無し~3.EXE:2009/12/09(水) 15:54:58 ID:LISCbfE6
// pWScriptExeでパスを決める。
// もしくはbinフォルダにマニフェストとDLL、exeを入れる。
objfso=new ActiveXObject("Scripting.FileSystemObject");
objshl=new ActiveXObject("WScript.Shell");
pnir = new ActiveXObject("Sleipnir.API");

if(objshl.Environment("process").item("senvstopscript")!=1){
//wscript.exeのパスを決め内する場合
pWScriptExe="U:\\wscript.exe";
//もしbinフォルダにwscript.exeがあればそれを使う。
if(objfso.FileExists(pnir.AppPath + "wscript.exe")){
pWScriptExe=pnir.AppPath + "wscript.exe";
};
objshl.Environment("process").item("senvstopscript")=1;
objshl.Run("\"" + pWScriptExe + "\"" + " //E:Jscript //nologo " + "\"" + WSH.ScriptFullName + "\"" ,1,0);;;
WScript.Quit();
}

str = pnir.AddressBarString;
str+="\n"+pnir.AppPath;
WScript.Echo(str);
WScript.Echo("test");
WScript.Sleep(2000);

oAutoIt = new ActiveXObject( "AutoItX3.Control.1" );
var n=3000;
oAutoIt.ToolTip("AutoItXのSleepを使ってみる " + n + " ミリ秒",500,500);
oAutoIt.Sleep(n);
728名無し~3.EXE:2009/12/09(水) 19:38:19 ID:vX1/pBxQ
Luna4Pocket、 PortableSleipnir、 どっちでも外部のDLLは使える。
Luna.exeと同じ場所に、wscript.exe、 wscript.exe.manifest、 AutoItX3.dll、 etc dll を
置いておけばこっちの wscript.exe を優先するんで Dll も動く。
729名無し~3.EXE:2009/12/09(水) 22:39:03 ID:Yhsi9HCt
いつの間にかJScriptのファイルのアイコンが白地に箱のアイコン
になってたんですが、デフォルトの黄色のパンチカード?のアイコンに戻し
たいです
どうしたらいいですか?

プロパティの関連付けを確認すると「Console Based Script Host」に
なってるんで関連付けは間違っていないと思います。
730名無し~3.EXE:2009/12/09(水) 22:53:17 ID:5hilr/mv
普通Console Based(cscript.exe)じゃなくてWindows Based(wscript.exe)に関連づけられてるはずだが?
731名無し~3.EXE:2009/12/10(木) 13:50:34 ID:Mq0kj3tj
regsvr32 wshext.dll
732名無し~3.EXE:2009/12/11(金) 19:38:39 ID:sMPK5/7s
どうでもいいが、むだ口さんの掲示板が宣伝ばっかりだ。
733名無し~3.EXE:2009/12/12(土) 19:42:43 ID:ZndgYDwX
生活かかってんだろ?買ってやれよ
734名無し~3.EXE:2009/12/15(火) 00:57:14 ID:XWk31MKA
wscript.exe.manifest basp21.dll capicom.dllの一部が動きました。全部試してません。
ポータブル環境やエディタでの暗号処理も簡単そうです。
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6&displaylang=ja
msi を解凍すればcapicom.dll が入手できます。
msiexec /a capicom_dc_sdk.msi targetdir="z:\hogehoge" /qn

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="wscript.exe" version="1.0.0.0" type="win32" />

<file name="capicom.dll">
<typelib tlbid="{BD26B198-EE42-4725-9B23-AFA912434229}" version="1.0" helpdir="" />
<comClass clsid="{A440BD76-CFE1-4D46-AB1F-15F238437A3D}" threadingModel="Apartment" tlbid="{BD26B198-EE42-4725-9B23-AFA912434229}" progid="CAPICOM.EncryptedData.1" description="CAPICOM.EncryptedData Class" />
</file>

<file name="Basp21.dll">
<typelib tlbid="{607E85A1-3B9C-11D1-863C-00000E4E0AD6}" version="1.0" helpdir="" />
<comClass clsid="{5A99A823-3B97-11D1-863C-00000E4E0AD6}" threadingModel="Apartment" tlbid="{607E85A1-3B9C-11D1-863C-00000E4E0AD6}" progid="Basp21.1" description="Basp21 Class" />
</file>
735名無し~3.EXE:2009/12/15(火) 01:10:52 ID:XWk31MKA
objBasp=new ActiveXObject('basp21.1');
sOriginal='basp21.1こんばんは';
sEnc = objBasp.Base64(sOriginal,0);
sDec = objBasp.Base64(sEnc,1);
WScript.Echo(sOriginal +"\n"+ sEnc +"\n"+ sDec);

sOriginal = 'CAPICOM.EncryptedData.1こんばんは';
sKey='Password';
objCapicom = new ActiveXObject('CAPICOM.EncryptedData.1');

objCapicom.SetSecret(sKey);
objCapicom.Content = sOriginal;
sEnc = objCapicom.Encrypt().replace(/\s$/,'');
objCapicom.Decrypt(sEnc);
sDec = objCapicom.Content;

WScript.Echo(sOriginal + "\n" + sKey +"\n" + sEnc + "\n" + sDec);
736名無し~3.EXE:2009/12/16(水) 10:27:34 ID:BQc3xGqm
すみません。教えてください。

>cscript.exe hoge.vbs

としてvbsを実行した場合、hoge.vbsで実行時エラーが発生した場合に
cscript.exeが終了コード0以外を返すようにするには
どうしたらよいでしょうか?

よろしくお願いいたします。
737名無し~3.EXE:2009/12/16(水) 12:02:16 ID:0CWXvG5X
WScript.Quit 1
738名無し~3.EXE:2009/12/16(水) 12:35:25 ID:BQc3xGqm
>>737
ありがとうございます。
やはりvbs側の修正が必要なんですね。
739名無し~3.EXE:2009/12/18(金) 00:03:33 ID:hmFH5f4H
on error ?
740名無し~3.EXE:2009/12/18(金) 07:19:38 ID:5pMA288l
こんにちは
テキストファイルから文字列の抽出をしたくて、できる方法を探してます。
やりたいのは
1.アプリケーションA.exeを終了させる
2.B.txtの「通信」という語句がある行の、""に囲まれた文字列を
  抽出し、C.txtの末尾に追加する
3.B.txtの内容を全消去し保存する
4.10秒後にA.exeを再起動する

という作業です。これをWSHでやることは可能でしょうか?
宜しかったら、どういうコマンドを使えばできるかざっとでも教えて頂けないでしょうか?
741名無し~3.EXE:2009/12/18(金) 07:28:48 ID:kF8+V9so
まず服を脱ぎます
742名無し~3.EXE:2009/12/18(金) 07:30:33 ID:Dsca2BJb
次に綿棒を用意します
743740:2009/12/18(金) 11:20:12 ID:5pMA288l
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("A.log")
Set B = fs.OpenTextFile("B.lst", 8, False)

Do Until f.AtEndOfStream
l = f.ReadLine
If InStr(l, "達成") <> 0 then ret = ret & l & vbCrLf
Loop

f.Close
B.Write ret
B.Close

とりあえず、行を抽出することはできたんだけど、行の中の""に囲まれた部分
だけを抽出するにはどうしたらいい?
       ∧__∧
      (´・ω・` )
       (⊃⌒*⌒⊂)
        /__ノωヽ__)
744740:2009/12/18(金) 12:32:41 ID:5pMA288l
Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer

Set oProcs = Service.ExecQuery _
("Select * From Win32_Process Where Description=""A.exe""")
For Each oProc In oProcs
oProc.Terminate
Next

Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("B.txt")
Set B = fs.OpenTextFile("C.txt", 8, False)

Do Until f.AtEndOfStream
l = f.ReadLine
If InStr(l, "通信") <> 0 then ret = ret & l & vbCrLf
Loop

f.Close
B.Write ret
B.Close
fs.DeleteFile "B.txt"
fs.CreateTextFile "B.txt"

WScript.Sleep 10000

Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "A.exe", 3, true

いろいろつぎはぎしてここまでできたんですが、""の中だけを抽出する方法が分からない...
テキストの内容のクリアの方法も分からなかったので消去+新規作成で代用しました(;^ω^)
""の中だけの抽出はどうやったらいいでしょう?
745740:2009/12/18(金) 15:18:42 ID:5pMA288l
と、思ってたら、できちゃった。。。。
言われたのは「服を脱いで綿棒用意しろ」とだけか。。。。ほんと有益なスレだtったぜwwww
746名無し~3.EXE:2009/12/18(金) 15:42:26 ID:HOC6ISom
用意したんだろ?( ´∀`)σ)Д`)
747名無し~3.EXE:2009/12/18(金) 16:57:51 ID:TYK9wCb8
>>1
はい、使ってます。
748740:2009/12/18(金) 17:48:38 ID:5pMA288l
作ったvbsファイルを直接クリックすると実行できるんですが、
「ファイル名を指定して実行」から、wscript.exe "パス\ファイル名.vbs"
で実行すると、「行17 ファイルが見つかりません 実行時エラー」とかいうのが出てきます。
なんで????(´・ω・`)
749名無し~3.EXE:2009/12/18(金) 18:33:21 ID:JaPpW35G
>>748
カレントディレクトリ
750740:2009/12/19(土) 03:55:38 ID:bRRSIC4A
なるほど〜。やっとできたよ〜∩(^ω^)∩バンジャーイ
751名無し~3.EXE:2009/12/22(火) 19:28:26 ID:BZ2YAM4c
ファイルを削除したいのに、たまーに「ファイルが見つかりません」とか出る...
ファイルがあるのに「ない」とか出るのは何故なのかな(#^ω^)ピキピキ ...
752名無し~3.EXE:2009/12/22(火) 19:51:16 ID:OXMFkspi
パスが違う・カレントディレクトリが違う
753名無し~3.EXE:2009/12/22(火) 20:13:09 ID:qKuvUzNL
If fso.FileExist(file) Then fso.DeleteFile file
754名無し~3.EXE:2009/12/22(火) 20:28:03 ID:6G2Mlzun
こういう奴がスクリプトでファイル削除して惨事を招くんだろうな。
755名無し~3.EXE:2009/12/22(火) 22:36:45 ID:BZ2YAM4c
WSHの実行履歴ってどっかで見れないかな...
なにやら3つぐらい同時に実行されてるぽい。二重起動防止が役にたってなひよ(-_-) …
756名無し~3.EXE:2009/12/22(火) 22:42:36 ID:qKuvUzNL
wscript.shell logevent
757名無し~3.EXE:2009/12/22(火) 23:28:39 ID:BZ2YAM4c
ありがとん。wshっていろいろできるんだねえ。おもしろくなってきたよ
758名無し~3.EXE:2009/12/23(水) 00:53:33 ID:9A0fdYTt
これ絶対おっさんだよな。

なのに平日(12/18)一日中 2ch してるとか、変な顔文字とか・・・・
759名無し~3.EXE:2009/12/23(水) 03:20:36 ID:+DPP5Qk7
役に立たないくせにつまんない突っ込みばっかりするのなオマエwwwwwwwwwwwwwwww( ゜д゜)、ペッ
760名無し~3.EXE:2009/12/23(水) 08:20:58 ID:OOKcm36S
ニートのキモッサンきめえw
761名無し~3.EXE:2009/12/23(水) 09:12:01 ID:PXJi6MOV
>>759
レベル低すぎ
ここはググって出てくるような事を書き込むスレじゃないんで、お引取りください
762名無し~3.EXE:2009/12/23(水) 15:19:38 ID:HBBFKBYL
>>761
では、レベルの高い話をハイどうぞ↓
763名無し~3.EXE:2009/12/24(木) 14:14:07 ID:i6+2D8Nd
DOSの業務用ソフトをWSHで動かすことはできますか?
764名無し~3.EXE:2009/12/24(木) 14:26:52 ID:6hCJv+1N
バッチファイルの代わりにはなるだろうけど、それ以上は期待するだけ無駄
765名無し~3.EXE:2009/12/24(木) 20:21:32 ID:Q7u0QeqE
WSHからアプリをIntegrity Level Lowで動かすことはできますか?
766名無し~3.EXE:2009/12/24(木) 22:17:35 ID:bSJyJDZo
>>765
プロセスの優先度のことならstart /lowでいいだろ。
WSHでもできないことはないけどWin2000じゃ使えない。
767名無し~3.EXE:2009/12/25(金) 01:13:25 ID:9mIsp81e
>>765
気になったので、ググってみた。何とかなりそうだ。
ttp://scripting.cocolog-nifty.com/blog/2009/10/run-application.html
768名無し~3.EXE:2009/12/27(日) 23:24:47 ID:j8YGjmed
テキストファイルの最後の2行を読み込みたい場合に
どういうふうに処理するのがスマートんなんでしょうか?

ReadLineで始めの行から
常に二行分を変数に避難させながら最後の行まで読み込む

一度に全部読んでからSplitで分割

最初に一度すべてを読み込んで行数を調べてから
ReadLineで最後の2行まで読み飛ばして取得

と、考えてみたのですがどれもなんか無駄な動きがあるような気がして
769名無し~3.EXE:2009/12/27(日) 23:35:30 ID:Szvprv8w
悩んでる時間とスクリプトの処理時間を天秤にかけて見るといいんじゃないだろうか。
770名無し~3.EXE:2009/12/27(日) 23:40:04 ID:mNLBddrF
現在行の内容を格納する変数(X)と、1個前の行の内容を格納する変数(Y)を用意。
Xの内容をYにコピーしてから新しい行を読む。
771名無し~3.EXE:2009/12/28(月) 00:06:10 ID:r7K75E4h
>>769
実際にはもう問題なく動くスクリプトは作れているんだけど
ふと、使い慣れてる人はもっといい方法とか
細かい処理速度やメモリの使い方?とかの違いとかその辺も考えて
どういう方法が一番いいかとか知ってるんじゃないかな、と思って

>>770
今はちょうどその方法でやってるんですが
最後の2行だけほしいのに、テキストの先頭からずっとその作業をやるのは
最善の方法なのだろうか?と不安になってしまって
772名無し~3.EXE:2009/12/28(月) 00:17:00 ID:0M12J26z
全然試しもしないで想像だけで書いてるけど
同じテキストファイルを2つのオブジェクトとして開いて
片方を一回だけSkipLineで先行させてからループで先行してる方のAtEndOfLineがtrueになるまで
SkipLineで飛ばすとか。
773名無し~3.EXE:2009/12/28(月) 00:19:26 ID:KqC6OI6J
実行行数が少ないほうが速いよ。
774名無し~3.EXE:2009/12/28(月) 00:43:14 ID:5FOgda0r
ファイルが巨大じゃなきゃ全部読み込んで、
Ar=s.split("\n"); で改行で分割して、
でAr.length>=2で2行以上の場合と、
そうでない場合で処理を分けるのが簡単だと思った。
最後の行とそのまえってAr[Ar.length-1]とAr[Ar.length-2]だし。
775名無し~3.EXE:2009/12/28(月) 01:01:40 ID:duOTUlKt
>>771
FileSystemObject (テキスト ファイルの操作に使用するスクリプティング オブジェクト) が、前方という、1 つの方向だけを認識している点です。
ファイルの先頭から開始して、ファイルの最後に向かって進む必要があります。
別の開始場所を指定することも、最後から先頭に向かって後方から読み取ることもできません。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/mar06/hey0303.mspx

最終行だけ欲しいのに先頭から検索って無駄じゃねっていう意見に、一万行有ったってすぐに終わるって返しのあるページがあったはずだけど見つからなかった
776名無し~3.EXE:2009/12/28(月) 01:09:10 ID:Z+1i2G4O
アルゴリズム的にスマートに書きたいという欲求もあるもんだ
仕事でなければそれを追求するのもいい勉強になるしさ
時間的制約を考えれば769のいうことも一理あるというところだね
777名無し~3.EXE:2009/12/28(月) 01:21:45 ID:0M12J26z
バイト単位で読む場所わかってりゃadodb.streamとかでもいいんだろうけど
778名無し~3.EXE:2009/12/28(月) 01:51:45 ID:TV4cU58X
処理するデータが何十万件もあったらかなり違うけどな
少なくとも常にアルゴリズムを意識してるやつとそうでないやつでは
数年で大きな差がつくよ
779768:2009/12/28(月) 03:33:13 ID:r7K75E4h
とりあえず単純に速度的な比較をしてみようと
300万行のテキストで試してみたところ自分のマシンでは

>>770さんの方法で 35秒前後
>>772さんの方法で 45秒前後
1度SkipLineで行数を調べてからもう一度開き最後の2行だけ取得で 55秒前後
>>774さんの方法は、やはり大きなファイルには向いていないようで
10分以上たっても処理が終了する気配がありませんでした

>>775
そういうものなんですね
速度的にも普通に読み込むのが一番早いようだし
公式にここまではっきり書いてあると、この方法でいいのだと安心出来ました

どうもありがとうございました
780名無し~3.EXE:2009/12/28(月) 04:50:11 ID:PyWDz6+t
300万行とか膨大な桁を前提にするなら、もっと効率的な方法はあると思うけどね。
781名無し~3.EXE:2009/12/28(月) 06:35:12 ID:B5iJEHMd
たとえば?
782名無し~3.EXE:2009/12/28(月) 10:49:07 ID:2hmBKvKS
tailコマンドをwshで叩く
783名無し~3.EXE:2009/12/28(月) 12:01:36 ID:FVimMGRy
300万行試してみた。1行は小さめ。
>>770で10秒くらい。

ADODB.Streamでファイルの最後から1文字ずつ読んで、
2行確保したら終わり、だと一瞬だった。
784名無し~3.EXE:2009/12/28(月) 12:10:56 ID:rMWa9Z10
tailでも0.2秒だったわ。>>783 おおざっぱでいいからサンプルで教えてくれ。

objexec = objshl.Exec("\"" + objfso.GetParentFolderName(WSH.ScriptFullname)+"\\tail.exe" + "\"" + " -2 \"" + filetxt +"\"");
do{WScript.Sleep(100);}while(objexec.Status==0);sret=objexec.stdout.ReadAll();WScript.Echo(sret);
785名無し~3.EXE:2009/12/28(月) 18:00:41 ID:FVimMGRy
var start = new Date().getTime();

var filename = 'list.txt';
var Stream = WScript.CreateObject('ADODB.Stream');
var c, text = '', lf = 0;

Stream.Type = 2;
Stream.Charset = 'Shift_JIS';
Stream.Open();
Stream.LoadFromFile(filename);

var i = Stream.Size - 1;
read : for ( ; i != -1; i-- ) {
Stream.Position = i;
c = Stream.ReadText(1);
if ( c == '\r' ) continue;
if ( c == '\n' ) {
switch ( lf ) {
case 0 : break;
case 1 : last1 = text; text = ''; break;
case 2 : last2 = text; break read;
}
lf++;
} else {
text = c + text;
}
}
Stream.Close();

WScript.Echo(new Date().getTime() - start + 'ミリ秒');
WScript.Echo(last2);
WScript.Echo(last1);
786名無し~3.EXE:2009/12/28(月) 18:06:17 ID:FVimMGRy
改行を色々対応させると更にめんどいね。
普通に1行ずつ読んで負担にならない程度のファイルサイズなら、
保守性とかでそっちのがいいよ。
787名無し~3.EXE:2009/12/28(月) 18:58:36 ID:rMWa9Z10
こりゃ早いわ。 これくらい早いと
後ろから大雑把に500バイト読み込んで
適当な処理してもいいかもしんないね。
非常に参考になった。ありがと。

var i = Stream.Size - 500;
Stream.Position = i;
sAr=Stream.ReadText(500).split("\n");
Stream.Close();

WScript.Echo("-2 = " + sAr[sAr.length-3] +"\n" + "-1 = " + sAr[sAr.length-2] +"\n" + " 0 = " + sAr[sAr.length-1] +"\n" + (new Date().getTime() - start) + 'ミリ秒');
788名無し~3.EXE:2010/01/01(金) 16:46:22 ID:6ywjnZF6
実行一つでマルチスレッドで通信したい。

xmlhttp.open("POST", "〜〜", false); で第3引数をfalseにすると
xmlhttp.onreadystatechangeで受けるときもあるが、受けないときもあって終了してしまう。

第3引数をtrueにすると非同期になるらいしけど、
xmlhttp.onreadystatechangeで受ける前に処理が終わって終了してしまう。

どうしたらいいんだろう。WSHでtrueにする使い方ってもしかして使えない?
789名無し~3.EXE:2010/01/01(金) 18:43:45 ID:NNSFaVEC
WSHでマルチスレッドはちょっと難しいんじゃないすか?
スクリプトを同時に複数起動する(マルチプロセス)なんて
のは何ともないけど、1つのプロセスでスレッドを複数
立ち上げたいならPerlの方がいいと思いますけど。
790名無し~3.EXE:2010/01/01(金) 19:55:56 ID:uK4WgJZ0
wsh で使えるかどうかは知らないけど、 マルチスレッドライブラリ Concurrent.Thread とか。
791名無し~3.EXE:2010/01/01(金) 20:46:14 ID:U1BEAdsB
マルチスレッドが必要?
792名無し~3.EXE:2010/01/02(土) 01:36:42 ID:ao/59EuU
そうだな、我慢するか。ありがと
793名無し~3.EXE:2010/01/07(木) 01:18:14 ID:GcxiHLHM
>788
MSDNによると「WScript.Sleepで止めといて、WScript.Quitで抜ければOK」
ttp://msdn.microsoft.com/ja-jp/library/ms974564.aspx
794名無し~3.EXE:2010/01/07(木) 13:27:44 ID:VssB+QEa
>>788
XHRに限れば
通信完了後にコールバック関数が呼ばれるようにして
通信中にごにょごにょはできるけど、
その落としたデータを処理したいなら
結局は通信完了後じゃないと触れない
マルチスレッド以前の話だと思うが
795名無し~3.EXE:2010/01/12(火) 18:26:19 ID:Dwa4qtcE
echoやpopupでは一つのウィンドウに一つのテキストしか表示できないけれど
一つのウィンドウを使って刻々とテキストを更新して表示する方法はないですか
796名無し~3.EXE:2010/01/12(火) 18:51:57 ID:3thoTjT8
msagent
ie
hta
inputboxに貼り付け
powershell
797名無し~3.EXE:2010/01/12(火) 21:08:01 ID:6y7tc9j+
コマンドプロンプト(cscript)で動かす
798名無し~3.EXE:2010/01/12(火) 21:14:39 ID:BzW3pbKY
自分は拡張子jse、vbeをCscriptで動かすようにしちゃったよ。暗号化なんて使わないし。
799名無し~3.EXE:2010/01/12(火) 22:04:14 ID:HEnaLojO
ウィンドウ操作系のCOM使えば既存ウインドウのテキスト変更はできるから、
うまく組み合わせればどうにかなるんじゃね。
800名無し~3.EXE:2010/01/13(水) 02:12:06 ID:3721OXm1
HTAがいちばんかんたん
801名無し~3.EXE:2010/01/15(金) 19:41:04 ID:TCjMpnYM
ieのstatustextがいちばんかんたん
802名無し~3.EXE:2010/01/17(日) 10:04:44 ID:Ix5w7yDX
http://rocketeer.dip.jp/sanaki/free/free42.htm
↑ここにあったスクリプトなんですが、次のように改変して使いたいのですが動きません
どこに何が足りないのか、どなたかご教授くださいませ
(※ターゲットファイルはUTF-8なのでそのままで保存したいです)
803名無し~3.EXE:2010/01/17(日) 10:05:26 ID:Ix5w7yDX
Dim FI
Dim FO
Dim Obj
Dim beforeStr
Dim afterStr
Dim FileName
Dim R
FileName = "C:\Windows\system.ini"
beforeStr = "MailBox"
afterStr = "MailBox=d:\mailbox"
Set Obj = CreateObject("Scripting.FileSystemObject")
Set FI = Obj.OpenTextFile(FileName,1,0)
Set FO = Obj.OpenTextFile(FileName & ".bak",2,True,0)
While Not FI.AtEndOfStream = True
R = FI.ReadLine
If Left(R,Len(beforeStr)) = beforeStr Then
R = afterStr
End If
FO.WriteLine (R)
Wend
FI.Close
FO.Close
Obj.DeleteFile FileName
Obj.MoveFile FileName & ".bak",FileName
Set Obj = Nothing
Set FI = Nothing
Set FO = Nothing
Set Param = Nothing
WScript.Quit

よろしくおねがいします
804名無し~3.EXE:2010/01/17(日) 13:11:12 ID:sXZj+Qn6
'FileSystemObjectではUTF-8の読み書き出来ない。ADODBを使う。
'置換は正規表現でやった方が楽。
'C:\Windows\system.iniを読み込んで全置換してout.txtに書き出す例

Dim inStream, outStream
Dim regEx, Match, Matches, rep
Set inStream = CreateObject("ADODB.Stream")
Set outStream = CreateObject("ADODB.Stream")
Set regEx = New RegExp
regEx.Pattern = "\r\nMailBox"
regEx.Global = True
regEx.IgnoreCase = False
inStream.Open
inStream.Charset = "UTF-8"
inStream.LoadFromFile "C:\Windows\system.ini"
outStream.Open
outStream.Charset = "UTF-8"
str = inStream.ReadText(-1)
rep = regEx.Replace(str,vbCrLf & "MailBox=d:\mailbox")
outStream.WriteText rep
inStream.Close
outStream.SaveToFile "out.txt", 2
outStream.Close
805名無し~3.EXE:2010/01/17(日) 13:20:08 ID:sXZj+Qn6
さっきのじゃファイル先頭は置換されなかったわ。
> regEx.Pattern = "\r\nMailBox"

regEx.Pattern = "(^|\r\n)MailBox"

> rep = regEx.Replace(str,vbCrLf & "MailBox=d:\mailbox")

rep = regEx.Replace(str,"$1MailBox=d:\mailbox")
806名無し~3.EXE:2010/01/17(日) 13:35:24 ID:a2aY4UhM
> FileName = "C:\Windows\system.ini"
> Set FO = Obj.OpenTextFile(FileName & ".bak",2,True,0)
> Obj.DeleteFile FileName
> Obj.MoveFile FileName & ".bak",FileName

この辺Vista以降ならただの管理者じゃ動かないぞ
807名無し~3.EXE:2010/01/17(日) 22:34:26 ID:Qq5UNecS
>>804
早速のご教授ありがとうございます。ぶしつけながらもうひとつ質問があるのですが、、、
置換したい文字列はMailbox→Mailbox=d:\mailboxだけでなく
"Dustbox"→"Dustbox=e:\dustbox"もあるとしたらどうでしょうか?

3行目から最後尾までコピーしてつなげるのでは二つ目の処理がされませんでした
Mailbox用、Dustbox用と二つ用意してやるところを一枚のVBSファイルで行いたいのです
重ね重ねで恐縮ですがよろしくおねがいします
808名無し~3.EXE:2010/01/17(日) 22:38:34 ID:sXZj+Qn6
宿題丸投げ?
ヘルプのRegExpオブジェクトの所位見ろよ…

ぶっちゃけ書き加えるのは2行位だよ。
809名無し~3.EXE:2010/01/17(日) 23:30:26 ID:Qq5UNecS
>>808
お叱りごもっともです、今Googleで調べてるところです

Set regEx2 = New RegExp
regEx2.Pattern = "Dustbox"
rep2 = regEx2.Replace(str,"$1Dustbox=e:\dustbox")
outStream.WriteText rep2
↑現段階での知識ではこれくらいしか思いつかない・・・
しかも動かないw
810名無し~3.EXE:2010/01/18(月) 01:16:54 ID:M1A4s4VQ
Replaceに使う正規表現と置換後をArrayに入れておいて回せば追加にも強いだろう
てか>>804だと1行目を置換したいとき無理じゃね
Multilineもつけて^$使え
811名無し~3.EXE:2010/01/18(月) 08:59:33 ID:QEJpbXI0
>>810
そこは>>805ですぐ修正入れてるって
1レス後位見てくれよ('A`)

>>809
新しいオブジェクト作る必要無い。
パターンだけ変えて、前の置換結果にまた置換実行するだけ。

ヘルプ見てメソッドの引数と戻り値の意味位調べようぜ。
812名無し~3.EXE:2010/01/18(月) 09:05:09 ID:QEJpbXI0
>>810
ちなみにMultilineはVBScriptには無いのよ。
813名無し~3.EXE:2010/01/18(月) 09:18:09 ID:QEJpbXI0
ごめんあった。ヘルプに無いだけだったorz
しかしMSDN見ててもVBScriptに関するmultilineのドキュメント見つからん…
814名無し~3.EXE:2010/01/18(月) 13:24:49 ID:b+w7CHXS
815名無し~3.EXE:2010/01/18(月) 22:17:50 ID:TN5cwPWT
とりあえず>>804に↓をつなげることで目的の結果は得られましたので質問を終了したいと思います
inStream.Open
inStream.Charset = "UTF-8"
inStream.LoadFromFile "out.txt"
outStream.Open
outStream.Charset = "UTF-8"
str = inStream.ReadText(-1)
regEx.Pattern = "(^|\r\n)DustBox"
regEx.Global = True
regEx.IgnoreCase = True
rep = regEx.Replace(str,"$1Dustbox=e:\dustbox")
outStream.WriteText rep
inStream.Close
outStream.SaveToFile "out.txt", 2
outStream.Close

引数なんかは一応検索で調べたのですが初心者の私としてはこれで上出来としたいところです・・・
これをきっかけにスクリプトの勉強を始めました
今回はおつかれさまでしたw
816名無し~3.EXE:2010/01/19(火) 02:15:25 ID:wzldd/2a
どうせ勉強するならこっち 3行で書けるよ
ttp://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/jan08/hey0117.mspx
817名無し~3.EXE:2010/01/19(火) 06:44:28 ID:9fLESZf0
>>816
XP以降限定じゃん
818名無し~3.EXE:2010/01/19(火) 15:02:00 ID:HLTLxXJY
wshだって98以降限定じゃん
819名無し~3.EXE:2010/01/19(火) 18:37:12 ID:PfKPChkB
>>817
それで困ることはもうほとんどないだろ。
820名無し~3.EXE:2010/01/19(火) 21:15:45 ID:f0FqX8pV
リネームツールとかUWSCとかでWSH使うから無いと困る。
powershellって他のツールからの利用ってある?
他から利用出来ないなら要らない子なんだが。
821名無し~3.EXE:2010/01/19(火) 21:26:57 ID:2KRU5yQk
>>820
powershell.exeを起動するだけだぞ?
822名無し~3.EXE:2010/01/20(水) 12:21:41 ID:nVMFUHnA
wsh(=jscript)ならjavascriptとかぶるとこも多い。
htmlや、ほかの似た文法のScript言語でも応用が利く。
powershellってどこまで他に応用聞くんだろ?
潰しが利くなら覚えよう思うんだが、背中押してくれw
823名無し~3.EXE:2010/01/20(水) 13:45:02 ID:VX+ha+rY
やめとけ
824名無し~3.EXE:2010/01/20(水) 23:19:36 ID:wLmohyzc
ADSI(VBS+LDAP)で、ADのコンピュータのoperatingSystemを取って配列にぶっ込んだ後、
For each NextループでwriteLineするとVistaのとこまで来たら落ちる。
データ型はXpもVistaもDirectorystringなんだけど、VistaTMと、TMが右肩に
ついてるから?
明日もうちょっと時間取って調べてみるつもり。
825名無し~3.EXE:2010/01/21(木) 01:20:11 ID:0RCGnhqV
//U
826名無し~3.EXE:2010/01/21(木) 22:52:28 ID:i5BvdjIA
>>825
ありがとう!今頃なんのことかわかったよ。
とりあえず値はUnicodeだとわかったので、明日また試してみる。
827名無し~3.EXE:2010/01/22(金) 10:27:46 ID:fhX6W0TP
潰しとか応用とか互換性とか言ってたら新しい物は生まれて来ない
3行で書けるんなら、3行で書いちまった者勝ちだろ?
828名無し~3.EXE:2010/01/22(金) 11:21:15 ID:tUYhcla4
PowerShellはごく一部のマニアだけが覚えておけばいい技術。
javascript=jscriptは時間の無い人が、出来るだけ多くのリターンを
得るために使う技術。
極めたい人はPowerShellに時間と金を投資するといい。
きっとそれなりの見返りがあるはず。
829名無し~3.EXE:2010/01/22(金) 14:52:26 ID:HBcO/6iY
>>768-787
powershellなら1行で書けるのにwshでちんたらやってられるか?
get-content $filepath | select-object -Last 2
830名無し~3.EXE:2010/01/22(金) 16:37:00 ID:v63o3WgQ
ほとんどの環境で標準装備ってのならいいんだけどね。
環境揃えて…っていうんならpowershellじゃなくても他にも色々あるわけだし。
831名無し~3.EXE:2010/01/23(土) 11:01:56 ID:HKm8upzI
Windows2000あたりから標準装備なら状況はちがったんだろうけどなぁ。残念。
832名無し~3.EXE:2010/01/23(土) 15:26:57 ID:SgH8LXDj
MS-DOSあたりから標準装備なら状況はちがったんだろうけどなぁ。残念。
833名無し~3.EXE:2010/01/31(日) 19:53:03 ID:mXB3Bqel
MS-DOSからおなじみのバッチファイルは
今流行ってないけどな。
834 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄:2010/01/31(日) 22:38:01 ID:CcQLQSx7
          ∧_∧ ヒソ…
           <丶`∀´> ∧_∧
         / \/ )<丶`Д´>ウンウン、さすがは我が同胞。鋭いニダ!
        /  \___//       \
  __   .|     | / /\_ _ \ \_____
  \   ̄ ̄ ̄ ̄ ̄ ̄(__ノ   \    \__)      \
  ||\             \  .||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
835名無し~3.EXE:2010/02/03(水) 23:03:12 ID:cRYBsWZ2
msgboxなどのダイアログ系は作業を中断されるので他の方法を考えています
マウスポインタのデザイン変更はVBSで可能でしょうか?
836名無し~3.EXE:2010/02/04(木) 01:40:41 ID:/5PVW4aL
VBAでも使ってろよと思う
837名無し~3.EXE:2010/02/04(木) 12:07:19 ID:YNWxT22I
D:\aaaaa\bbbbb\cccccを環境変数%abc%として登録して
D:\aaaaa\bbbbb\ccccc\d.exe
を%abc%にカレントを移してから実行したいのですが
CurrentDirectoryで環境変数ってどう使ったらいいのでしょうか?
838名無し~3.EXE:2010/02/04(木) 12:35:15 ID:/5PVW4aL
質問の意味が読み取れないけど、
環境変数の展開ならWScript.ShellのExpandEnvironmentStringsとか
839名無し~3.EXE:2010/02/04(木) 17:30:12 ID:WSu/UyEi
>>837
こういうことでいいのかな

Set objShell = WScript.CreateObject("WScript.Shell")
Set colEnv = objShell.Environment("User")

colEnv.Item("abc") = "D:\aaaaa\bbbbb\ccccc" '環境変数%abc%に登録

objShell.CurrentDirectory = colEnv.Item("abc") '%abc%にカレントを移動
objShell.Run(".\d.exe")                'd.exeを実行
840名無し~3.EXE:2010/02/04(木) 18:41:05 ID:qbYhdWoJ
>>835
スクリプトの終了は知りたいけどポップアップはうぜぇ、ということ?
スクリプトでBeep音を鳴らすことなら出来るよ
841名無し~3.EXE:2010/02/04(木) 20:33:39 ID:YNWxT22I
>>839
ありがとうございます
>objShell.CurrentDirectory = colEnv.Item("abc") '%abc%にカレントを移動
こっちにもItemが必要なことに気が付きませんでした
おかげさまで希望の動作になりました

>>838
ありがとうございました
842名無し~3.EXE:2010/02/06(土) 02:11:44 ID:N6DMGysY
843名無し~3.EXE:2010/02/09(火) 11:20:45 ID:9vTb+OVv
IEを使ってファイル名を得るスクリプトを取りあえず検索して
次のようなのを見つけましたが
初期のフォルダを設定する方法が分かりません
どうやったらいいのでしょうか?

Set Ie = CreateObject("InternetExplorer.Application")
Ie.Navigate( "about:blank" )
Do While Ie.Busy
Wscript.Sleep 10
Loop

Ie.document.getElementsByTagName("BODY")(0).innerHTML = "<INPUT id=FilePath type=file>"
Ie.document.getElementById("FilePath").click
if ie.document.getElementById("FilePath").value = "" then
WScript.Echo "ファイルは選択されませんでした"
WScript.Quit
end if

WScript.Echo ie.document.getElementById("FilePath").value

Ie.Quit
Set Ie = Nothing
844名無し~3.EXE:2010/02/09(火) 16:03:31 ID:8BqPaL3i
初期のフォルダを設定する type=file でぐぐれ
845名無し~3.EXE:2010/02/09(火) 17:01:00 ID:8BqPaL3i
どこかに覚えているみたいだから、レジストリを検索して、書き換えれば?
846名無し~3.EXE:2010/02/09(火) 17:40:17 ID:9vTb+OVv
>844
hta の雛形に付け加えたので異様に長くなってしまったけど
取りあえず初期値がカレントのフォルダになる hta file はできた
カレントじゃなくて自由なフォルダになるのはまだ分からない

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>雛形</title>
<script Language="VBScript">
<!--
Option Explicit ' 変数に対して、明示的な宣言を強制します。
dim exit_proc_flag

initialize_all

'**************************** 全体的な構成  ********************************

sub initialize_all
exit_proc_flag=false
end sub
847名無し~3.EXE:2010/02/09(火) 17:41:15 ID:9vTb+OVv
'終了処理
sub exit_proc
msgbox Document.testfrm.example.value
exit_proc_flag=true
end sub
sub HtaFinalExit
if not exit_proc_flag then
exit_proc
end if
end sub
Sub all_exit_OnClick '<OK>ボタンのOnClickイベントプロシージャ
exit_proc
window.close
End Sub
'******************************************************************************
-->
</script>
</head>

<body onUnload="HtaFinalExit()">
<FORM name="testfrm">
<input type="file" name="example" size="90">
<br>
<input type="button" name="all_exit" value="終了">
</body>
</FORM>
</html>
848名無し~3.EXE:2010/02/09(火) 18:28:58 ID:8BqPaL3i
それってカレントのフォルダなのか?
htaの場所じゃないのか?
849名無し~3.EXE:2010/02/09(火) 18:32:07 ID:9vTb+OVv
>>848
hta の場所って意味で言ってる
言い方が曖昧だったかな
850名無し~3.EXE:2010/02/09(火) 19:09:32 ID:8BqPaL3i
そんなことないよ
明確に間違ったこと言ってるだけだよ
851名無し~3.EXE:2010/02/14(日) 17:05:40 ID:9nnubjX9
FileOpenDialog使えば?
852名無し~3.EXE:2010/02/19(金) 22:29:31 ID:LDuD38Q5
wshShellのRunをコードに書いて保存しようとしただけでトロイ認定されてソースが消えたお・・・・
853名無し~3.EXE:2010/02/20(土) 01:47:37 ID:qEf0FvLR
まぁ世の中の9割以上の人には、wshをとろい認定しても問題は無いんだけどな
一部のソフトのインスコ・設定でwsh・hta使ってるのも見なくもないけど
854名無し~3.EXE:2010/02/20(土) 10:43:48 ID:8rPqr8jG
VS2008 Express Editionのインストーラが
HTAを使ってるぜ。
855名無し~3.EXE:2010/02/25(木) 21:39:30 ID:gk2IrG8J
ie.navigateみたいなことって他のブラウザでもできますか?
マイクロソフト以外のブラウザはそもそもどうやって情報集めたらいいの?
856名無し~3.EXE:2010/02/25(木) 21:57:08 ID:OS5Whsth
できるものもあればできないものもあるだろな
857名無し~3.EXE:2010/02/26(金) 18:22:28 ID:cT5sOvCi
COMインターフェイスがなきゃダメだから
クロスプラットホーム対応のブラウザにWindows版だけ実装することは考えにくい
858名無し~3.EXE:2010/02/26(金) 22:23:09 ID:DbpCfW0J
コントロールしたいときは我慢してIEを使えってことですかね?
859名無し~3.EXE:2010/02/26(金) 22:29:24 ID:TVISpBki
無理に使わんでもええよ
860名無し~3.EXE:2010/02/28(日) 14:58:34 ID:h+sfVlse
Sleipnirなら、COMインターフェイス作っているぽいよ
他は地道にググるか、自分でoleviewとかで確認してくれ

もし、起動させて特定のURL開くだけなら
Shellで起動時にコマンドライン引数で指定するのが簡単
できないブラウザもあるかもしれないけど
861名無し~3.EXE:2010/02/28(日) 23:44:27 ID:eIRa0akU
男は黙って SendKeys
862名無し~3.EXE:2010/03/01(月) 21:44:05 ID:FmfygmuX
test
863名無し~3.EXE:2010/03/04(木) 22:14:49 ID:FL0aWnTL
いまさらながら
64bits版 windowsにもwshって入ってるの?
864名無し~3.EXE:2010/03/04(木) 22:26:49 ID:o4aSa0C3
入れない理由がないし実際入ってる
865名無し~3.EXE:2010/03/04(木) 22:32:57 ID:FL0aWnTL
失礼しました。
866名無し~3.EXE:2010/03/07(日) 00:39:46 ID:yMMDGSK4
WSHではADODB.Streamを使うことでバイナリファイルを読み込み、
バイナリファイルの中に潜んでいる文字をテキストファイルに
保存できると知って、今日の夕方に入門書を買ってきました。
最終目標はnamazu用のfilterを自作したいと思ってます。
よろしくお願いします!
867名無し~3.EXE:2010/03/07(日) 01:11:56 ID:yMMDGSK4
だいたい出来ました、ありがとうございました!
868名無し~3.EXE:2010/03/07(日) 01:56:16 ID:zmuLo5KI
これは新しい自己解決のパターン・・・
869名無し~3.EXE:2010/03/07(日) 02:04:34 ID:ehbFBfeC
入門書ってなにだろ?
870名無し~3.EXE:2010/03/07(日) 02:51:12 ID:qV0qSi+H
大型新人キター
871名無し~3.EXE:2010/03/08(月) 10:01:54 ID:qhL2N4DK
JSでTerminateを使いプロセスを強制終了させていますが、
強制ではない方法で終了させることはできないでしょうか?
872名無し~3.EXE:2010/03/08(月) 10:58:50 ID:reTc7xAA
「ユーザー名およびパスワードの保存」画面で管理される
ユーザー、パスワードの情報をwshで追加、削除する事はできますか?
(「ファイル名を指定して実行」から「control keymgr.dll」を実行して表示する内容)

別ドメインのサーバの共有フォルダにアクセスしたいのですが、
ネットワークドライブを設定する方法では、再度パスワードを入力する必要がありました。
この画面で登録しておくと再入力せずアクセスできたので
限られたユーザーにwshで配布したいと考えています。
873名無し~3.EXE:2010/03/08(月) 14:35:46 ID:N4hgDfir
>>871
JSにTerminateがあるのか?VBSにはあるが?
874名無し~3.EXE:2010/03/08(月) 19:55:15 ID:qhL2N4DK
var WMIService = GetObject('winmgmts:'
+ '{impersonationLevel=impersonate}!\\\\'
+ computer + '\\'+computer_name+'\\cimv2');
var processList = WMIService.ExecQuery('Select * From Win32_Process Where Name = "calc.exe"');
var processEnumerator = new Enumerator(processList);
while (!processEnumerator.atEnd()) {
processEnumerator.item().Terminate();
processEnumerator.moveNext();
}

こんな感じで使用しています
875名無し~3.EXE:2010/03/08(月) 23:49:45 ID:N4hgDfir
>>874
それはJSのでなくWMIのWin32_ProcessのTerminateだろ
それなら"taskkill /pid " & processEnumerator.item().IdをCreateすればよい
876名無し~3.EXE:2010/03/09(火) 00:17:04 ID:W+HEZzDA
ありがとうございます。
出来ました。
877名無し~3.EXE:2010/03/09(火) 07:31:07 ID:Ox6yGdZE
VBSをCOM化して実行したら「メモリーが不足してプログラムを実行できません」と出ました。
878名無し~3.EXE:2010/03/09(火) 11:20:33 ID:6ivRnBQq
プログラム板のwshスレからこっちに流れてきました。マルチごめん。

WMI使ってリモートPCのIP変更したいんだが、変更後にRPCエラー待ちが発生して自動処理できない。
エラー待ち時間を短縮するとか、なんかいい方法知ってる人がいたら助けて。

On Error Resume Next

strComputer = "10.1.1.1"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
Next
879名無し~3.EXE:2010/03/09(火) 16:37:00 ID:lGaT6Nz1
>>877
CMD化しろよ
880名無し~3.EXE:2010/03/09(火) 19:14:46 ID:1jHU3iwO
>>878
相手にスクリプトを産み付けて自分のプロセスとして処理させるってのはどうだ?
pstoolsの出番かも知れないが。
881名無し~3.EXE:2010/03/09(火) 19:15:07 ID:Ox6yGdZE
>>879
産休です。明日会社のサーバで試してみます
882名無し~3.EXE:2010/03/11(木) 00:16:55 ID:aOKfiRUH
ctrlキーが起動時に押されていたら処理を替えるようにしたいんですが、どうすればいいですか?
883名無し~3.EXE:2010/03/11(木) 02:48:28 ID:CgyxwHxo
スクリプトからシフトキー類の押し下げ状態を調べる。
884名無し~3.EXE:2010/03/11(木) 19:28:02 ID:z4Y3vV8Y
>>880
WshController使ったリモート実行じゃろうか?
これは試していたんだが、「致命的エラー」が出てNGだった。
リモートPCのレジストリを設定した後、「wscript -regserver」を実行したんだがやっぱりダメだった。
「pstools」はしらんかった。ちょっと調べてみる。
うまくいったら結婚してあげてもいい。
885名無し~3.EXE:2010/03/12(金) 09:53:05 ID:N9db+s4y
WSHオワタ・・・

PowerShellの概要 − @IT
http://www.atmarkit.co.jp/fwin2k/operation/pshsys01/pshsys01_01.html

例えば、テキスト・ファイルに現在時刻を書き込むという処理をWSHスクリプト(言語はVBScriptを使用)で書くと次のようになる。
Option Explicit
Dim objFSO, objTextStream
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.CreateTextFile("test.txt")
objTextStream.WriteLine Date & " " & Time
objTextStream.Close()
Set objFSO = Nothing
Set objTextStream = Nothing

 このように、ファイルの読み書きというシステム管理では基本となるようなことでも、
COMオブジェクトを呼び出すなど非常に多くの記述が必要になる。
ところがPowerShellで同様の処理を書くと1行で済む。

Get-Date | Set-Content test.txt
886名無し~3.EXE:2010/03/12(金) 13:10:53 ID:QFmuvE6T
バッチファイルでも1行で済むが?
echo %date% %time% > test.txt
887名無し~3.EXE:2010/03/12(金) 13:23:01 ID:nsgGjLNb
>>884
自己レス。
psexec使ってのwsh送り込みはできなかったが、batファイルならいけた。
これなら10秒ほどのタイムアウト待ちなのでなんとかなりそう。

>>880
無限の愛を貴方に。
888名無し~3.EXE:2010/03/13(土) 00:20:18 ID:/FMALwnt
>886
その手法は確かWindows95/98/Me/NT4.0では使えないんだったな。
889名無し~3.EXE:2010/03/13(土) 00:22:32 ID:gC28eAby
>>888
PSのこと?
890名無し~3.EXE:2010/03/13(土) 01:55:56 ID:4tIVLF1Y
>>885
そういうのって例えば、
 日付の書式をちょっと変えて書き込みたいな・・・
とか考え出すとあっという間にコード量の差がなくなってしまうからなぁ。

>>886
つまり、それをWSHから呼び出せばもっと簡潔にできるわけだな!

・・・って、件のWSHのスクリプトも宣言とか開放を省略すればもっと行数減るなw
891名無し~3.EXE:2010/03/13(土) 17:14:55 ID:8P3J/gMj
CreateObject("Scripting.FileSystemObject").CreateTextFile("test.txt").WriteLine Date & " " & Time

1行で済みましたww
892名無し~3.EXE:2010/03/13(土) 18:33:24 ID:KBOSrb+k
>>885の執筆者より>>891の勝ち
893名無し~3.EXE:2010/03/13(土) 20:04:42 ID:M3Neakab
無駄口は Now も知らん(忘れた)のか・・・・
894名無し~3.EXE:2010/03/14(日) 13:54:28 ID:lYWxxKnc
1時間ごとにランダムに一曲再生するというコードを動かしているんだけど
その時WMPが既に何か再生中だったらキャンセルするというコードはどう書けばいいですか?
895名無し~3.EXE:2010/03/14(日) 15:16:43 ID:wewHDlVc
プロセスのCPU使用状況を調べてwmpのCPU使用率ゼロを判別する
896名無し~3.EXE:2010/03/14(日) 15:39:50 ID:jU9VRU0u
つまんね
897名無し~3.EXE:2010/03/14(日) 18:30:33 ID:voCmsmxq
WSHから特定のアプリケーションにSendmessageできる公開されたDLLってあります?
または直接EXEを起動したり、regsvr32登録されてないDLLの関数を呼び出す方法はありませんか?
自作のDLLがRegsvr32で登録できずCreateobjectできません
898名無し~3.EXE:2010/03/14(日) 18:43:39 ID:+Lvh+6MO
powershell
899名無し~3.EXE:2010/03/14(日) 18:55:33 ID:u5NEBbCg
ActivexPosh
900名無し~3.EXE:2010/03/16(火) 16:18:13 ID:ohYW6Imb
AutoItXの各種メソッドが128文字以上扱えるようになってたヽ(´ー`)ノ
901名無し~3.EXE:2010/03/18(木) 18:15:26 ID:iM/YKp6K
スレ違い
902名無し~3.EXE:2010/03/25(木) 23:54:26 ID:PC4a+bWW
WSHのCMD化の方法を教えてください。
903名無し~3.EXE:2010/03/26(金) 00:30:35 ID:ey1DdaEX
js2cmd
904名無し~3.EXE:2010/03/27(土) 23:21:50 ID:AeDranBW
IEの右クリックからJavaScriptを呼び出し、現在閲覧しているページのタイトルを所得することは
できるんでしょうか?右クリックする対象はページ上の画像を考えてます。
905名無し~3.EXE:2010/03/27(土) 23:36:21 ID:4iD/8n0I
できるがスレ違い ぐぐれ menuext
906904:2010/03/28(日) 10:22:48 ID:mhne3zrz
レジストリ書き足して、htmにJavaScript記載して画像の情報は取得できました。
閲覧中のhtmlのタイトルを取得する方法はあるのかなと思いまして、この場合のオブジェクト対象は画像なんですよね?
現在閲覧中のページのタイトルを取得、みたいな関数があれば
907名無し~3.EXE:2010/03/28(日) 11:01:19 ID:/xGuJN49
>>906
external.menuArguments.document.title
スレチだから他行け
908名無し~3.EXE:2010/03/28(日) 11:36:22 ID:mhne3zrz
>>907
できました、ありがとうございます。
WSHで合ってると思ったんですがスレチだったんですか? 理解不足ですみません
909名無し~3.EXE:2010/03/28(日) 15:44:41 ID:4WEbf+FX
閲覧中のウェブページをwshを使って自分のアドレスに送りたいのですが
どういう風にしたら良いですか?
910名無し~3.EXE:2010/03/28(日) 15:45:43 ID:4WEbf+FX
追記。アドレスだけじゃなくてページの中身そのものをメールとして送りたいということです。
911名無し~3.EXE:2010/03/28(日) 16:52:47 ID:z/Q5yi5P
>>910
ブラウザのURL拾って、mhtファイル作って、
ttp://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/nov04/hey1129.mspx
じゃね?

メールの作成もmhtもCDO.Messageで出来るんだな・・・mhtの出自がそうなんだから
当たり前といえば当たり前か。
912名無し~3.EXE:2010/03/28(日) 17:02:47 ID:4WEbf+FX
回答ありがとうございました。そのページを参照にちょっと頑張ってみます。
913名無し~3.EXE:2010/04/01(木) 00:21:13 ID:CuuAcOhW
ショボくてすまんが[windows]+[←]or[→]キーで使えるwindows7の機能は、
どうやってスクリプト書いたらいい?
914名無し~3.EXE:2010/04/01(木) 01:01:22 ID:+U1Gw17B
つAHK
915名無し~3.EXE:2010/04/10(土) 22:14:58 ID:wPmAPdMC
今はNILScriptの方がいいんじゃない?
916名無し~3.EXE:2010/04/11(日) 13:24:09 ID:Yl41pEjS
なにそれ
917名無し~3.EXE:2010/04/11(日) 22:47:49 ID:adH92DlF
【JavaScript系】 NILScript 【AutoHotkey風】
http://pc12.2ch.net/test/read.cgi/tech/1270139718/
918名無し~3.EXE:2010/04/11(日) 23:11:58 ID:1lpeBxiT
NILは2000では動かないよ。XP32bitだけだな。
ただAutoItXやSFCMiniなどのDLLを入れたあとのWSH環境に比べるとどうなんだろうね?
マニフェストや後付のDLLを使わずにDmonkeyやUWSC、AutoHotKey以上のことをやりたいらしいが。
javascriptの文法でキーカスタマイズからアプリ制御までなんでも出来るスクリプト環境を
つくろうってのは正しい方向性だと思うけど。
919名無し~3.EXE:2010/05/13(木) 21:56:55 ID:m6OaNJxa
ほう
920名無し~3.EXE:2010/06/03(木) 17:53:48 ID:iUihJw3M
var ie;var url,login_id,login_pw;function wait() { while(ie.Busy || ie.ReadyState!=4){ WScript.Sleep(100); }} function browser() { ie=new ActiveXObject('InternetExplorer.Application');ie.Visible=true;ie.Navigate(url);wait(); }
function post() { ie.document.forms[0].exec.click();wait(); } function reload() { ie.Navigate(url);wait(); } try{ url='★';browser();for (i = 0; i < 5; i++) { post();reload();}} catch(e){ } finally{ ie.Quit(); }

これのtry{}にあるurlに書かれたURLに飛んだあと別のURLに飛ぶようにできないのだろうか

var ie;var url,login_id,login_pw;function wait() { while(ie.Busy || ie.ReadyState!=4){ WScript.Sleep(100); }} function browser() { ie=new ActiveXObject('InternetExplorer.Application');ie.Visible=true;ie.Navigate(url);wait(); }
function post() { ie.document.forms[0].exec.click();wait(); } function reload() { ie.Navigate(url);wait(); } try{ url='★';browser();url='★';for (i = 0; i < 5; i++) { post();reload();}} catch(e){ } finally{ ie.Quit(); }

これだと飛ばぬ・・・
921名無し~3.EXE:2010/06/03(木) 18:23:45 ID:iUihJw3M
>>920にあともう一つ


IEタブを2つ表示させて 1つ目のタブにURL1を
2つめのタブにURL2を飛ばしたいけどどうしたらいいのかわからない
922名無し~3.EXE:2010/06/09(水) 14:11:04 ID:iwdCkyf4
>>921
navOpenInNewTab
923名無し~3.EXE:2010/06/09(水) 19:47:37 ID:dzSkViOB
>>922
それvbsだよね?
JavaScriptでは無理なのか?
924名無し~3.EXE:2010/06/09(水) 19:56:48 ID:jlgSYqLi
言語には関係ない
925名無し~3.EXE:2010/06/10(木) 14:14:01 ID:kJViM8Jd
ExecWBでソースの表示ってできない?
926名無し~3.EXE:2010/06/10(木) 15:22:23 ID:6Q2g02au
ブラウザそのものにはソースとかないしなぁ
927名無し~3.EXE:2010/06/11(金) 12:21:04 ID:uxlvNz01
>>925
IOleCommandTarget::Exec
928名無し~3.EXE:2010/06/11(金) 23:26:51 ID:biU9CjCk
JScriptをコンパイルしたいんだが、
WScriptオブジェクトなんてしらねって弾かれてもうた(´・ω・`)

Wscriptオブジェクトを引っ張ってくる方法か、
QUITとADODB.Streamの代替手段をおしえてくだせえ


929名無し~3.EXE:2010/06/12(土) 00:31:54 ID:tGmfb7H0
SendKeysで今までWebブラウザや2chブラウザOffice関連やその他の色んなソフトで自動化に成功してきましたが、
ゲームのエミュレータにだけはなぜか、ウィンドウをアクティブにした状態であってもキーを送れないです。(反応しないので送れているかわからない)
nnnesterやsnes9kやMAMEなどで試しましたが、どれもSendKeysで送ったキーでゲーム内のキャラが動いてくれませんでした。

エミュレータは(SendKeysが可能な)他のアプリケーションとは入力の受付方法が違うのでしょうか
またそのようなソフトに対してはWSHではキーを送って操作することは不可能ですか?
930名無し~3.EXE:2010/06/12(土) 00:58:38 ID:tGmfb7H0
調べたところ、SendKeysの問題ではなく、アプリケーション側のDirectInputの方の問題でした。
解決したのですみません。お邪魔しました
931名無し~3.EXE:2010/06/12(土) 21:51:27 ID:RtlbTOqz
win7でIE起動しようと思ったら動かない
Option Explicit

Dim objIE
Set objIE = CreateObject("InternetExplorer.Application")
Set objIE = Nothing
932名無し~3.EXE:2010/06/13(日) 01:10:20 ID:Czl7gJkW
そりゃだめだ
933名無し~3.EXE:2010/06/13(日) 01:42:07 ID:O+PAYz4/
Win XPの標準機能のみでパスワード付きZIPファイルを作りたいのですが、
VBScriptで実現させるにはどうやったらよいのでしょうか?
(できればSendKeys未使用で)

用は↓にパスワード機能を追加したいのです・・・
http://www.vector.co.jp/soft/winnt/util/se355605.html
934名無し~3.EXE:2010/06/13(日) 07:43:33 ID:ejrpzprv
>>933
unzip32.dllを実行する.exeってなかったっけ?
そいつに引数を渡す、つまり単純なWScript.ShellのRunってのはダメなのか?
935名無し~3.EXE:2010/06/13(日) 11:42:29 ID:h7K8R6ZR
会社のPCとかで、DLLやexeを勝手に入れられない環境なのかも。

ところで、Win XPの標準機能でパスワード付きZIPって作れたっけ?
936名無し~3.EXE:2010/06/13(日) 13:08:28 ID:OOuLiq/a
>>935
zipファイルをフォルダとして開いて、その中で右クリックして「パスワードの追加」を選ぶ

>Windows XP で圧縮 (zip) フォルダーを作成および使用する方法
>http://support.microsoft.com/kb/306531/ja

Shell.ApplicationのNameSpaceでzipファイルを開いて
InvokeVerbで出来ないかな・・・と思ったんだが、
どうも通常のコンテキストメニューじゃないっぽい。


というわけで漏れはあきらめて、7-zip.exe経由のスクリプトにした罠
937名無し~3.EXE:2010/06/14(月) 02:59:19 ID:Shk6x1Ga
SendKeysでできるならそれでいいじゃないか
938名無し~3.EXE:2010/06/15(火) 16:20:48 ID:U7q+ETSX
>>928
var Wscript=new Object();
939名無し~3.EXE:2010/06/27(日) 20:05:44 ID:519MlYZh
ScriptControlについて詳しく解説してるページはないでしょうか
MSのページ以外で
940名無し~3.EXE:2010/07/06(火) 18:27:24 ID:/FuRxImU
はい
941名無し~3.EXE:2010/08/08(日) 17:53:40 ID:H01uhNCs
wsfにして動かしてるときに、
エラーが出ると行番号とエラーメッセージは出力されるんですが、
どのファイルでエラーになったのかわかりません。


<job>
<script src="a.js" />
<script src="b.js" />
</a>

たとえば↑のようなソースでエラーが出てもa.jsででたのか、
b.jsで出たエラーなのかわかりません。
どのファイルでエラーが起こったか簡単に出力させる方法は無いでしょうか。
942名無し~3.EXE:2010/09/10(金) 01:26:27 ID:U54dr5It
WSHのJscriptのIDEってない?
943名無し~3.EXE:2010/09/13(月) 15:59:29 ID:JusA1110
途中で停止やキャンセルができるカウントダウンダイアログを実現するにはどうしたらいいのでしょうか。
944名無し~3.EXE:2010/09/13(月) 16:42:01 ID:f4rTX61Z
HTAでいいやん
945名無し~3.EXE:2010/09/13(月) 18:26:20 ID:nJPSBtkG
wsfからMSHTAにhtmlをぶち込んでTimerつかってダイアログを作ろうぜ。
wsfはテキストブロックが使えるんでjsで変数にぶち込むより楽だし。
<job id='main'><resource id='html1'><![CDATA[
<html><head><meta http-equiv=Content-Type content=text/html; charset=Shift_JIS>
<title>wshjshta</title></head><script type=text/javascript><!--
resizeTo(320,240);
--></script><script>
main=function(){
ofso=new ActiveXObject('scripting.filesystemobject');
oshl=new ActiveXObject('WScript.Shell');
sarg1=oshl.Environment('process').Item('arg1');alert(sarg1);
sval="こちらHTA。終了いたしますた!頂いた値は\n"+sarg1+"\nですね。お返しします。";};
writeval=function(s){ofso.GetStandardStream(1).Write(s);};
checkkeyEsc=function(){writeval(sval);self.close();};
</script>
<body id=bodymain bgcolor=buttonface scroll=no onLoad=main();>
<input id=btnesc type=button value=Esc name=btnesc style=width:48px;height:32px;position:absolute;left:4px;top:4px;>
<script for=btnesc event=onkeypress>checkkeyEsc(event.keyCode);</script>
<script for=btnesc event=onclick>checkkeyEsc(13);</script>
</body></html>
]]></resource>

<script>
var oshl = new ActiveXObject('WScript.Shell');
oshl.Environment('process').Item('arg1')=WScript.ScriptFullname;

var shtml=getResource('html1');//WScript.Echo("htmlのソースは\n"+ shtml);
var oexec = oshl.Exec('MSHTA.EXE ' + "\"" + "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).ReadAll()" + "\"");
oexec.StdIn.WriteLine(shtml);oexec.StdIn.Close();var sret=oexec.StdOut.ReadAll();WScript.Echo(sret);
</script></job>
946名無し~3.EXE:2010/09/19(日) 17:19:21 ID:nrLDwg0X
createobject("wscript.shell").run "timeout.exe /t 10",,true
947名無し~3.EXE:2010/10/30(土) 11:48:01 ID:aZzHdJuf
人がいないので、wshの宿題丸投げも受け入れたらどうか?
948名無し~3.EXE:2010/10/30(土) 13:21:43 ID:I+27eidl
というかwshの宿題なんてあんのか
949名無し~3.EXE:2010/10/30(土) 15:19:26 ID:MMhwI+bg
会社じゃOSに最初から入っている物しか使えないからwindows2000以下がなくなるまで使えないなー
950名無し~3.EXE:2010/10/30(土) 17:36:13 ID:PXp+kHBU
950
951名無し~3.EXE:2010/10/31(日) 11:33:29 ID:K+1LCVW9
ActivePythonを2.6.4から2.6.6にバージョンアップしたらcscriptで動かせなくなりました。
Pythonがスクリプトエンジンとして認識されてないのは分かるんですが、
どうしたら登録できるのでしょうか?

> cscript echo.pys //X
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

pythoncom error: PythonCOM Server - The 'win32com.server.policy' module could not be loaded.

Traceback (most recent call last):
File "C:\ActivePython26\lib\site-packages\win32com\__init__.py", line 5, in <module>
import win32api, sys, os
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
pythoncom error: CPyFactory::CreateInstance failed to create instance. (80004005)
CScript エラー: スクリプト "C:\ActivePython26\src\echo.pys" のスクリプト エンジン "Python" が見つかりません。
952名無し~3.EXE:2010/11/03(水) 09:53:35 ID:7kuL4xtp
レジストリに記述されているアプリケーションを起動させたいです。

下記行がレジストリに記載されています。
 "FeliCa Launcher"="\"C:\\Program Files\\Sony\\FeliCa Launcher\\FeliCaLauncher.exe\" /AutoStart"
上記を削除して

Feli.vbsというファイル名で
 ' FeliCaランチャー の起動
 Set objShell = WScript.CreateObject("WScript.Shell")
 WScript.Sleep(1000)
 objshell.Run """C:\Program Files\Sony\FeliCa Launcher\FeliCaLauncher.exe"""
を記述しスタートアップから起動しました。

レジストリからの起動ではコンテキストメニューは日本語表示なのですがvbsから起動すると英語になってしまいます。
どこがいけないのでしょうか?

直接"FeliCaLauncher.exe"を起動した場合は日本語表示です。
953名無し~3.EXE:2010/11/03(水) 18:09:31 ID:Z1ziivAW
objShell.CurrentDirectory = "C:\Program Files\Sony\FeliCa Launcher"
がいるんじゃね?
954名無し~3.EXE:2010/11/03(水) 18:34:04 ID:Wk+Y48U6
currentdirectoryだべ
955952:2010/11/03(水) 18:43:18 ID:7kuL4xtp
>>953
>>954
めちゃくちゃありがトンです。
956名無し~3.EXE:2010/11/03(水) 21:23:31 ID:y6OtZcS4
よーわからんが、そんな事で言語設定変わっちゃうんだ?
957名無し~3.EXE:2010/11/03(水) 22:22:53 ID:pryJcBHB
Sonyだからな。
958名無し~3.EXE:2010/11/03(水) 22:26:32 ID:Wk+Y48U6
設定ファイル(.ini)がcurrentdirectoryにあるとか
959名無し~3.EXE:2010/11/03(水) 22:37:18 ID:Rglqnav1
言語リソースDLLをカレントから読むとか
960名無し~3.EXE:2010/11/04(木) 02:05:27 ID:IPU7Qmke
デフォルトexeと同じフォルダから読むんじゃ?
961名無し~3.EXE:2010/11/21(日) 04:56:03 ID:Xoq2mKH0
Windowsタスクスケジューラー権限昇格 0day
http://www.exploit-db.com/exploits/15589/
962名無し~3.EXE:2010/11/22(月) 03:27:18 ID:5VauT4Aq
まじかよ。ゼロデイ来ちゃったー
963名無し~3.EXE:2010/11/22(月) 19:48:56 ID:bNwETWyS
http://d.hatena.ne.jp/haradago/20081031/p1

このスクリプトを最初のメッセージを出さずに使用したいです。
コメントアウトしたり削除したりしてだめでした。
最後のメッセージはコメントアウトで消えたのですが
964名無し~3.EXE:2010/11/22(月) 21:38:22 ID:lN067aVd
Popupの行
965名無し~3.EXE:2010/11/22(月) 22:11:27 ID:bNwETWyS
rc = objShell.Popup(strMsg, 10,, vbOkCancel)

上の関係の行を無効にしたら出来ましたありがとうございます。
966名無し~3.EXE:2010/11/23(火) 15:54:41 ID:ogLcfvq+
そのソースうつくしくないな
967名無し~3.EXE:2010/11/27(土) 20:18:34 ID:N9TN9nZF
ファイル名のリストをソートしたいと考えているのですが、そういう命令もしくはいいアルゴリズムはありませんでしょうか
968名無し~3.EXE:2010/11/28(日) 01:03:19 ID:kjMh0K6B
new Array().sort()
969名無し~3.EXE:2010/12/05(日) 12:14:02 ID:XvbcDPw3
システム環境変数のpathにカレントディレクトリーのパスを加えたいのですが
970名無し~3.EXE:2010/12/05(日) 12:41:47 ID:gdRSyiQ0
環境変数(Path)を取得して
CurrentDirectoryを取得して
PathにCurrentDirectoryを加えて設定するだけの話?
971名無し~3.EXE:2010/12/06(月) 18:38:47 ID:jL0dF/Wr
うん それだけの話
972名無し~3.EXE:2010/12/14(火) 23:07:00 ID:xvVINcBr
vbsやJScriptで各端末のスタートアップスクリプトにhoge.batを自動追加したいんですが
何か手はありますか?
973名無し~3.EXE:2010/12/15(水) 14:03:12 ID:B6wXKL0j
部下に、各端末のスタートアップスクリプトにhoge.batを追加しろと、命令する。
974名無し~3.EXE:2010/12/15(水) 17:05:58 ID:nPoZF4Na
ローカルからなら簡単だけどリモートからだと一気に難易度最高になるね
当然セキュリティ上そうでなきゃ困るけど
975名無し~3.EXE:2010/12/16(木) 00:03:39 ID:Ly0xWDPL
>>973
俺が最下位の部下だ!

>>974
各端末の最高権限はあるんですが
ローカルだとどんな感じでやるんですか?
976名無し~3.EXE:2010/12/16(木) 17:47:47 ID:SzpigIQo
ローカルだとスタートアップのフォルダにそのバッチをコピーすればいいだけじゃん
977名無し~3.EXE:2010/12/16(木) 22:57:17 ID:8L972klx
>>976
じゃあリモートでも同じようにスタートアップスクリプトのディレクトリにbatブチ混むだけって事になるけども
978名無し~3.EXE:2010/12/17(金) 14:19:51 ID:oLiWyxMM
リモートからスタートアップフォルダにバッチぶちこむってのは
ウィルスがよく使う手法だからな
979名無し~3.EXE:2010/12/18(土) 03:41:26 ID:nzv8VXx8
IEコンポーネントでブラウズしたサイトの画像を解析したいのですが、
どのようにすれば画像データを取得できますか?
画像のURLじゃなくて、中身を調べたいと思っています。
980名無し~3.EXE:2010/12/18(土) 09:09:22 ID:gnKG7FR5
それはファイルヘッダ(≒HTTPレスポンスヘッダ)を見たいとかEXIF情報を得たいとか、っつーことか?
ローカルファイルでそれをどうやるかが分かるなら、どうすりゃいいか分かりそうなもんだが。
981名無し~3.EXE:2010/12/18(土) 13:26:18 ID:Q5qSXrdx
982名無し~3.EXE:2010/12/18(土) 13:28:53 ID:z5U9k9qe
引数のファイルパスと設定ファイルを突き合わせて
このパスならこのアプリ、この拡張子ならこのアプリ、そうじゃなかったらデフォルトの関連付けで実行
みたいなスクリプト作ったらちょっと便利だ。
983名無し~3.EXE:2010/12/18(土) 13:37:50 ID:dRv15Xro
誰か次スレたのむ
984979:2010/12/18(土) 20:28:31 ID:nzv8VXx8
見たいのは、画像のピクセルデータですね。
ファイルフォーマットとか画像の扱い方自体は分かってます。
IEコンポーネントから取得する方法を知りたいんです。
985名無し~3.EXE:2010/12/18(土) 20:53:04 ID:Y1yufEN0
宿題丸投げOKもテンプレ入りでな
986名無し~3.EXE:2010/12/18(土) 20:59:01 ID:ikRpA7PP
>>983
無い
987名無し~3.EXE:2010/12/18(土) 21:17:37 ID:EcM8V9cL
>>979
urlからダウンロードすればよかとよ
988名無し~3.EXE:2010/12/18(土) 21:26:24 ID:e8su9WBR
>>984
以前、ローカルファイルの画像の縦横の大きさを取得したくてIEコンポーネントで何とかなるだろうと思って色々調べたけど
手掛かりすら分からなくてImageMagickに逃げちゃった
989名無し~3.EXE:2010/12/18(土) 22:25:00 ID:4WqhA8ii
ho
990名無し~3.EXE:2010/12/18(土) 23:30:54 ID:okmE5tZC
コマンドのテストするときにvbsファイル作って実行するの面倒なんだけど、dosプロンプトでコマンド直打ちして結果が見れる方法とかないですか?
991名無し~3.EXE:2010/12/19(日) 00:31:27 ID:9OCSd3mo
WScript.Echo は Cscript.exe で実行すると標準出力になる
992名無し~3.EXE:2010/12/19(日) 01:44:47 ID:GO7P8T7f
iscript.vbs

execute wscript.stdin.readall

を作って、
cscript iscript.vbs
直打ち
^Z
993名無し~3.EXE:2010/12/19(日) 05:16:03 ID:KuSYDWw7
ume
994979:2010/12/19(日) 05:26:27 ID:fKvLkkZ+
captcha画像なんで、URLみて再度取りに行こうとすると値が変わるんですよね^^;
995名無し~3.EXE:2010/12/19(日) 15:54:42 ID:g6h0YPJC
>>991>>992
おおー、こまい仕組みはよくわからんが動きました!
ありがとうございます
996名無し~3.EXE:2010/12/19(日) 19:39:11 ID:fKvLkkZ+
IEコンポーネントで、JavaScriptのON/OFFを切り替えるにはどうすればいいですか?
997名無し~3.EXE:2010/12/19(日) 20:55:06 ID:JPJY/SDW
ume
998名無し~3.EXE:2010/12/19(日) 22:00:17 ID:JPJY/SDW
ume
999名無し~3.EXE:2010/12/19(日) 22:26:59 ID:SZFqF39w

次スレ

お前ら、wsh使ってますか? Part8
http://hibari.2ch.net/test/read.cgi/win/1292764835/
1000名無し~3.EXE:2010/12/19(日) 22:27:45 ID:SZFqF39w
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。