5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :名無し~3.EXE:2010/12/19(日) 22:20:35 ID:SZFqF39w
こんなことコンピュータにやらせろよ。そう思ったことはありませんか?
簡易的な実行環境も含めて普通のOSだったら当たり前に備わっている自動実行。
Windowsの標準に備わっているそれがWSH(Windows Script Host)です。
また、ここではWSHだけに限らずWMI、ADSIなどのネタもOKです。

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

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

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

前スレ
お前ら、wsh使ってますか? Part7
http://hibari.2ch.net/test/read.cgi/win/1190548945/

2 :名無し~3.EXE:2010/12/19(日) 22:22:00 ID:SZFqF39w
2 名前:名無し~3.EXE[sage] 投稿日: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:2010/12/19(日) 22:23:08 ID:SZFqF39w
●コンポーネント関連リンク

○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:2010/12/19(日) 22:24:05 ID:SZFqF39w
●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:2010/12/19(日) 22:25:19 ID:SZFqF39w
●JavaScript、VBScript 以外のWSHで使える言語

TCLScript
http://tclscript.sourceforge.net/
Perl
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
Ruby
http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/
Python
http://www.python.jp/Zope/download
PHP
http://www.php.net/downloads.php
REXX
http://www.borg.com/~jglatt/rexx/win32/rxusrw32.htm

6 :名無し~3.EXE:2010/12/20(月) 01:30:01 ID:0VqfHqM5
言いたいことも言えないこんな世の中じゃ


7 :名無し~3.EXE:2010/12/20(月) 01:37:26 ID:pw89Kxj0
テンプレ乙


8 :名無し~3.EXE:2010/12/20(月) 02:20:06 ID:aLFKp+NM
>>11 に無駄口さんが来るかな、来ないかな。

9 :名無し~3.EXE:2010/12/24(金) 01:04:53 ID:MccdA2yM
hosyu

10 :名無し~3.EXE:2010/12/25(土) 10:14:02 ID:7Kf1fKnZ
Wscript.Echo("保守");

11 :名無し~3.EXE:2010/12/25(土) 16:11:37 ID:IjNpG0xL
---------------------------
Windows Script Host
---------------------------
スクリプト: C:\Users\10\Desktop\10.js
行: 1
文字: 1
エラー: 'Wscript' は宣言されていません。
コード: 800A1391
ソース: Microsoft JScript 実行時エラー

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


12 :名無し~3.EXE:2010/12/30(木) 00:17:30 ID:08ofgx/l
WSHで1番汎用的なのって結局vbsなんですか?


13 :名無し~3.EXE:2010/12/30(木) 00:42:04 ID:xW3gQ5+X
wsfだろ

14 :12:2010/12/30(木) 17:02:11 ID:08ofgx/l
>>13
一般的なデフォルトだと使えるのはVBSとJSCRIPTですよね?

15 :名無し~3.EXE:2010/12/30(木) 17:08:36 ID:0MWDFXK8
wsfが何か解ってての発言ならそう
解ってなくての発言なら「wsfもデフォルト、しかもwsf内でVBSとJS、更に他のActiveScript対応言語が混在できる」と言っておく

16 :名無し~3.EXE:2010/12/30(木) 17:55:32 ID:xW3gQ5+X
日本語でおk

17 :名無し~3.EXE:2010/12/31(金) 10:08:00 ID:/JGLq4Iy
えっ

18 :名無し~3.EXE:2010/12/31(金) 20:09:14 ID:kL9e4eNw
汎用的なんつー曖昧なことをいうからだ。
どれも何かの処理に特化したもんでもないし*それなりに*汎用的だ。

19 :名無し~3.EXE:2011/01/01(土) 16:30:59 ID:u9x30d7f
wsfはvbsより専用的?
jsはvbsより専用的?
一般的なデフォルト?
特殊なデフォルト?

20 :名無し~3.EXE:2011/01/02(日) 18:32:59 ID:92kNE2ba
vbsはvbscript専用。jsはjscript専用。wsfはvbscript、jscript両用なので汎用

21 :名無し~3.EXE:2011/01/03(月) 20:37:47 ID:kMeSMXdr
>>20
rubyとかだと物足りないの?

22 :名無し~3.EXE:2011/01/04(火) 03:43:46 ID:EAqM4Qxk
>>21
使ってないから

23 :名無し~3.EXE:2011/01/08(土) 02:47:48 ID:wFF3NM0U
rubyは一般的なデフォルトで使えないから汎用的でないんだよ

24 :名無し~3.EXE:2011/01/11(火) 18:20:42 ID:qCTX6A0m
>>23
デフォルトだとJSCRIPTとVBSCRIPTは使えるけど、って事?

25 :名無し~3.EXE:2011/01/13(木) 17:38:31 ID:xqN3E9C5
汎用的なデフォルトは一般的でないんだよ

26 :名無し~3.EXE:2011/01/13(木) 20:44:52 ID:JxRGBuOr
>>25
うん
質問が悪かった
窓APIとかWMIいじるならrubyよりVBSのがいいって事だよね?

27 :名無し~3.EXE:2011/01/14(金) 15:33:32 ID:j6FZVWGM
rubyはスレチガイ
http://hibari.2ch.net/test/read.cgi/tech/1170047838/l50

28 :名無し~3.EXE:2011/01/14(金) 23:51:58 ID:wa66ecam
>>27
>>4は?

29 :名無し~3.EXE:2011/01/15(土) 16:21:12 ID:4x/qG0WE
>>28
27ではないけど、書名にあるようにRuby側から見たらあくまで「邪道」
ただRubyやPerlそのものでは無くて
ActiveScriptRubyや、PerlScriptに依存した話なら
ここで良いのではと思う

30 :名無し~3.EXE:2011/01/15(土) 16:21:56 ID:zaQ/9Snk
窓APIとかWMIいじるならrubyよりPowerShellがいいって事だよ



31 :名無し~3.EXE:2011/01/16(日) 16:57:09 ID:aEtK6RmW
わざわざwshでrubyしていいことあるのか?

32 :名無し~3.EXE:2011/01/18(火) 21:09:35 ID:6oYqEXc4
HTAでActiveScriptRubyやPerlScriptやりたいならわからんでもないが

33 :名無し~3.EXE:2011/02/04(金) 19:18:50 ID:zRGsp834
Temporary Internet Files に溜まっている容量を食う画像ファイルの削除方


var fs = new ActiveXObject( "Scripting.FileSystemObject" );

function d1(aaa)
{
if(fs.FileExists(aaa)) fs.DeleteFile( aaa );
}

d1( "J:/Documents and Settings/inet2004user.ZISAKUPCAT1.001/Local Settings/Temporary Internet Files/Content.IE5/07HBQI7X/*.jpg" );
d1( "J:/Documents and Settings/inet2004user.ZISAKUPCAT1.001/Local Settings/Temporary Internet Files/Content.IE5/07HBQI7X/*.gif" );
d1( "J:/Documents and Settings/inet2004user.ZISAKUPCAT1.001/Local Settings/Temporary Internet Files/Content.IE5/09CZH168/*.jpg" );
d1( "J:/Documents and Settings/inet2004user.ZISAKUPCAT1.001/Local Settings/Temporary Internet Files/Content.IE5/09CZH168/*.gif" );
たらたら

スマートではないな。

34 :名無し~3.EXE:2011/02/04(金) 19:21:56 ID:H0i5uLHI
環境変数くらい使えw

35 :名無し~3.EXE:2011/02/05(土) 17:42:37 ID:oOuGbzzj
そんなもんバッチファイルでやれや

36 :名無し~3.EXE:2011/02/05(土) 18:19:50 ID:rk7KWhb/
バッチファイルとかDOS窓ひらくじゃん

37 :名無し~3.EXE:2011/02/05(土) 18:28:22 ID:oOuGbzzj
それくらい最小化すればええがな

38 :名無し~3.EXE:2011/02/07(月) 08:37:45 ID:DSR2LhTh
むしろ俺はWSHもcscriptでやるし、wscriptでもmsgbox表示するぞ
何かしらの表示があったほうが進行状況が分かって個人的に安心できる

39 :名無し~3.EXE:2011/02/07(月) 14:58:51 ID:FEcKz/Kj
いみふ 日本語使え

40 :名無し~3.EXE:2011/02/07(月) 18:42:46 ID:T7YFH+4h
わかるだろw

41 :名無し~3.EXE:2011/02/07(月) 21:08:05 ID:FEcKz/Kj
color f0
ってやれば気にならねーよ

42 :名無し~3.EXE:2011/02/07(月) 21:50:23 ID:FEcKz/Kj
ついでに
title Temporary Internet Files に溜まっている容量を食う画像ファイルを削除中です...

43 :名無し~3.EXE:2011/02/09(水) 21:43:47 ID:bFO76Jsd
>>38
バッチファイルからCSCRIPT.EXEで.vbsファイルを呼び出す手法は、私も良く使うほうだな。

44 :名無し~3.EXE:2011/02/10(木) 03:35:40 ID:p4x9btO0
個人的にはバッチファイルならJSかな

@if (0)==(0) @echo off
cscript.exe "%~f0" //Nologo //J:JScript %*
goto :EOF
@end
var args = new Enumerator(WScript.Arguments)

この辺まで個人的にテンプレ文だわ

45 :名無し~3.EXE:2011/02/10(木) 16:10:00 ID:DW3C2PEC
>>44
//Jてなんだよ

やっぱバッチもVBSが楽だな
rem; & @cscript.exe "%~f0" //Nologo //E:VBScript %* & @goto :EOF

46 :名無し~3.EXE:2011/02/10(木) 17:14:47 ID:uU7ZMDHw
俺は拡張子でwscript.exeとcscript.exeを使い分けてる
.vbs、.js、.wshはwscript.exe、.vbc、.jcs、.cshはcscript.exeってね
C Shell等、別な物と被るなら他の拡張子でもいいし

エディタが拡張子で言語見分けてるから、.bat拡張子だと
中身がJSやVBSでもバッチファイルの強調表示や入力補完になっちゃうし

47 :名無し~3.EXE:2011/02/10(木) 21:49:52 ID:p4x9btO0
>>45
ごめん間違えたw Eで合ってる

VBSだとそういう書き方になるんだな

48 :名無し~3.EXE:2011/02/13(日) 00:53:31 ID:lqMvXV0f
// jscriptでも1行でいけるね
@if (0)==(0) (@cscript.exe "%~f0" //nologo //e:jscript %*) & (@goto :eof) & @end

for(var iii=0;iii<WScript.Arguments.length;iii++){ WScript.Echo(iii + '-'+ WScript.Arguments(iii));};
new ActiveXObject('WScript.Shell').popup(WScript.Arguments.length);

49 :名無し~3.EXE:2011/02/13(日) 23:01:21 ID:n+mBrObW
>>45
コマンドエコーが玉に瑕だね

50 :名無し~3.EXE:2011/02/13(日) 23:22:03 ID:6qPKG8Qf
それほどの事でもないだろ

51 :名無し~3.EXE:2011/02/14(月) 06:15:38 ID:v7eRmHxP
>>45
remの後って、セミコロン?
; だと上手く行かなくて、^ に変えたら上手く行ったんだけど…

52 :名無し~3.EXE:2011/02/14(月) 15:25:37 ID:WWZot1vK
昔はVBSのほうがドキュメントもそろってたけど、もう立場は逆転した感じ。

53 :名無し~3.EXE:2011/02/14(月) 17:13:42 ID:MBnaCfqF
コロンだっちゃ

54 :名無し~3.EXE:2011/02/14(月) 19:39:06 ID:IB1nvu1Z
>>52
JavaScriptだとWEB関連でJSだとあやしいのがひっかかり検索しにくい困ったところ

55 :名無し~3.EXE:2011/02/15(火) 02:33:03 ID:5kt/fSLl
ちょっと教えてください。
時刻の文字列から、合計の秒数を計算して表示しようとしてるのだけれど、数字によって表示がおかしくなります。
何か大事なことを忘れてるんでしょうか?
わけがわからないです。

oshl=new ActiveXObject('WScript.Shell');
var nsec=33.48 ;
nsec=nsec + 60;
oshl.popup(nsec);/ * なにも文字を付け足さないと表示は問題ない * /;
oshl.popup(nsec +''+ " 60を足した結果に、文字を付け足すと数字がおかしくなる");

var nsec=33.48 ;
nsec=nsec + 100;
oshl.popup(nsec);/ * なにも文字を付け足さないと表示は問題ない * /;
oshl.popup(nsec +''+ " 100を足した結果に、文字を付け足しても数字がおかしくならない");

56 :55:2011/02/15(火) 02:49:44 ID:5kt/fSLl
わかりにくいかもしれないんで、書き直します。たとえば、関数の戻り値がおかしくなっちゃうのです。

test=function(n){
return( "合計 "+ (33.48 + n)+ "" + " 秒です");
};

oshl=new ActiveXObject('WScript.Shell');

n=60;
oshl.popup( test(n));// この場合は、数字がおかしい。

n=100;
oshl.popup( test(n));// この場合は、数字は問題ない。


57 :55:2011/02/15(火) 03:13:19 ID:5kt/fSLl
ぐぐったら、これがjavascriptの仕様なんだとw そ、そんな馬鹿なと思ったけど。
少数を含む数値を1000倍にしといて整数にしてから計算して、1000で割ることにしました。まんどくせえw

test=function(n){
return( "合計 "+ (33.48 + n)+ "" + " 秒です");
};

test2=function(n){
return( "合計 "+ (((33.48)*1000 + (n*1000))/1000)+ "" + " 秒です");
};

oshl=new ActiveXObject('WScript.Shell');

n=60;
oshl.popup( test(n));// 数字がおかしい。

n=60;
oshl.popup( test2(n));// 数字は問題ない。

58 :名無し~3.EXE:2011/02/15(火) 11:21:20 ID:KQK8NgNf
nが文字列になる瞬間に数字が変わってるね。
「return n;」だと異常ないのに、「return n+"";」だと循環小数になる。
こっちでもっと良い解決方法が無いか15分くらい探してみたけど、見付からなかった……。

あと、returnは関数ではなくて文なので、「return(n);」でなくて「return n;」の方が良いと思う。

59 :名無し~3.EXE:2011/02/15(火) 11:26:34 ID:KQK8NgNf
「return n;」の前に「n+=33.48;」って書いて説明するの忘れてた……。

function test(n){
n+=33.48;
//return n;/*93.48*/
//return n+"";/*93.47999999999999*/
return "合計"+n+"秒です";
};
var oshl=new ActiveXObject('WScript.Shell');
oshl.Popup(test(60));

60 :名無し~3.EXE:2011/02/15(火) 17:27:27 ID:63WoE9G3
俺はVBSがメインでJSは多少しか使わないんだけど
MsgBox関数に相当するようなのはJSでは何?

デバッグ用によく使うんだけど、JS使うときいつも困る。

61 :名無し~3.EXE:2011/02/15(火) 18:31:31 ID:Sw9YlaCV
WScript.Echo()

62 :名無し~3.EXE:2011/02/15(火) 18:33:56 ID:S4MkxuXz
>>59
return "合計"+Math.ceil(n*1000)/1000+"秒です";

63 :名無し~3.EXE:2011/02/15(火) 18:45:58 ID:ohiLAigb
// スクリプトコントロールのVbscriptで逃げられるかと思ったら、引き算がアウトだった。
// nilscriptもjscriptと同じく駄目。dmscriptで試すと、引き算を除いて、問題なしだった。
oshl=new ActiveXObject('WScript.Shell');
ovbscript=new ActiveXObject('ScriptControl');
ovbscript.Language = 'VBScript';
ovbscript.AddCode("Function vbscriptexecute(scommand):dim sret:Execute scommand:vbscriptexecute=sret:End Function");

sreteval=function(scommand){return ovbscript.Run('vbscriptexecute',scommand);};


64 :名無し~3.EXE:2011/02/15(火) 18:47:51 ID:ohiLAigb
n=33.48; nplus=60;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=33.48:nplus=60:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= (33.48 + 60) & "どうですかvbs"'));

n=1.01; nplus=1.1;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=1.01:nplus=1.1:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= (1.01 + 1.1) & "どうですかvbs"'));

n=1.01; nplus=-1.1;
oshl.popup( (n + nplus)); oshl.popup( (n + nplus) + "どうですかjs");
oshl.popup( sreteval('n=1.01:nplus=-1.1:sret=(n + nplus) & "どうですかvbs"'));
oshl.popup( sreteval('sret= ((1.01 - 1.1)+0.01) & "どうですかvbs"'));

65 :名無し~3.EXE:2011/02/15(火) 19:02:44 ID:ohiLAigb
@set @SHORT_CIRCUIT = true/* & (@title batdm:%~nx0) & (@dm.exe "%~f0" %*) & (@goto :eof) & @end */
// d-monkeyのdmscriptでも一行バッチが動いたわ。jscriptでも起動の部分だけ変えると動くね。

66 :名無し~3.EXE:2011/02/15(火) 22:18:48 ID:qdYN7Y8/
>>60
cscriptからだとダイアログ絡みはオブジェクトの管轄になっちゃう
俺はダイアログ使うようなのはVBS、テキストフィルタみたいなのはJSでやってるかな

67 :名無し~3.EXE:2011/02/16(水) 14:03:18 ID:9iSQ4aMo
>>60
関数作ればいいじゃん。
function msgbox(s,n){new ActiveXObject('WScript.Shell').Popup(s,n);};

msgbox("www");

68 :名無し~3.EXE:2011/02/19(土) 10:10:15 ID:QTF/dNrf
スクリプトコンポーネント(WSC)内部から
呼び出し元のコンテキスト(グローバルオブジェクト)を取得することってできるかな。
WSC内のグローバルオブジェクトと
呼び出し元(例えばWSH)のグローバルオブジェクトは異なるんだよね。
現状WSH側から明示的にthisを渡しているけど、
できればこれを暗黙的にやりたいんだ。

69 :名無し~3.EXE:2011/02/19(土) 10:28:51 ID:QTF/dNrf
>>55
小数点の桁合わせには toFixed メソッド使うといいよ。
return "合計 "+ (33.48 + n).toFixed(2) + " 秒です";


70 :名無し~3.EXE:2011/02/19(土) 20:38:09.30 ID:3yL0phsS
>>68
executeglobalつかえばできるんじゃね

71 :名無し~3.EXE:2011/02/19(土) 23:30:19.14 ID:QTF/dNrf
>>70
WSC側でexecuteglobalを呼び出す限り
WSCのグローバルコンテキストで実行されるだけなんだよね(eval系は全部同じ)。

ちなみにJScript使っているんだけど
WSC側でevalするとWSCのグローバルコンテキストで評価される。
WSHのグローバルを受け取って(仮に変数wshに入れておくとする)
WSC側でwsh.evalとするとWSH側のグローバルコンテキストで評価される。
これをしたいがためにWSH側のグローバルオブジェクトが必要だった。
WSH側から明示的には渡せるけど、
WSC側から暗黙的に取得することは可能なのかなと思った次第っす。


72 :名無し~3.EXE:2011/02/20(日) 00:27:41.73 ID:yeS7euVC
通りすがりです

>>71
>WSH側から明示的には渡せるけど、
>WSC側から暗黙的に取得することは可能なのかなと思った次第っす。
これいろいろ探したけどダメだったな

>WSC側でwsh.evalとするとWSH側のグローバルコンテキストで評価される。
オレもこれやったな
wsh 側のメソッドを wsc 側で再定義して利用したとき気がついた

73 :名無し~3.EXE:2011/02/20(日) 22:06:10.54 ID:w/qV1CAR
classはexecuteglobalできたがwscはだめみたいね

74 :名無し~3.EXE:2011/02/20(日) 22:20:30.93 ID:+TcATz3w
それってWSC側で、たとえばWSHのJscriptを使ってるときには、WSCの関数の中で勝手にWScriptオブジェクトを使い、
HTAから呼び出す場合は、locationを、エディタのマクロからだとEditorオブジェクトを使えるよう出来るって話でもある?
それが出来たらシンプルになるなぁ。
でも一回は外からオブジェクトを渡さないと無理なんでしょ?

75 :名無し~3.EXE:2011/02/20(日) 22:59:44.10 ID:W5fSZz0V
>>69
もうちょっと教えてくれない? こういう処理でも問題ないのかな?

oshl=new ActiveXObject('WScript.Shell');

n=60;
s = "合計 "+ ((33.48 + n)-0) + " 秒です。 小数がだらだら続く・・・orz";
oshl.popup(s);

s = "合計 "+ ((33.48 + n).toFixed(13) -0) + " 秒です。.toFixed(13);トレビア〜ン!";
oshl.popup(s);

s = "合計 "+ ((33.48 + n).toFixed(14) -0) + " 秒です。.toFixed(14);・・・orz";
oshl.popup(s);

13桁にしとくと問題ないみたいだが。14桁だとまた出てくる。この境目に重大な謎が潜んでるですかね?
とりあえず((33.48 + n).toFixed(13) -0) って感じに書き換えて動かしていきます。ありがとう。

76 :名無し~3.EXE:2011/02/20(日) 23:27:24.33 ID:e7HEvFyX
人間の考える小数とは違うんよ。
「浮動小数点数」ってのを知っとくといいよ。


77 :名無し~3.EXE:2011/02/21(月) 00:12:12.32 ID:Tq0Q360t
>>76 いまぐぐってます。ありがとう。
とりあえず計算のあとには、 .toFixed(13)-0 をつけることにします。

78 :名無し~3.EXE:2011/02/21(月) 01:39:52.68 ID:We8Hkeyt
>>74
現状、既定のメソッドを定義して
new ActiveXObject('foo.bar')(this)
という一行で済ましているよ。
とりあえず呼び出し側のグローバルさえ渡せば
WSC内である程度自由にできるから。

呼び出し側とWSCの連係で厄介なのは
グローバルオブジェクトの交換はできても
両者のスコープは完全に独立しているってこと
関数をどちらのコンテキストで実行するかで
スコープチェーンが異なってくるんだよね。
arguments.callerとか使うとハマるwww

79 :名無し~3.EXE:2011/02/21(月) 23:19:21.24 ID:rbGY7ZiC
>>78
WSCへthisで渡すってか。またひとつ勉強になった。ノシ

80 :名無し~3.EXE:2011/02/23(水) 01:28:34.67 ID:YNUK4o1U
@set @s=1;/* & (@title batjs:%~nx0) & (@"cscript.exe" //nologo //e:jscript "%~f0" %*) & (@goto :eof) & @end */;g=GetObject("script:"+"C:\\g.wsc").init(this);

g.popup("cscriptでwscを使うバッチを1行でまとめてみた。");

/* g.wscの中身
<?xml version="1.0" encoding="shift_jis" ?>
<component><?component error="true" debug="true"?><public>
<method name="popup"/>
<method name="init"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
function popup(smes,nsec){return oshl.popup(smes,nsec);};
function init(othis){
if(typeof(othis.WScript)=='object'){WScript=othis.WScript;
}else if(typeof(othis.location)=='object'){location=othis.location;
};return this;
};
]]></script></component>
*/

81 :名無し~3.EXE:2011/02/23(水) 01:48:39.04 ID:8LTNmD8F
大したことではないけど
popup メソッドのディスパッチIDを0にしておけば、
メソッド名も省略して呼び出せるよ。
これはJScriptではなくCOMコンポーネントの規約。

82 :名無し~3.EXE:2011/02/23(水) 02:42:23.12 ID:uWPO9giD
wscのほうで、 <method name="init" dispid="0"/>
にしておけば、スクリプトのほうで
g=GetObject("script:"+"C:\\g.wsc")(this);
でいいってことなんだ。
それが >>78
new ActiveXObject('foo.bar')(this)
の話なわけだ。
やっと理解できたw
やっぱり晒して添削を受けてみるもんだね。ありがとう。
さっきぐぐったら英語の記事で、dispid=0 in .WSC does not work in Vista がうんたらかんたらと出てきたがワケワカメ・・・

83 :名無し~3.EXE:2011/03/03(木) 17:58:00.79 ID:yGt/TIu+
三陸産カットワカメ・・・

84 :名無し~3.EXE:2011/03/03(木) 22:08:51.13 ID:EjH1JmdG
おまえはどこのワカメじゃ!

85 :名無し~3.EXE:2011/03/03(木) 22:56:09.53 ID:3EDIrNbf
素人の質問ですみません。以下の記述で

〜〜〜
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

FilePATH = "C:\WINDOWS\system32\drivers\etc\hosts"
set PNTR_fullPATH = objFSO.GetAbsolutePathName( FilePath )
〜〜〜

オブジェクトがありません。: '[string: "C:\WINDOWS\system32\"]'
とエラーが返ってくるのですが、いまいち原因が分かりません。

すみませんが教えて下さい。

86 :名無し~3.EXE:2011/03/03(木) 23:07:48.07 ID:1OyzSADG
set要らない

87 :名無し~3.EXE:2011/03/04(金) 03:21:31.70 ID:wiEZLKWL
あ・・・ありがとうございます!!

88 :名無し~3.EXE:2011/03/04(金) 19:46:37.57 ID:tFN5KqE3
@echo off
ruby -x "%~0"
goto :exit

#!ruby
puts "hello"

で.batとrubyを混在させることができますが
同様に.vbsファイル中にbatのコードを記述するやり方があったら教えてください。

89 :名無し~3.EXE:2011/03/04(金) 19:50:14.75 ID:dFFRxivQ
はぁ?逆じゃね?

90 :名無し~3.EXE:2011/03/04(金) 20:16:18.74 ID:gkErHLUc
>>89
そうだよな

>>88
batファイルの中に vbs のコードを記述するんだろ?
>>45 とかじゃね

91 :名無し~3.EXE:2011/03/04(金) 20:17:01.88 ID:bG2qjjj3
100レスもないこのスレを読めばいいよ

92 :名無し~3.EXE:2011/03/04(金) 20:23:04.12 ID:tFN5KqE3
逆ではないです。>>88の質問の通りです。

93 :名無し~3.EXE:2011/03/04(金) 20:30:56.41 ID:3PGgX7eE
同様にって言うならrubyの中にbatを混在させてなきゃいけないだろ。
出来るのかどうか知らんが。

bat中にruby書いてる>>88の例から言うなら「逆に」等の接続詞が妥当。

94 :名無し~3.EXE:2011/03/04(金) 21:44:20.76 ID:dFFRxivQ
どっちでも>>45でええんじゃね

95 :名無し~3.EXE:2011/03/04(金) 22:16:57.68 ID:dFFRxivQ
中の概念崩壊?

96 :名無し~3.EXE:2011/03/05(土) 00:32:27.66 ID:AVPrJyfw
var str = "abc";
typeof str は "string"
str instanceof Object は False
なのに str.constructor はエラーにならず String と出る
constructor プロパティは Object のメンバーのはず。
暗黙的な new String はどこで行われている?

97 :名無し~3.EXE:2011/03/05(土) 00:57:31.81 ID:w8aZ0SFU
適当な考えだが、
バリアント型なんで評価時にクラスが決定されるんでないのかね。

var x ="123"; // これだと string

さらに

x++; // こうすると number になる

98 :名無し~3.EXE:2011/03/05(土) 07:18:20.64 ID:XA/P3Nuj
>>96
ttp://msdn.microsoft.com/ja-jp/library/0y7dd8cx.aspx

> JScript の Object は特殊です。
> オブジェクトは Object コンストラクターで作成された場合にだけ
> Object のインスタンスであると見なされます。

つまり、StringはObjectの派生であるからObjectのメソッドが使えるのだが
incetanceofがObjectの直接のインスタンス以外を
Objectのインスタンスとして認めない、という話

JSではObjectを連想配列(ハッシュ、辞書)のように使うことがあるから
そのための配慮だと思われるが、ややこしいな

99 :名無し~3.EXE:2011/03/05(土) 12:00:42.65 ID:AVPrJyfw
>>97,98
サンクスです。
仕様ということで頭に入れておけばいいのでしょうけれど
typeof や instanceof を使った条件分岐の際、
あいまいな理解だと予期せぬ動作を引き起こしそうですねw。

100 :名無し~3.EXE:2011/03/06(日) 16:57:59.80 ID:rO7bjyyi
javascriptのプロトタイプの例としてtrim()コマンドってのがあります。
ぐぐるとよく出てきます。
このようなprototypeをwscに登録して、関数やプロパティのように楽して使いたいのですが
よくわからんです。
いまの自分のwscの理解の状態は、関数やプロパティをwscに書いて、
jscriptやhtaのgetobjectから呼ぶことは出来るレベルです。
windows script component に詳しい人がいたらヒントをお願いします。

101 :名無し~3.EXE:2011/03/06(日) 20:15:06.19 ID:OTYUKE1n
>>100
wscは既存のオブジェクトを拡張するための機能ではないよ。
新規にオブジェクトを設計してそれをスクリプトから再利用出来るようにするもの。

君の場合、jsやvbsで拡張用のコードを用意しておいて
それをwsfやhtaから利用するほうが楽なんじゃないかな?
scriptタグを使って読み込めるからね。
質問から察するにそちらのほうが正攻法だと思う。

もちろんWSCを使って呼び出し元のオブジェクトを
無理矢理拡張できないこともないけど。

102 :名無し~3.EXE:2011/03/06(日) 22:39:37.78 ID:0PSkRQeX
WSC prototypeでぐぐって見たら、
ttp://moz-addon.g.hatena.ne.jp/ZIGOROu/?word=*[WSC]
が引っかかりました。wsc経由でも、prototypeが使えるらしい。  やった!w
・・・が細かい記述はなし。
あと、スクリプト内部の外部ファイル化も出来るらしい。試したら・・・出来た!w
<property name="test0"/>
<script language="JScript" src='./test0.js'/>
これ便利だわw

prototypeが出来るか?もうちょっと粘ってみます。

103 :名無し~3.EXE:2011/03/06(日) 23:21:41.58 ID:OTYUKE1n
>>102
ひとつ言っておくけど
wscのグローバルコンテキストと呼び出し元のそれとは異なるからね。
つまりwsc内のStringオブジェクトのプロトタイプを拡張しても
呼び出し元のStringオブジェクトには使えないということ。
まあ試せるだけ試して、また来なさいな。

104 :名無し~3.EXE:2011/03/07(月) 00:34:09.18 ID:cQcCMBvw
たしかにw WSFかHTAでやったほうがいいね。WSFなら<job>と<script src=....>タグで包めばいいだけだものね。
<job><script src=./test0.js /><script src=./prototype0.js /><script>

s=" Trim WSH ";
oshl=new ActiveXObject('WScript.Shell');
test0.alert3("WSFから読み込んで実行" + "\n" + s +"\n" + s.trim());
test0.表示する2("---"+ s +"---\n" +"---"+ s.をトリム()+"---");

/*
// test0.jsの中身
test0={
alert3 : function(s){oshl.popup(s,3);},
表示する2 : function(s){oshl.popup(s+"\n\n"+s);}
};
// prototype0.jsの中身
trim = function(){return this.replace(/^[ \t ]+/,'').replace(/[ \t ]*$/,'');};
String.prototype.trim = trim; String.prototype.をトリム = trim;
*/
</script></job>

105 :名無し~3.EXE:2011/03/07(月) 03:50:20.20 ID:cQcCMBvw
結論を先に言うと、WSCに書いたprototypeのtrimを、WSC側だけでなく、スクリプト本体からも使えるようですw!
スクリプト本体からGetObjectでWSCに送るオブジェクト this にprototypeを付け足せばOKのようです。
 
で、下記のサンプルのjsファイルと同じフォルダに、別記のthistest.wsc ファイルと
wscに読み込むための test1.js ファイルを置いて試して見て下さい。
trimとコマンドラインの引数を表示するサンプルです。
とりあえず動くようなんでこれで問題ないかな?と思ってるんですけど、どうかな?

106 :名無し~3.EXE:2011/03/07(月) 03:52:33.62 ID:cQcCMBvw
main=function(){
s=" test ";
sTrim= "TrimBefore==="+s +"==="+"\n";
sTrim+="TrimAfter ==="+s.trim()+"==="+"\n";
sTrim+="TrimAfter ==="+s.をトリム()+"==="+"\n";
sTrim+="TrimAfter ==="+funsub(s)+"==="+"\n";
oshl.popup("trim()のテスト\n\n"+ s + "\n\n"+ sTrim);
test1.alert3(" --- コマンドラインの引数argcl=\n" + argcl.join("\n"));
test1.表示2( 3333 );
n = ( 999 + 1000 ).を表示(); sss=(" 終了です " + n ).を表示();
oshl.popup("---"+sss+"---");
};

pWscのパス=WScript.Scriptfullname.replace(/^(.+)[\\]([^\\]+)$/,'$1')+"\\thistest.wsc";
GetObject("script:" + pWscのパス)(this);

funsub=function(s){return s.trim();};

main();

/*** thistest.wsc から読み込む test1.js ファイルの中身。 thistest.wscは別記する。
test1={ alert3 : function(s){oshl.popup("==="+ s.trim()+"===",3);},
表示2 : function(s){oshl.popup(s+"\n\n"+s);}
};
***/;

107 :名無し~3.EXE:2011/03/07(月) 03:56:57.64 ID:cQcCMBvw
<?xml version="1.0" encoding="shift_jis" ?><component><?component error="true" debug="true"?><public>
<method name="init" dispid="0"/> <property name="test1"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript" src='./test1.js'/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
var ofso=new ActiveXObject('Scripting.FileSystemObject');
trim = function(){return this.replace(/^[ \t ]+/,'').replace(/[ \t ]*$/,'');};
String.prototype.trim = trim; String.prototype.をトリム = trim;
を表示= function(){oshl.popup(this);return this;};
String.prototype.を表示 = を表示; bWScript=false; blocation=false;

function init(ooo,sopt){
if(typeof(ooo.WScript)=='object'){
bWScript=true; WScript=ooo.WScript; ppScriptfullname=WScript.ScriptFullname;
getArgcl=function(){var aaa=[];for(var iii=0;iii<WScript.Arguments.length;iii++){aaa.push(WScript.Arguments(iii));};return aaa;};
}else if(typeof(ooo.location)=='object'){
blocation=true;location=ooo.location;ppScriptfullname=location.pathname;getArgcl=function(){var aaa=[];return aaa;};
};
ooo.test1=test1; ooo.ppScriptfullname=ppScriptfullname; ooo.argcl=getArgcl(); ooo.oshl=oshl; ooo.ofso=ofso;
ooo.String.prototype.trim = trim; ooo.String.prototype.をトリム = trim;
ooo.String.prototype.を表示 = を表示; ooo.Number.prototype.を表示 = を表示;
return this;
}; ]]></script></component>

108 :名無し~3.EXE:2011/03/07(月) 19:34:50.38 ID:o0m549Gn
>>105
そうですね、>>78 でも書いたけど、現時点においては
呼び出し元のグローバルオブジェクトを渡すというのが唯一の解法だと思う。
少なくとも私は他の方法を知らない。ほとんどの場合、それで事足りると思うけど、
両者のスコープは完全に独立しているという点だけは注意しておいたほうがいいよ。
コードによっては弊害が発生するから。

何か特殊なことをしたいのでなければ
このコードは明らかにwsfのほうが向いていると思うけど、
WSCの調査目的でやっているのなら、そいつはお節介かw。



109 :名無し~3.EXE:2011/03/08(火) 00:08:48.35 ID:hefFAWy/
昨日いろいろ試していて、>>78 new ActiveXObject('foo.bar')(this)
g=new ... というような戻り値を取らない意味がやっと理解出来ましたw
呼び出し元がWSHの場合は、thisに返すことも出来るってことですね。
>>102 のURLの中の人の解説も、今になると少しは理解できましたw

WSCを掘ってみようと思ったのは、WSHとは役目の違うAutohotkeyなどのスクリプト言語からもJscriptで作った関数を楽に使いたかったからです。
関数を一つ一つScriptControlするかという手もあるけど、ScriptControlからGetObjectで一括で取り込んでしまおう!というわけです。
WSCを経由することのスピードのロスは、自作のツールだから割り切れますんでね。
これで、Bat偽装のJscriptで作ったツールを、prototypeを除いてAutohotkeyやhtaboxコアからもほぼ同じように再利用出来ることがわかってよかったです。
このスレには、WSHやjavascript関係でググると出てくる方たちが何人か常駐してるんだろうねw
>>108 さんをはじめみなさんいろいろ教えてもらってありがとう!

110 :名無し~3.EXE:2011/03/09(水) 05:55:35.07 ID:Mqnv57Gr
JScriptでcatchブロックの下にあるfinallyブロックを使い、
ソースコードを定期的かつ自動的に実行したいのですが
どのように記述しするべきなのでしょうか?

ちなみにfinallyブロックはこのように記述されていて、
IEブラウザが勝手に閉じてくれます

finally{
ie.Quit();
}

111 :名無し~3.EXE:2011/03/09(水) 09:22:51.55 ID:yiJYnNja
try〜catch〜finally はそういう用途で使うもんじゃないんでないの

112 :名無し~3.EXE:2011/03/09(水) 22:12:50.52 ID:LlSweAWG
WSHでクリップボードを使おうと思って次のようなコードを書きました。
値の取得はできるのですが、値の設定がうまくいかないんです。
xxxは表示されず、それ以前にクリップボードに入れた値が表示されます。
どうすれば値の設定ができるようになりますか?

var cb = new ActiveXObject("htmlfile").parentWindow.clipboardData;
cb.setData("text", "xxx");
new ActiveXObject("WScript.Shell").popup(cb.getData("text"));


113 :名無し~3.EXE:2011/03/10(木) 01:52:14.41 ID:cSFmRFjD
インターネットオプション セキュリティ インターネット 低

114 :名無し~3.EXE:2011/03/10(木) 05:07:35.87 ID:OzXGAxB6
>>112
SFCminiのDLLをインストールしてやる方法もあるよ。

CopyPathToClipBoard.vbs

ttp://d.hatena.ne.jp/Shinez/20100730/p1

115 :名無し~3.EXE:2011/03/10(木) 05:14:36.60 ID:OzXGAxB6
ただこんな話もあるようですが・・・
ttp://d.hatena.ne.jp/Fio/20050321
データ実行防止
 DynaCallを使って、WSHでクリップボードを直接操作したりすることをテストしているのですが、ほんのわずかのテキストだったらいいのですが、ちょっと数が多くなるとてきめんにデータ実行防止の画面が出てきてWSHを落とされます。

 これはXPのSP2以降の機能のようですが、ウィルスでないWSHスクリプトをウィルスといっしょにすなーー

116 :名無し~3.EXE:2011/03/10(木) 05:29:08.75 ID:hGam45QR
>>113
about:blankを信頼済みに追加して「スクリプトによる貼り付け処理の許可」を有効にしています。
ここを無効にするとクリップボードの読み取りも不可になるのでちゃんと反映されていると思うんですが。
WSHから呼び出したときabout:blankであることは以下のコードで確認しました。
var win = new ActiveXObject("htmlfile").parentWindow;
new ActiveXObject("WScript.Shell").popup(win.location);
IEのバージョン依存とかもあるんですかね。自分の環境はIE8です。
>>113 さんの環境では値の設定もできてますか?

>>114
参照先を見てみました。今の自分にはちょっと難しそうなのでこれから勉強してみます。


117 :名無し~3.EXE:2011/03/10(木) 05:55:38.56 ID:/U/Q8ZHj
GetObjectだとコンピュータゾーンになるらしいけど
ただ、どっちにしてもsetDataで設定できないみたいね
InternetExplorer.Applicationとかは

118 :名無し~3.EXE:2011/03/10(木) 07:37:59.38 ID:TVU14U2L
about:blank の新規窓作ってスクリプトでコンテンツ作成するサイトもあるよ

119 :名無し~3.EXE:2011/03/10(木) 19:31:42.80 ID:hGam45QR
>>118
うう、なるほど。
about:blankだからといって安心出来ないわけですね。

120 :名無し~3.EXE:2011/03/10(木) 21:23:25.37 ID:cSFmRFjD
alert()はできてもprompt()はできないのと一緒
parentWindowは実際にosのwindowを持ってないからだめ

121 :名無し~3.EXE:2011/03/11(金) 00:20:10.33 ID:V8ey7rJ7
>>112
WSH は元々クリップボードを扱うことを想定していないから、
OLE の初期化という処理をアプリケーション側で行っていないんだよね。
だからクリップボードに値を設定することができない。
HTA のように OLE の初期化を行っているスクリプトホストであれば
>>112 のコードは正しく実行される。

じゃあ WSH では不可能なのかというと、API を直接呼び出して
WSH 上で OLE の初期化をさせてしまうという強引な方法もある。
コードの理解には DynaCall や Win32API の知識が必要になるけど、
DynaCall を登録後、以下の三行をオマジナイとして
>>112 のコードの前に追加してみてください。
WSH でもクリップボードに値を設定できるはずだよ。

var dynwrap = new ActiveXObject('DynamicWrapper');
dynwrap.register('ole32','OleInitialize','f=s','i=l','r=l');
dynwrap.OleInitialize(0);

>>114
SfcMini だとこんな感じかな。
var API = new ActiveXObject('SfcMini.DynaCall');
API.LoadLibrariesW('ole32');
API.OleInitialize(0);

ちなみに OleInitialize の戻り値は WSH では 0 だけど HTA だと 1 になる。
これは HTA が既に OLE 初期化済みですよというエラーコード。
つまり 1 が返るスクリプトホストであれば OleInitialize は不要ってこと。
OleInitialize が何をしているかについてはかなり専門的な話になるので省略。
ネットで詳細な解説を見つけるのは難しいかも。興味がある人は以下の本を読むとよろし。
http://www.amazon.co.jp/dp/4756102379


122 :名無し~3.EXE:2011/03/11(金) 01:28:02.40 ID:u15/Db+W
割り込みスマン。

出来たわ。そういう手もあるのか。

123 :名無し~3.EXE:2011/03/12(土) 15:38:51.55 ID:r5dmqnIa
メルトダウンか・・・

124 :名無し~3.EXE:2011/03/12(土) 17:51:36.66 ID:r5dmqnIa
お〜い、おまいら生きてるか?

125 :名無し~3.EXE:2011/03/29(火) 15:01:07.19 ID:LTJJZQ9e
UTF-8のtarget.csv、Shift-JISのmaster.txtがある
master.txtにはtarget.csvで置換したい文字列が入っている

target.csv
1,2,3,fuga,5
1,piyo,4,5,5
...

master.csv
hoge
fuga
piyo
...

概要
master.csvの1レコード目の値を取得(変数keyとする)
keyでtarget.csvの1行目を検索する。
HITするならnullに置換。(要は削除したい)
HITしないなら2行目。
target.csv内でループ
master.csv内でループ

問題点
文字コードが違う為、print、write、ODAの使用ができない。
(ODAは文字コード関係ないって聞いた事があったのに…)
これではソースコード内で置換できても、出力ができない上に
文字列を取得する際も文字化けしてしまっている為、処理ができない。

JAVAなんかだと文字コード変換する関数があるけど
JSCRIPTではやっぱ無理?

126 :名無し~3.EXE:2011/03/29(火) 15:16:03.05 ID:C2y6smjb
FSOかADODB.Stream使えばいいんじゃね?

127 :名無し~3.EXE:2011/03/29(火) 17:03:21.21 ID:LTJJZQ9e
>>126
両方駄目だった
UTF-8のテキストを読み込んでアラート出すと2バイト文字が化ける

128 :名無し~3.EXE:2011/03/29(火) 17:11:32.48 ID:C4uw/B/3
それはばけるでなくばかなんだろw

129 :名無し~3.EXE:2011/03/29(火) 17:31:23.95 ID:C2y6smjb
>>127
君がちゃんと使えてないだけだから頑張れ

130 :名無し~3.EXE:2011/03/29(火) 17:50:11.87 ID:aPraUPt/
>>129
マジで出来るのか
もう1度やってみる
ありがとう

131 :名無し~3.EXE:2011/04/04(月) 21:15:15.89 ID:yLz3Zj6h
wshに渡した引数のダブルクォートが消えないようにするにはどうしたらいいでしょうか。

用途はだいなファイラーの補助スクリプトです。
マクロで変換後スクリプトには"a" "b"...のように渡るのですが、これがa b...になってしまいます。
渡す文字列に半角空白が含まれている場合に不都合です。

132 :名無し~3.EXE:2011/04/05(火) 10:02:01.81 ID:vdfNDaB1
>>131
ダブルクォーテーションで括れば?


133 :名無し~3.EXE:2011/04/05(火) 10:02:45.94 ID:Pf/rrN9p
個人寄付ランキング

100億 孫正義(ソフトバンク)
10億 柳井正(ユニクロ) 三木谷浩史(楽天)
6億 ブリトニー・スピアーズ(米・歌手)
5億 似鳥昭雄(ニトリ)
2億 久米宏(アナウンサー) 中居正宏(SMAP4億、内2億)
1.2億 レディー・ガガ(米・歌手)
1億 イチロー(マリナーズ)
8000万 サンドラ・ブロック(米・俳優)
7500万 ぺヨンジュン(韓・俳優)
5000万 安室奈美恵(歌手)
3500万 浜崎あゆみ(歌手)
3200万 ジャッキー・チェン ←New
100万 堀江貴文 (ホリエモン)
33万 蛯原友里(タレント)
6万9千 内田裕也(ロック)
体で支払い 江頭2:50(タレント)
折り鶴  アブネスチャン

134 :名無し~3.EXE:2011/04/05(火) 17:59:30.38 ID:fuIR9JzL
>>131
マ社に入社してソースを変更しろ
他の文字に変えて全体括って戻す
環境変数で渡す
wmiでコマンドラインを取得する

135 :131:2011/04/05(火) 23:27:40.19 ID:bVidqRdy
回答ありがとう。またいろいろ調べて試してくる

136 :名無し~3.EXE:2011/04/16(土) 11:27:42.13 ID:MufQ4JVW
ダイアログを表示させずにファイルをごみ箱へ移動するスクリプトがw2kで正常に動きません(XPだと動く)
エクスプローラでこのスクリプトにファイルをD&Dすると、ファイルの移動先が"C:\Documents and Settings\ユーザー"へ
他のファイラ(X-Finder)だと、そのファイラの実行ファイルの有るフォルダに移動します
2000で動かす方法は無いですか

var fso=new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
var Shell=new ActiveXObject('Shell.Application');
var Folder=Shell.NameSpace(fso.GetAbsolutePathName(fso.GetParentFolderName(args(0))));
var FolderItem=Folder.Items().Item(fso.GetFileName(args(0)));
Shell.NameSpace(10).MoveHere(FolderItem);


137 : 忍法帖【Lv=15,xxxPT】 :2011/04/16(土) 15:09:10.47 ID:i6zoZumo
ゴミ箱のプロパティに、確認しないようにするチェック欄あるけど、2000だとそれないの?

138 :名無し~3.EXE:2011/04/16(土) 19:39:45.68 ID:0UUwM/iL
Shell.NameSpace("::{645FF040-5081-101B-9F08-00AA002F954E}")

139 :136:2011/04/16(土) 22:37:16.64 ID:MufQ4JVW
>>137
チェック欄を変更してみたけれど効果有りません

>>138
書き換えてみたけれど変化ありませんでした

var Shell=new ActiveXObject('Shell.Application');
WScript.echo(Shell.NameSpace("::{645FF040-5081-101B-9F08-00AA002F954E}"));
WScript.echo(Shell.NameSpace(0xa));
WScript.echo(Shell.NameSpace(10));

三つとも「ごみ箱」と出るけど、移動先が>>136になります

140 :名無し~3.EXE:2011/04/16(土) 23:14:45.38 ID:CtNIy87X
カレントディレクトリ変えるとか

141 :名無し~3.EXE:2011/04/16(土) 23:21:20.32 ID:0UUwM/iL
非同期だから待ち合わせしないとあかんみたいよ

参考ソース
ttp://www.vector.co.jp/soft/winnt/util/se427319.html

142 :136:2011/04/17(日) 00:02:04.93 ID:uhTjQ+VV
>>141
136はvector(Remove.CMD)のソースをテスト用に改変したものです。Remove.CMDも2000では動きません
非同期回避のループ文が有るとファイルが本来と違う場所に移動した後でエラーを吐きます

またD&D操作でなく、スクリプト内で削除するファイルを決め打ちにするとファイルは移動もしなくなります
2000のwshバージョンを5.7に上げても効果ありませんでした

143 :名無し~3.EXE:2011/04/17(日) 00:35:04.26 ID:4japXLT8
copyhereは?

144 :名無し~3.EXE:2011/04/17(日) 01:54:12.61 ID:4japXLT8
ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list39.shtml

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 06月 22日 22時 45分 04秒
に既出やね

145 :名無し~3.EXE:2011/04/17(日) 09:13:00.95 ID:hP33oYWG
Shell Automation Service は
shell32.dll に実装されているけど
単にこれが古いというオチじゃないかな
まあW2K版shell32.dllのバグという見方もできるが。
強引にAPIのSHFileOperationでも使う?w

146 :名無し~3.EXE:2011/04/17(日) 09:19:07.96 ID:hP33oYWG
そうそう、久しぶりにMiTeC覗いたら
OLEViewerのバージョンが上がってたよ
といってもiviewers.dllは提供されていないから
基本的な性能は変わっていないんだけどw

他にも色々と有用なツールがあるから
興味がある人は覗いてみては?

http://www.mitec.cz/

147 :名無し~3.EXE:2011/04/23(土) 02:18:54.08 ID:4NAn1xc8
WSHでUSBポートの監視、制御ってできますか?
できるのであればAPIの宣言方法を教えて下さい

148 :名無し~3.EXE:2011/04/23(土) 08:31:31.29 ID:i7wvdnoN
覚えた当時文字列処理系の関数が多かったからvbsにしたんだけど
世間じゃjsが流行ってんな〜

IEのjsエンジン高速化されまくってるみたいだけど
wshでもjsのが高速だったりするの?

149 :名無し~3.EXE:2011/04/23(土) 09:26:59.69 ID:PDrnfeB9
>147
接続や切断ってことかい?
とりあえずRegisterDeviceNotification あたりから調べてみ。
ただ頭からケツまでAPIでゴリ押しする気なら
言語の選択を考え直したほうがいい。
C++とかで書く以上に面倒になると思うぜ。

150 :名無し~3.EXE:2011/04/23(土) 10:34:29.25 ID:+bpxYnWG
>>148
JSは慣れりゃVB以上に色々出来るからなあ

151 :名無し~3.EXE:2011/04/23(土) 10:58:21.98 ID:PDrnfeB9
>148
オレは関数型言語がキライという理由かな
だからphpも好きじゃない
あくまで書き方に限った話だがw

152 :名無し~3.EXE:2011/04/23(土) 11:36:59.05 ID:4NAn1xc8
>>149
thx
やりたい事が漠然としてるんでWSHでどこまでできるのか知りたかったんだ
無論Cも考えてる。ありがとうさぎ

153 :名無し~3.EXE:2011/04/23(土) 13:22:59.86 ID:+bpxYnWG
>>151
phpのどこが関数型言語の書き方なんだ…

154 :名無し~3.EXE:2011/04/24(日) 07:05:08.61 ID:dtEm5GAz
web の cache の property を知りたくて調べて行くうちに
ADSI というのにたどりついたんですが、
この方向は、正しいのでしょうか?
何か、2000のころの技術だったりするみたいですが、
これで作ってXPやVista、Win7で動くものが出来上がるのでしょうか?

155 :154:2011/04/24(日) 17:22:51.00 ID:dtEm5GAz
すいません。 >>2 も読まずに書き込んでしまいました。
調べていたら、どうも違っているような気がするし、
もう少し調べて出直してきます。

156 :名無し~3.EXE:2011/05/06(金) 18:17:10.29 ID:nbD2ZVvS
何か原始的なスクリプトですいませんが、これは Vista や Win7 で動くものなのでしょうか?
XP や 2000 上では試したつもりです。

Option Explicit
const Win2k="5.0",WinXP="5.1",WinVista="6.0",Win7="6.1"
dim ver: ver=get_os_version()
if ver=Win2k then
msgbox "Windows 2000"
elseif ver=WinXP then
msgbox "XP"
elseif ver=WinVista then
msgbox "Vista"
elseif ver=Win7 then
msgbox "Windows7"
end if
続く

157 :名無し~3.EXE:2011/05/06(金) 18:17:39.53 ID:nbD2ZVvS
続き
function get_os_version()
Dim wshell: Set wshell = CreateObject("WScript.Shell")
dim objExec: Set objExec = wshell.Exec("%comspec% /c ver")
dim str: str = objExec.StdOut.ReadAll
str=right(str,len(str)-6)
Dim regEx: Set regEx = New RegExp
regEx.IgnoreCase = True: regEx.Global = False: regEx.Pattern = ".*Version *"
str = regEx.Replace(str,""): str = left(str,3)
get_os_version = str
end function


158 :名無し~3.EXE:2011/05/08(日) 17:07:59.03 ID:Dob9Sr1E
64bitOSを想定しないのならそれでオケ。64bitかサーバーOSを想定するのならダメ。
WMIのWin32_OperatingSystemクラスを使うべきじゃないか?

159 :名無し~3.EXE:2011/05/08(日) 19:26:32.97 ID:tRFPSx9t
>>158
使い方調べるの面倒なら単純にシステムのプロパティ-全般タブ見るという手もあるね

160 :名無し~3.EXE:2011/05/08(日) 21:55:17.51 ID:rPyeiUAT
>>158
64bit だと。今想定している本体が、動かないだろうから。
それ以外でOKだったら大丈夫です。特殊なサーバーOSで動かす人もいないだろうし
これでOKということですね。ありがとうございました。
>>159 さんの言っていることは、私のスキルでは理解できませんが、情報ありがとうございます

161 :名無し~3.EXE:2011/05/11(水) 18:58:17.23 ID:WU/TO40v
画面の右下に出るリマインダーをWSHで実装できないですか?
流石にVBSからのAPIでは対応してないですかね

162 :名無し~3.EXE:2011/05/12(木) 00:58:45.25 ID:cqVKMmVu
APIってのがWin32APIではなく
COMなども含めた総合的なAPIのことなら
VBSからAPI(COM)使って実現できるよ

163 :名無し~3.EXE:2011/05/12(木) 08:09:01.23 ID:Tc/SDtQ0
>>162
成る程ー
WinAPIでは無理がありますか
ありがとうございましたー

164 :名無し~3.EXE:2011/05/25(水) 19:43:11.61 ID:45W+js0P
ラジオボタンで選択できるインターフェースをできればvbsから関数的に呼び出して使用したい。なんかいい方法はないですか?
元々のvbsのソースが膨大なのでHTA化は避けたいです

165 :名無し~3.EXE:2011/05/25(水) 20:04:38.42 ID:Q0zeNMv6
ScriptFormとかのGUI作れるCOM使うとか
外部にラジオボタン選択インターフェイスだけのHTA作ってVBSから呼ぶとか

ScriptFormはだいぶ前に公式は死んでたけど、他の所から落とせたから
今でも探せばどっかにあるんじゃないかな?

166 :名無し~3.EXE:2011/05/25(水) 22:24:06.22 ID:nzVZlxBu
hta で vbs だけは使うまい、ておもたわ。

167 :名無し~3.EXE:2011/05/26(木) 00:25:27.39 ID:TXX3L4YD
HTAを呼び出して選択した結果を受け取るのってどうやるの?
なんか参考になるサイトとかあったら教えていただけませんでしょうか

168 :名無し~3.EXE:2011/05/26(木) 01:39:18.55 ID:T9mvRx0z
そこまでするならpowershell使うわ

169 :名無し~3.EXE:2011/05/26(木) 19:24:49.18 ID:5BJmGOz1
ドライブに挿入された音楽CDの
CDシリアル番号を取得することってできる?

cdaファイルをパースするのはナシの方向で。
というのもCDがマルチセッションだと
cdaファイルにパス名でアクセス出来ないので。

170 :169:2011/05/27(金) 21:25:55.55 ID:jtI0zCu/
難しく考えすぎてたorz

171 :名無し~3.EXE:2011/05/29(日) 16:53:43.65 ID:xcYhyO0n
>>167
お手軽なのは、連絡用ファイルを設定して、HTA側から結果をカキコ。
WSH側は.Sleep → Loop 辺りでテキト〜に待ち合わせ。

神ブログ:ttp://scripting.cocolog-nifty.com/blog/2007/07/hta_2d73.html
をパクって、CreateHTAObject()を作ってみたこともあったが、
アイ〜ン立ち上げて、またHTA≒アイ〜ン立ち上げるのは、やっぱ速度でほんのり難が^^

172 :名無し~3.EXE:2011/05/29(日) 18:05:14.02 ID:VMqRtOtk
>>171
mshtaをwscript.shellのexecで起こしてhtaから標準出力に書き出してやれば?
そこにGetStandardStreamのサンプルがあるから探してみ

173 :名無し~3.EXE:2011/05/29(日) 18:25:31.32 ID:xcYhyO0n
>>172
WshShell.Execで窓を表示しない方法も、神ブログに書いてるけど、
お手軽方法で、別に不満なかったから、自分はあまり追求しなかったな。
HTAをオブジェとして使う事が重要なら、ぜひ追求してみるべきだろうね。

174 :名無し~3.EXE:2011/05/29(日) 18:50:47.38 ID:VMqRtOtk
>>173

mshtaはコンソールアプリでないからコンソールは出ないが?

175 :名無し~3.EXE:2011/05/29(日) 20:41:59.51 ID:Ri5jBDVX
>>174
あ゙〜、完全にわし間違ってた。173は撤回する。

176 :名無し~3.EXE:2011/05/29(日) 23:52:39.96 ID:8twY3zm1
こういうのじゃダメ?俺の勘違いか?
http://yozda.exblog.jp/9679436/
http://yozda.exblog.jp/12246492/
JScriptでも同様のがあるけど。

177 :名無し~3.EXE:2011/05/30(月) 01:44:11.04 ID:JGc46t5+
勘違いというか、HTA化を避けたいと言ってる奴に
IE使えってのはあり得ない話だと思うのだが

178 :名無し~3.EXE:2011/05/30(月) 02:19:12.01 ID:dEax9gcE
そうかvbs(wsh)からIEコンポも使っちゃいけないのか。
それはスマン。
俺はただvbsをhtaに全面書き換えるのがイヤなだけだと思ってた。

179 :名無し~3.EXE:2011/05/30(月) 08:18:11.77 ID:JGc46t5+
vbsをhtaにするのに、全面書き換えなんて必要ないよ
前後をタグで囲んで拡張子変えるだけで、vbs部分の書き換えなんてしなくて良い

180 :名無し~3.EXE:2011/05/30(月) 15:43:23.73 ID:hwhJdEtq
あほは放置で

181 :167:2011/05/30(月) 22:59:05.05 ID:GG049trQ
>>171-179
皆様ありがとうございます。もう見放されたかと思ってましたw
HTAから標準出力を使いたかったのですが自力ではできなかったので、vb.netで挑戦しようかと考えていました。
これからレスと参考リンクを読んでいろいろやってみます。

182 :名無し~3.EXE:2011/05/31(火) 16:40:25.93 ID:K7148uoi
ぐぐってたら、javascriptとQTを使えるスクリプトエンジンが出てたよ。Qtjsって奴。WinでもLinuxでもMacでも動くそうだ。
ttp://www.vector.co.jp/vpack/browse/person/an054784.html ttp://qt.loftz.net/
XPで試したら素直に動いたわ。日本語使うならUTF-8で保存。
Titaniumもあるし、Htaboxcoreもあるし、javascriptの世界は広がりますね。
// sample.qtjs
var _window=QWidget();
_window.setWindowTitle("test window");
_window.setGeometry(100,100,220,100);

var _edit=QTextEdit(_window);
_edit.setGeometry(100,30,90,50);

var _b1=QPushButton("button 1",_window);
var _b2=QPushButton("button 2",_window);
_b1.move(10,30);
_b2.move(10,60);
_b1.connect("clicked",_edit,function(){@setText("button 111")});
_b2.connect("clicked",_edit,function(){@setText("button 222")});

var _label=QLabel("button text",_window);
_label.move(10,10);
_window.show();
sys.exec();

183 :名無し~3.EXE:2011/05/31(火) 18:58:03.11 ID:CXpwkTbm
>>182
QtはマルチプラットフォームだけどqtjsはMAC対応してないよ

jsの汎用性は凄いよねー

184 :名無し~3.EXE:2011/05/31(火) 22:27:42.25 ID:9cCA8ild
>>182
処理が比較的早く、簡単にGUIツールが作成できるのはいいが、
結局、クライアント(実行するPC)にもQtjs.exeがないとダメって事じゃん
これは微妙かも。あくまで自分のPCでGUI使ってなんかツール作りたい時は便利かもだけど、
オレオレツールって自分が理解してればいいからわざわざGUIにしなくてもって思うわ

あと、ショートカットリンクから実行しても動かない。
これじゃ使えないわ。cmdショートカットなら動くんだろうけど

[Window Title]
X:\Qtjs\qtjs_win_20110529_rev37_qt4_7_2_gcc\qtjs.exe

[Content]
X:\Qtjs\qtjs_win_20110529_rev37_qt4_7_2_gcc\qtjs.exe は有効な Win32 アプリケーションではありません。


185 :184:2011/05/31(火) 23:29:37.09 ID:9cCA8ild
悪い、変なエラーが出てて気になって再起動したら
Blue Screen Of DEATH食らった
Windows7はBlue Screen Of DEATHにならないって聞いてたけど
あれは嘘なんだなw
(まぁ青画面になっても死なないようにはなってるみたいだけど)

復旧せずに通常起動後に実行したら普通にショートカットからでも起動した

QtjsはC++利用だからマウス操作の自動化処理もJavaScriptで書けるって事なのかな?
何か従来のWSHより全然汎用的でビビったわ
慣れれば間違いなくWSHよりQtjsのがいいね

186 :名無し~3.EXE:2011/06/01(水) 01:29:18.93 ID:5Nq11jQ6
// <job id='qtjs'><resource id='qtjs'><![CDATA[;;;
// sample.wsf としてUTF-8で保存。これを起動すると、最初の起動はWSHで実行して、下のパスのQtjs.exeで再実行する形になる。関連付けしてなくても動く。
var label = QLabel("Hello, world!"+"\n\n"+"ポポポポ〜ん!");
label.show();
sys.exec();
//
// ]]></resource><script>
/* ここからはjscript。関連付け無しでも実行できるようにする処理。var pqtjsexeでQtjs.exeのパスを決め、そのexeでスクリプトを実行する。*/;
if(typeof(WScript)=='object'){
//var pqtjsexe="V:\\Script_Qtjs_Win\\Qtjs.exe";/ * パスを決めうちの場合 * /;
var oshl=new ActiveXObject("WScript.Shell");
var ofso=new ActiveXObject("Scripting.FileSystemObject");
var pdirscript = ofso.GetFile(WScript.ScriptFullname).ParentFolder;
var pqtjsexe=pdirscript + "\\Qtjs.exe";/ * 同じフォルダにqtjs.exeの環境がある場合 * /;
oshl.run("\""+pqtjsexe+"\""+ " " + "\""+ WScript.ScriptFullName+"\"",1,false);
};
//</script></job>

187 :名無し~3.EXE:2011/06/01(水) 01:41:57.48 ID:5Nq11jQ6
上の奴は、拡張子Qtjsを関連付けしてる場合は、ファイル名の拡張子を.qtjsで保存すればそのまま動くよ。
スクリプトの最後のほうを変えればWSHから引数も引き継げると思う。
for(var arg=WScript.Arguments,iii=0,sadd='';iii<arg.length;iii++){sadd+=" " + "\""+ arg(iii)+"\"";};
oshl.run("\""+pqtjsexe+"\""+ " " + "\""+ WScript.ScriptFullName+"\""+" "+sadd,1,false);

188 :名無し~3.EXE:2011/06/01(水) 01:45:57.06 ID:5Nq11jQ6
>>183
ほんとだ。Macは対応してなかったw スマソ

189 :名無し~3.EXE:2011/06/01(水) 18:34:22.79 ID:unjL6vtH
>>187
拡張子設定すりゃいいだけか!thx
最近出だばっかみたいだけど、これからに期待だわ
いい加減スレチだけど、過疎気味だからいいかw
オレオレツールがGUIでサクッと作れて簡単なコーディングで色々出来るのがいい

190 :名無し~3.EXE:2011/06/02(木) 19:48:10.79 ID:CWksyqWH
ActiveXからCODのMessage使ってメール送信してるんですが
受信したメールを転送できなくさせるプロパティや別の方法ありませんか?
ご教示を…

191 :名無し~3.EXE:2011/06/02(木) 22:31:31.17 ID:CWjjGc48
もうちっと背景を晒せ
なぜメールを送りたいのか 相手は人間なのか
相手はどんなツールで転送するのか 相手が転送したら何がまずいのか

192 :190:2011/06/02(木) 22:58:43.37 ID:ls1CRCom
>>191
>なぜメールを送りたいのか
システム上で使用する為

>相手は人間なのか
受信者は人間

>相手はどんなツールで転送するのか
超マイナーなメーラ

>相手が転送したら何がまずいのか
セキュリティ上の問題
本文コピペすりゃ意味ないんだけどねw

簡単に概略を説明を付け足す
VB系言語で使用しており、現に正常に機能している。
VB内でActiveXのCODオブジェクトを使用し、Message関数でメールをSMPT送信している。
この部分に機能を追加すると言う意味です。
欲しい機能は、受信者がそのメールを転送できなくする事。

メール送信時にMessage関数のプロパティとかで付加できないかなぁと淡い期待をいだいている。
そもそもメールが転送できなくなる機能がメールプロトコルに存在した事すら今日知った。
メールのオプションで「重要」とか「受信者がメール開いたら送信者へ受信確認を行う」とかの設定あるでしょ?
あんな感じで「転送不可」にする設定があるらしい。
それをWSHやらのWindows Scriptでちょちょいとハックしてやりたい。

193 :190:2011/06/03(金) 21:55:17.68 ID:0Ff8pwrr
解決した
Message.Sensitivityでできる
ただSMTP送信ではムリだったので諦めてVBのSendで結局やる事になりそうだわ

194 :名無し~3.EXE:2011/06/03(金) 22:44:08.40 ID:71Rc4YUZ
Sensitivityって、ほとんどOutllookでしかサポートされてないのとちゃう?

195 :190:2011/06/04(土) 11:53:30.64 ID:tAuxhA3v
>>194
OL以外でもSensitivityが機能するメーラがあるんだな、これが
まぁ、普通はこんな機能使わないし本文コピペできるから意味ないけどw

196 :名無し~3.EXE:2011/06/08(水) 20:27:12.99 ID:u8KGLz+m
basp21のdllでメールの送受信するスクリプト書いてます。
sslの処理は、melonにお願いしてpop3で受信してます。
メールの受信でほかにもっと便利なActiveXのDLLはあるんでしょうか?

197 :名無し~3.EXE:2011/06/11(土) 18:57:59.05 ID:yFQjK4iS
いくらでもあるけど、何を以て便利と感じるかは人それぞれ

なので、いろいろ使って自分が一番便利だと思うのを使えば良い

198 :名無し~3.EXE:2011/06/11(土) 19:15:07.83 ID:JhcRxHh+
IE9を入れるとmshta.exeがバージョンアップし
sfcminiのCallBackが利かなくなるんだが
誰が解決策を見つけた人がいたら教えて。
何らかのセキュリティ制限に掛かっていると思うんだが。

199 :名無し~3.EXE:2011/06/11(土) 22:03:58.47 ID:gmA/rwoU
wsc

200 :名無し~3.EXE:2011/06/12(日) 08:19:26.03 ID:eLluRoVu
>199
UIはどうするの?

201 :名無し~3.EXE:2011/06/12(日) 19:59:49.52 ID:1i3ANs6d
>>198
まじすか

202 :名無し~3.EXE:2011/06/13(月) 16:37:29.33 ID:cAcxG153
まじかす

203 :名無し~3.EXE:2011/06/16(木) 20:57:56.10 ID:tYuDddzT
>>153
PHPでも関数使えるでしょ(´・ω・`)

204 :名無し~3.EXE:2011/06/16(木) 23:37:06.02 ID:vZlUxwoj
関数が使えるから関数型言語ってw
そんなアホなこと言う奴まだいたんだw

205 :名無し~3.EXE:2011/06/17(金) 01:21:06.67 ID:YDuK8eCy
>>204

206 :名無し~3.EXE:2011/07/05(火) 16:49:08.59 ID:Vww4Gcrx
JScriptを使い始めたんですが
関数の引数に使用できるオブジェクトの一覧みたいなのないですか?

ある関数Aでオブジェクト作って、それを引数にして別の関数Bに投げて、
戻り値をAでまた処理する〜みたいなことをやってるんですが
オブジェクトによって引数にできるものとできないものがあるみたいで…

試行錯誤してるうちに、ArrayオブジェクトとStringオブジェクトは使えるけど
FileSystemObject オブジェクトからGetFolderメソッドで取得したフォルダオブジェクトは使えない〜みたいな経験則は分かってきたんですが
時間がかかりすぎるんで一括で知りたいんです
でもういうドキュメントが見つからなくて……

ご存知でしたら教えくてください

207 :名無し~3.EXE:2011/07/05(火) 20:26:18.16 ID:JPwGM5pz
どんなオブジェクトでも関数の引数に使用できるが?
使えない〜って〜のがわからん

208 :名無し~3.EXE:2011/07/05(火) 20:50:55.33 ID:y3KcID81
Default Property のことだな。
そんなモン使うな。

209 :名無し~3.EXE:2011/07/05(火) 21:01:29.56 ID:JPwGM5pz
Default Propertyがあるとオブジェクトそのものが渡せんてこと?
ならDefault Propertyがあるオブジェクトの一覧がほしいってこと?

210 :206:2011/07/06(水) 12:23:31.80 ID:skFqsTsw
サーセン、なんか今日書き直してみたら普通にフォルダオブジェクトも渡せました
別の部分が間違ってたみたいです

>>208
使うとなんかマズイですか?

>>207,209
とりあえずどんなオブジェクトでも渡せるってことが分かれば十分です
ありがとうございました

211 :名無し~3.EXE:2011/08/03(水) 21:36:10.58 ID:ps1zRwLo
色々弄繰り回してたら、wshで出来ないことを探す方が難しいかもしれないと思い始めている自分がいる...


212 :名無し~3.EXE:2011/08/03(水) 22:08:50.93 ID:2N1IXc+j
wshでできることよりできないことのほうが多いが?

213 :名無し~3.EXE:2011/08/03(水) 22:35:57.40 ID:xtJBY1d+
バイナリ扱えないし

214 :名無し~3.EXE:2011/08/03(水) 23:30:51.81 ID:ps1zRwLo
>>213
何のためにバイナリを扱うの?
用途によっては、バイナリが扱えなくても、操作は出来たりするよ

215 :名無し~3.EXE:2011/08/04(木) 02:39:21.16 ID:5aLayNA2
バイナリくらい扱えないでwsh使ってるような顔するんじゃねーよ

216 :名無し~3.EXE:2011/08/04(木) 06:22:11.50 ID:boF8mYqi
ADO.Streamでバイナリ扱えるが

217 :名無し~3.EXE:2011/08/04(木) 06:43:49.56 ID:7pIgG5eb
どちらも正しい
WSHでは何も出来ない、バイナリも扱えない
出来るのはちょっとした計算と文字列操作、そしてそれをメッセージボックスやコンソールに表示する程度

でもWSHにはActiveXという強力なAPIがある
これを使えばほぼ何でも出来る
COMの自作が出来るようになれば、「出来ないことの方が多い」なんてことは無くなる
但し、COMの自作が出来る奴が、WSHに拘る必要は無いと思うけどね

218 :名無し~3.EXE:2011/08/04(木) 08:08:20.71 ID:yS1szih7
>>217
COM自作するんだったら最初からCだよな
COMも便利だけど

219 :名無し~3.EXE:2011/08/04(木) 08:31:53.61 ID:jHSdlNb+
ファイルを開く/保存ダイアログをXP限定じゃなく標準で使えるようにしてほしい

220 :名無し~3.EXE:2011/08/04(木) 09:37:20.28 ID:umshcNeO
>>217
別に自分でCOMを作らなくても、誰かが作ってるさ...とか思ったりして...
ある意味、非常に正しいオブジェクト指向だが...

221 :名無し~3.EXE:2011/08/04(木) 12:39:35.01 ID:Si2D01Eh
>>219
セキュリティ上、無理

222 :名無し~3.EXE:2011/08/04(木) 14:41:11.77 ID:QAGbLHD2
http://gallery.technet.microsoft.com/scriptcenter/5481e36a-8073-40ae-92cd-fbef1e6df99a/
>UserAccounts.CommonDialog オブジェクトは、セキュリティ上の問題から Windows Vista で廃止されました。

223 :名無し~3.EXE:2011/08/04(木) 17:48:38.95 ID:5aLayNA2
>>219
標準のPowerShellで使えるからWSHからRun/Execすれば使える
標準の.NETでdll作ればWSHで使える


224 :名無し~3.EXE:2011/08/04(木) 18:32:13.05 ID:5aLayNA2
officeが入ってればcommon dialog ocxが使えるんじゃなかった?

225 :名無し~3.EXE:2011/08/09(火) 10:28:34.52 ID:TjrYeXBk
Windows2000+WSH5.6で使える「ファイルを開く」ダイアログ
ttp://scripting.cocolog-nifty.com/blog/2007/02/windows2000wsh5_ee23.html

226 :名無し~3.EXE:2011/08/26(金) 09:24:51.23 ID:XPcNXwzs
t

227 :名無し~3.EXE:2011/08/26(金) 15:20:07.29 ID:LvLtNN8d
Shiftキー押してるかどうかで挙動を変えたいんだけどどうすればいいの?

228 :名無し~3.EXE:2011/08/26(金) 19:18:19.23 ID:HAom/pq3
>>227
Keycode
てかどっからのイベントなんだよ?
htmlなのかアイコン押下時からなのか

229 :名無し~3.EXE:2011/08/26(金) 20:12:32.27 ID:C1/Pylbq
htaとかのキーイベント内での判定なら
event.shiftKey
で取れると思うけど、
コンソールのプログラムでのやり方は分からない


230 :名無し~3.EXE:2011/08/26(金) 22:49:44.40 ID:hYZBT1ST
Windows7のタスクバーからワンクリックでごみ箱を削除するために以下
 Empty.CMD 1.05 (ごみ箱を空にするバッチファイルとVBScript)
 http://www.vector.co.jp/soft/win95/util/se313491.html
※bat版とvbs版それぞれに確認ダイアログの有無違いで2種の計4種、機能は同じ

を試してみたのですが、XP機では問題なく動作するものがWin7では動作しません
削除の確認は必要でbat窓は不要なためvbs版を使いたいのですが
Win7で正常に動作させるためには何か修正が必要なのでしょうか?
「wsh ごみ箱 空」等のキーワードで複数ggってみたのですが原因らしいものが掴めません
ggった中でYahoo知恵遅れでは上記ファイルがWin7で正常に動作したという書き込みも見たのですが
手元のXP機とWin7機の確認ではWin7機だけどうしても動作してくれません
XPと7でのWSH互換性などといった問題は特に無いようなのですが
手ほどきお願いします

231 :名無し~3.EXE:2011/08/26(金) 22:56:56.11 ID:hYZBT1ST
環境で書き忘れましたがXPも7も32bitです
そして書ききれなかった上記ファイルの「削除前に確認ダイアログを表示するvbs」のソースです

' EmptyF.VBS V1.05 (C) yoshioka.teruo@nifty.com 2007-12-14
' EmptyF.VBS empties RecylcleBin.
' Usage: EmptyF.VBS

Option Explicit
Const ssfBITBUCKET=10
Dim fso
Dim Shell
Dim Folder
Dim FolderItem
Dim sFolder

232 :名無し~3.EXE:2011/08/26(金) 22:57:52.01 ID:hYZBT1ST
Set fso=CreateObject("Scripting.FileSystemObject")
Set Shell=CreateObject("Shell.Application")
Set Folder=Shell.NameSpace(ssfBITBUCKET)
For Each FolderItem In Folder.Items()
If fso.FileExists(FolderItem.Path) Then
fso.DeleteFile FolderItem.Path,True
ElseIf fso.FolderExists(FolderItem.Path) Then
fso.DeleteFolder FolderItem.Path,True
End If
Next
If Folder.Items().Count=0 Then
Set sFolder=Shell.NameSpace(WScript.ScriptFullName & "\..")
Folder.MoveHere sFolder.Items().Item(WScript.ScriptName)
Do While Not sFolder.Items().Item(WScript.ScriptName) Is Nothing
WScript.Sleep 100
Loop
sFolder.MoveHere Folder.Items().Item(0)
End If

-----------
ここまで

233 :名無し~3.EXE:2011/08/27(土) 00:21:15.25 ID:yzI0rKlM
Set sFolder=Shell.NameSpace(WScript.ScriptFullName & "\..")
が駄目なんだろ
Set sFolder=Shell.NameSpace(fso.getparentfoldername(WScript.ScriptFullName))
にしろ

234 :名無し~3.EXE:2011/08/27(土) 00:26:04.52 ID:Gxo9AMAs
>>233
ありがとう!
Win7でもvbs実行で正常にごみ箱が空になりました

235 :名無し~3.EXE:2011/08/27(土) 00:31:50.43 ID:Gxo9AMAs
>>233
せっかく教えてもらったのに確認ダイアログが出るコードはこちらでした orz
-----------------------------------------------------------
Option Explicit
Dim Folder

Set Folder=CreateObject("Shell.Application").NameSpace(10)
If Folder.Items().Count=0 Then
WScript.Echo "ごみ箱は空です。"
Else
Folder.Self.InvokeVerb "ごみ箱を空にする(&B)"
End If
------------------------------------------------------------

申し訳ないですが↑のどこが悪いのか教えてください

236 :名無し~3.EXE:2011/08/27(土) 01:48:01.94 ID:2AZeqjI/
>>235
Windows 7 だと、InvokeVerb がうまく動かなくて、DoIt() を使うといいらしい
という情報があって、ちょっと試してみたんだけど、

-----------------------------------------------------------
Dim Folder
Set Folder=CreateObject("Shell.Application").NameSpace(10)
If Folder.Items().Count=0 Then
WScript.Echo "ごみ箱は空です。"
Else
Folder.Self.Verbs().Item(2).DoIt() '2は3番目のメニュー項目(ゴミ箱を空にする)を表す
End If
------------------------------------------------------------

VBScript的には正しいみたいで、Win7でも、インタプリタ上からは動くんだけど、
.vbsファイルにして、cscript/wscript経由で起動すると DoIt() が反応しない

セキュリティ設定とかの問題かもしれんが、これ以上調べられなかった

237 :名無し~3.EXE:2011/08/27(土) 02:26:41.74 ID:Gxo9AMAs
>>236
ありがとうございます
自身でもわからないながら色々ggってみてはいますが
Folder.Self.InvokeVerb "ごみ箱を空にする(&B)" をとりあえずWScript.Echo "入ってますが何か?"に置き換えて
ここまではOKで、削除でコケてるということまでは理解できました
言われるようにVista以降のUAC絡みの問題なのかもしれませんが
自身でももう少し調べてみます
もし他にわかる方いらっしゃいましたら宜しくお願いします

238 :名無し~3.EXE:2011/08/27(土) 04:09:37.51 ID:yzI0rKlM
doitに変えて
最後に
msgbox "waiting"
と入れれ



239 :名無し~3.EXE:2011/08/27(土) 04:16:54.04 ID:yzI0rKlM
invokeverb "empty"
に変えてもいいが、待つのは必要だな

240 :名無し~3.EXE:2011/08/27(土) 12:35:55.97 ID:Gxo9AMAs
>>238-239
変えてみましたが動きませんでした
削除されずに"waithing"が表示されるだけです
>>238のは>>236
Folder.Self.Verbs().Item(2).DoIt()

Folder.Self.Verbs().Item(2).DoIt
で合ってますよね?

241 :236:2011/08/27(土) 13:47:03.43 ID:2AZeqjI/
>>238
非同期の問題だったとは気がつかなかった

いくつかパターンを試してみたけど、以下だと同期で処理されるみたい(Win7 x64 SP1で確認)
同期と非同期の基準が分からん

---------------------------
Dim items
Set items = CreateObject("Shell.Application").NameSpace(10).Items()
If items.Count > 0 Then
For Each verb in items.Verbs
If verb.Name = "削除(&D)" Then
verb.Doit()
End If
Next
End If
---------------------------


242 :名無し~3.EXE:2011/08/27(土) 14:19:33.04 ID:Gxo9AMAs
ありがとうございます
Win7 x86 SP1での動作もばっちりokでした!
>>236>>238のお二方に心から感謝します
おかげさまでexe化してタスクバーピン化することもできて快適になりました

243 :名無し~3.EXE:2011/08/27(土) 20:28:52.69 ID:ptTGLG6K
"削除(&D)" て"ゴミ箱を空にする" と違うけどええの?

244 :名無し~3.EXE:2011/08/27(土) 20:59:32.17 ID:Bo3iCK5G
>>243
参照してるオブジェクトが違う
>>241のはゴミ箱に対するコマンドじゃなくて、ゴミ箱の中のファイル群に対するコマンドなので、
「ゴミ箱を空にする」はない


245 :名無し~3.EXE:2011/08/27(土) 21:04:34.76 ID:ptTGLG6K
そいいう手があったんね

246 :名無し~3.EXE:2011/08/27(土) 21:05:58.03 ID:rMZXHF9P
根拠は説明できかねますが
Win7だと何故かスクリプトからコンテキストメニューの「ごみ箱を空にする(B)」を叩くことができない
そこで>>241さんの手法だと
ごみ箱内のファイルをループで全選択した状態でのコンテキストメニューの「削除(D)」を叩いて空にする
といったやり方をされているようなので間違いではないはずです

できれば>>241さんに直接説明いただけると参考になるのですが

247 :名無し~3.EXE:2011/08/27(土) 21:07:31.53 ID:rMZXHF9P
書いてる間に>>244さんがわかりやすく説明してくれていました
すみません、、、、

248 :名無し~3.EXE:2011/08/27(土) 21:10:18.99 ID:ptTGLG6K
なら

Dim items
Set items = CreateObject("Shell.Application").NameSpace(10).Items()
If items.Count > 0 Then
items.invokeverbex "delete"
End If

でもいいな

249 :名無し~3.EXE:2011/08/27(土) 22:49:41.89 ID:41W0E71M
>>248
うまく動作しました

ところで、パラメタ "empty" や "delete" は、どこを調べれば情報があるのでしょうか
キーワードで検索してもそれらしいものを見つけられないので


250 :名無し~3.EXE:2011/08/27(土) 23:49:46.71 ID:ptTGLG6K
たぶん、dllの中を探せばあると思う

251 :名無し~3.EXE:2011/08/28(日) 00:03:46.43 ID:rMZXHF9P
>>248
これも問題なく動作しました(Win7 SP1 x86)
仮にごみ箱内に1000とか大量のファイルが存在した場合
>>241さんのようにループ回すやり方と比べて単純に"delete"とするほうが
コストはかなり低いものでしょうか?

252 :名無し~3.EXE:2011/08/28(日) 01:37:04.39 ID:F83k7zR/
>>250
回答ありがとう
さすがにdllの中では私には難しそうですが

>>251
>>241のループはメニュー文字列からコンテキストメニューのインデックスを計算してるだけで、シェルに対する削除指示は1アクションのみ
ファイル毎にループして削除してるわけではない
なので、実行コストはどちらも変わらないと思う

ソース記述に関しては "delete" の方がスマートかな、とは思うけど


253 :名無し~3.EXE:2011/08/28(日) 01:54:42.96 ID:eQoxoyne
>>252
丁寧な解説ありがとう
つまりコンテキストメニュー内をループで"削除(D)"のインデックスを探すわけですね
変数Itemsはごみ箱内のオブジェクト数をカウントするためのものと勘違いしてました
とても勉強になりました

254 :名無し~3.EXE:2011/09/25(日) 19:39:06.42 ID:MDcIqEtA
BSAP21使用のクリックすればメールを飛ばす.jsスクリプトファイルがあるのですが、
Windows7の64bitで動作させるとbasp21のオブジェクトが作成できないと出ます
クリックして動作するようになるにはどうればいいでしょうか
おたすけお願いします

環境変数に以下の二行を追加しましたが、クリックしても同エラーが出ました
cscript c:\windows\SysWOW64\cscript.exe
wscript c:\windows\SysWOW64\wscript.exe

255 :名無し~3.EXE:2011/09/25(日) 20:13:28.39 ID:wOWFeO1g
>環境変数に以下の二行を追加しましたが、
この場合、環境変数が何の関係がある?
関連付けを変えろボケ

256 :名無し~3.EXE:2011/09/25(日) 21:11:57.26 ID:MDcIqEtA
ありがとうございます
関連付けをどうすればいいか詳しく教えてください
BASP21を利用していないwshスクリプト(.jsファイル)はダブルクリックしただけで動きます
もちとんBASP21はインストール済みです

環境変数を変えたのは以下サイトを見て
32bit版のCscript.exe / WScript.exeを利用していないからだと思ったからです
http://blog.goo.ne.jp/cestaff/e/9a080184a3e6008e54e49e958e87503d

257 :名無し~3.EXE:2011/09/25(日) 22:11:30.83 ID:mHEOumJu
>256
メールを送るだけならCDO.Messageでいいはずだぜ
他にもたとえば圧縮するならコマンドラインの7zipっていう手もあるはず

その用途だけのために関連づけを変えるのは
ちょっと他のスクリプトにも影響が出そうで怖いな

258 :名無し~3.EXE:2011/09/25(日) 22:59:17.89 ID:wOWFeO1g
HKEY_CLASSESROOT\jsfile\shell\open\command

それだけならショートカット作れば?

259 :名無し~3.EXE:2011/09/26(月) 00:25:36.97 ID:CKbYoUCB
WSHスクリプトを64/32bitが違っていたら起動し直す。
http://scripting.cocolog-nifty.com/blog/2011/02/wsh6432bit-b32d.html

260 :254:2011/09/26(月) 22:39:54.33 ID:ne+0rpvW
いろいろアドバイスありがとうございます
デスクトップに置いていた.jsスクリプトファイルのショートカットをクリックしたときに
上記オブジェクトが作成できないのエラーが出ていたのですが、
.jsファイル本体をクリックした場合はエラーが出ませんでした
理由は分からないですが解決はできました。ありがとうございました。

261 :名無し~3.EXE:2011/09/28(水) 20:08:19.82 ID:JsWr2nBy
結局64/32bitは無関係?

262 :名無し~3.EXE:2011/09/29(木) 03:51:42.39 ID:+/G6sFao
dosのバッチより利点は?

263 :名無し~3.EXE:2011/09/29(木) 04:21:47.02 ID:SjfKo8B0
dosのバッチでないこと

264 :名無し~3.EXE:2011/09/29(木) 20:07:56.49 ID:PUuNldfV
>>262
forなど制御文は充実してる
(というかバッチにはほとんどない)

265 :名無し~3.EXE:2011/09/29(木) 20:15:14.33 ID:Ft7GX4v2
バッチよりははるかにまともな構文とライブラリ
特に文字列処理、日付処理が充実している
COMが使える

ただWSHはシェルスクリプト特有の省文字表記が少ないからちょっと面倒だ
その意味でバッチの直系はPowerShellだな

266 :名無し~3.EXE:2011/10/05(水) 00:46:47.20 ID:dNokulIT
msgboxをだしてok押されるまで
beep音でも間欠音鳴らすには
どう書けばいいのでしょうか?

267 :名無し~3.EXE:2011/10/05(水) 01:12:36.60 ID:VhrEzm6o
WSHは便利だけど時間のかかる作業やらせた時にどの辺まで
進んでるかっていうのが見られないのがな…

その点バッチは全部出るからバグ取りもやりやすい。

268 :名無し~3.EXE:2011/10/05(水) 02:10:38.59 ID:pRvu6KFp
>>266
別プロセスでbeepしてMsgBox解ければプロセス終了
>>267
cscript使えばええだけだろぼけ

269 :名無し~3.EXE:2011/10/05(水) 12:35:17.08 ID:VhrEzm6o
>>268
cscript使ったって一々echoしなきゃ何も出ないだろ。

元々全部出るバッチと比べるのは間違ってる。

270 :名無し~3.EXE:2011/10/05(水) 12:42:32.02 ID:gkeR/6Og
最近メッセージ表示は
nircmd trayballoonか
%log%ファイルに書きこんで別窓にtail -f %log%
してそっちに表示させるようにしてるな。

ちょっとした進捗はバッチだとtitleで表示させると見やすくかつ邪魔にならない。

271 :名無し~3.EXE:2011/10/05(水) 15:20:29.09 ID:LjSl6eYH
>>266
かなり強引でお粗末だけど

Set objShell=CreateObject("Wscript.Shell")

Do While True
objShell.Run "cmd /c @echo " & chr(7), 0, true
If objShell.Popup("やらないか?",3,"確認") = 1 Then Exit Do ' 引数2で間欠時間調整/秒
loop

272 :名無し~3.EXE:2011/10/05(水) 16:30:17.85 ID:pRvu6KFp
createobject htmlfile
<sound src=hoge.wav>
みたいな

273 :名無し~3.EXE:2011/10/06(木) 02:09:00.06 ID:+bYLm4WF
>>269
だよね

取捨選択の余地も無く、表示内容の自由度もなく
他人(MS)が決めた表示形式で、不要なものまで全部出るバッチなんかより
任意のもののみ自由な形で表示できるcscriptの方が余程優れてるよね

まあバッチもecho offして任意のもののみechoすれば同じだし
俺は何もかも表示されるのはウザいから、大抵そうしてるけどな

プログラムに置いて、何処かに表示したい内容が有れば表示させる処理を書くなんてのは
当たり前のことで別に煩わしくも無いし

274 :名無し~3.EXE:2011/10/06(木) 12:41:20.91 ID:2Fx0Iqck
いや、逆なんだが…

全部出したい時にWSHじゃ困るって話。

なんかバグ抱えてる時はいちいちechoさせて調べるより
ハラワタ全部さらけ出すバッチの方がわかりやすい時がある。

WSHも良く使うけどね。バッチの方が良いと思う場面もたまにあるってだけさ。

275 :名無し~3.EXE:2011/10/06(木) 12:48:49.57 ID:BXZ/lA8o
batは想定外の命令文に展開されちゃうことがあるけどwshはいらないだろ〜

276 :名無し~3.EXE:2011/10/06(木) 17:52:01.83 ID:NNKGlArA
くだらん

277 :名無し~3.EXE:2011/10/06(木) 19:41:29.32 ID:/2WMJRNk
sfcminiって7の64bitでも動く?
なんか特殊なことしないとダメとかある?

278 :名無し~3.EXE:2011/10/06(木) 21:37:18.56 ID:+bYLm4WF
>>274
なんかバグ抱えてる時は、普通に実行して単に表示するだけではなく
スクリプトデバッガで実行して、ブレイクポイントやウォッチ式を使うわけだが、、、

279 :名無し~3.EXE:2011/10/07(金) 00:32:16.52 ID:gKBmiUzh
>>278
スクリプトデバッガについてkwsk
まさかコレのこと? (今どこからダウンロードできるんだ?)
http://monjyu.biz/monjyu/bord/wsh1/msg/107.html

280 :名無し~3.EXE:2011/10/07(金) 00:57:29.83 ID:4808XmJb
>>279
http://www.google.co.jp/search?q=Windows+Script+Debugger

281 :名無し~3.EXE:2011/10/07(金) 02:33:25.02 ID:gKBmiUzh
>>280
tonks
って結局10年前のプロダクトだしなー。もう WSH は見捨てられたのか?

282 :名無し~3.EXE:2011/10/07(金) 18:56:55.85 ID:VbuBh+Zz
obsoleteだな

283 :名無し~3.EXE:2011/10/08(土) 11:55:17.92 ID:AZqaPYDW
WinXPだって10年前のものだよな
未だに超現役だけど

284 :名無し~3.EXE:2011/10/08(土) 18:48:39.09 ID:Ql472fAY
現役を超えると退役だろ

285 :名無し~3.EXE:2011/10/08(土) 23:20:26.63 ID:x/W81UVV
>>271
Popupの文字を引数で複数行書くにはどうすれば・・

286 :名無し~3.EXE:2011/10/09(日) 00:07:46.78 ID:5XjDZK8i
"a" & vbcrlf & "b"

287 :名無し~3.EXE:2011/10/13(木) 20:50:31.82 ID:Ty+nw4tp
>>285
'1行目' + \r\n + '2行目'

288 :名無し~3.EXE:2011/10/13(木) 21:44:53.18 ID:FaXjE+LJ
aaahoga

289 :名無し~3.EXE:2011/10/13(木) 21:56:41.61 ID:Th80tkLY
popup([
'hoge',
'hoge',
'hoge'
].join('\n'))

290 :名無し~3.EXE:2011/10/14(金) 08:35:13.18 ID:TGYZKvNx
>>289
斬新で異端だが俺は評価する

291 :名無し~3.EXE:2011/10/14(金) 20:19:58.86 ID:McHE53oa
定番だけど?

292 :名無し~3.EXE:2011/10/14(金) 21:26:33.25 ID:QJV1RGnu
定番だよね
俺はVBSだからJoin(Array(,,,),vbLf)だけど、やってることは全く同じだし

293 :名無し~3.EXE:2011/10/15(土) 02:13:39.38 ID:nNRFiouT
>>286のほうが異端だな 性能的に

294 :名無し~3.EXE:2011/10/15(土) 04:20:43.43 ID:TjatCbGb
性能的に問題が出るときは.NETのStringBuilderを使うのもいいかもね
Set sb=CreateObject("System.Text.StringBuilder")
sb.Append_3 "hoge" & vbCrLf
sb.Append_3 "hoge" & vbCrLf
MsgBox sb.ToString()

295 :名無し~3.EXE:2011/10/15(土) 05:53:27.91 ID:dyoDLIIr
負けず嫌いが多いな

296 :名無し~3.EXE:2011/10/15(土) 08:34:01.93 ID:RKuV4VZ6
負けって・・・勝ち負けだったの?
というか、誰が何と勝負してるの?

297 :名無し~3.EXE:2011/10/15(土) 15:03:40.45 ID:nNRFiouT
>>295
負け嫌いが多いな が正しいな


298 :名無し~3.EXE:2011/10/15(土) 15:22:57.34 ID:FcLWV6Nd
wshって.netのクラスまで呼び出せるのかよ
すげぇ〜

299 :名無し~3.EXE:2011/10/15(土) 15:46:59.12 ID:nNRFiouT
COMのクラスを提供してるものだけだろ
すごかねえ

300 :名無し~3.EXE:2011/10/16(日) 10:25:51.52 ID:EibUK6Vk
何でwmiスレなくなってしまったん?
スクリーン輝度変更するスクリプトくれくれトンカツ

301 :名無し~3.EXE:2011/10/16(日) 13:36:45.24 ID:kG4wA+4k
http://msdn.microsoft.com/en-us/library/aa394549(v=VS.85).aspx

302 :名無し~3.EXE:2011/10/17(月) 08:30:42.84 ID:fKcqiK2Z
>>301
トントン

303 :名無し~3.EXE:2011/10/22(土) 21:15:14.53 ID:pAk7XCDQ
javascriptからきて、WHSにたどりついた自分はJscriptで勉強中なんだけど、
参考資料少なすぎ。なんで、こんなにJscriptしいたげられてるんでしょ。
javascriptを中心にアドビ系のスクリプトもこなせるし、WSHでこまごまとした
雑務もこなせて、おまけにホームページもこなせる。いいと思うんだけどなあ。
ま、ちょっとした便利な部分だけVBScriptで書いて、残りはJscriptで書くとか
抜け道はいろいろあるんだけど。

304 :名無し~3.EXE:2011/10/22(土) 21:39:32.30 ID:YVgfBuVq
javascriptで書けばいいんじゃね

305 :名無し~3.EXE:2011/10/23(日) 03:24:55.19 ID:5OnGmYpi
>>303
MSから説明書をダウンロードしろよ。Jscript,VBscript,WSHの解説は日本語だから大丈夫だよ。
scd56jp.exe

306 :名無し~3.EXE:2011/10/23(日) 15:29:49.81 ID:FdJcwIUR
わざわざ古いのダウンロードせんでも、新しいのがネットで見れるだろ

307 :名無し~3.EXE:2011/10/23(日) 17:46:07.37 ID:dWRveOmB
わざわざレスポンスの遅いネットで見ずとも、ローカルのchmでスムーズに見れるだろ

ネットがいくら速くなっても、こういうのに必要なのは速さより早さだし
速さでもメモリ上に読み込まれたchmの読み出し速度と比べたら、光回線ですら千〜万倍遅いし
いくらネットの方が新しいって言ったって、WSHに限れば99.9%以上変化無しだし

308 :名無し~3.EXE:2011/10/23(日) 18:51:07.66 ID:7jE02IgD
scd56jp.exeの5.6はほぼWSH最終バージョンだしね

309 :名無し~3.EXE:2011/10/24(月) 16:41:55.48 ID:RmOMuIOm
なんか載ってない記事があったけど忘れた

310 :名無し~3.EXE:2011/11/02(水) 00:16:59.87 ID:yCP1kMg5
>>277
c:\windows\syswow64\wscript.exe
で動かすのぢゃ

311 :名無し~3.EXE:2011/11/02(水) 18:40:54.37 ID:hqgrRrtl
関連付けを変えるのか?

312 :名無し~3.EXE:2011/11/02(水) 21:38:39.62 ID:yCP1kMg5
そこは好きにしたらいいんじゃない?
俺はスクリプト先頭で WScript.FullName をチェックして
c:\windows\syswow64\wscript.exe じゃなかったら,Run で
起動しなおしてるけど

313 :名無し~3.EXE:2011/11/04(金) 10:55:10.52 ID:tDqmD/cU
WSHスクリプトを64/32bitが違っていたら起動し直す。
ttp://scripting.cocolog-nifty.com/blog/2011/02/wsh6432bit-b32d.html

314 :名無し~3.EXE:2011/11/16(水) 17:57:01.26 ID:3+bIFKJZ
JScriptでファイルの更新日時の比較をしたくて調べてたんですが
http://msdn.microsoft.com/ja-jp/library/ee722142.aspx

>>ミリ秒ベースの日付比較は、いずれかの Date オブジェクトに
>>午前 0 時以外の時刻が格納されている場合には正しく機能しません。

とありました。ただ実際にスクリプトを組んで動かしてみて
同日のファイル同士やコピーしたファイル同士など色々試してみたんですが
特に不具合は起きませんでした。

上のページにも、「正しく機能しません」とあるだけで具体的な説明がなくて・・・
どういう場合に正しく機能しないのでしょうか?

315 :名無し~3.EXE:2011/11/16(水) 18:17:44.31 ID:6E+WOUs3
同じ日の異なる時間で等しいとなるのか?

316 :名無し~3.EXE:2011/11/16(水) 20:41:14.89 ID:wNGKk1F/
>>314
多分単純に
var date1 : Date = new Date('11/16/2011 00:00:00');
var date2 : Date = new Date('11/16/2011 12:00:00');
date1.getTime() == date2.getTime();  // false
ってことだと思う。

getTime()は日付比較ではなくて日時比較ですよ、と言いたいのではないかと。

317 :名無し~3.EXE:2011/11/16(水) 20:41:34.70 ID:2KwtPpsL
>>314
Dateオブジェクトは日付+時刻を扱うので、
2つのDateオブジェクトで 「(時刻を除いた)日付のみの比較」 を行いたい場合、
比較対象の両者の時刻を 0 にしておく必要がある
というだけでは?

不具合の説明ではなく、プログラミングの初心者に対する単なるアドバイスとしての説明に思える

318 :名無し~3.EXE:2011/11/16(水) 22:05:11.67 ID:Hn7HAISL
もうひとつ。ファイルの更新日時を比較するんだろ?
ネットワークドライブの場合、保存先のファイルシステムの制限で
1秒ぐらいズレることがあるのはしょうがない。
datediff("s", date1, date2)が2以下なら同じとみなしていくしかないか?

319 :名無し~3.EXE:2011/11/17(木) 20:14:35.85 ID:6WgVP9XE
>>315-318
よく読み返してみたら日時じゃなくて「日付比較は〜」ってしっかり書いてありましたね
いつも日付+時間のセットで使っているのでうっかりしました。
ネットワークドライブの方でズレるというのは初めて知りました。
こちらは別に注意してみます

ありがとうございました。

320 :名無し~3.EXE:2011/11/23(水) 06:34:21.16 ID:nwtiGPYP
電波テロ装置の戦争(始)
魂は幾何学、コピー出来る公安はサリンオウム信者の子供を40歳まで社会から隔離している
オウム信者が地方で現在も潜伏している
それは新興宗教を配下とする公安(慶應卒T)の仕事だ発案で盗聴器を開発したら霊魂が寄って呼ぶ来た
<電波憑依>
スピリチャル全否定なら江原三輪氏、高橋佳子大川隆法氏は、幻聴で強制入院矛盾する日本宗教と精神科
<コードレス盗聴>
2004既に国民20%被害250〜700台数中国工作員3〜7000万円2005ソウルコピー2010ソウルイン医者アカギ絡む<盗聴証拠>
今年5月に日本の警視庁防課は被害者SDカード15分を保持した有る国民に出せ!!<創価幹部>
キタオカ1962年東北生は二十代で2人の女性をレイプ殺害して入信した創価本尊はこれだけで潰せる<<<韓国工作員鸛<<<創価公明党 <テロ装置>>東芝部品)>>ヤクザ<宗教<同和<<公安<<魂複<<官憲>日本終Googl検索

321 :名無し~3.EXE:2011/12/01(木) 20:01:00.32 ID:mSpMO4/a ?2BP(0)

WindowsXP Pro SP3 + WSH 5.7
test.js に、フルパスが258Byte以上のファイルをD&Dすると、
WScript.Arguments(i) がバラバラになってしまいます。(日本語は2Byteとして計算)
何とかこれを、バラバラにせずに処理する方法はないでしょうか?
よろしくお願いします。

322 :321:2011/12/01(木) 21:02:02.93 ID:mSpMO4/a ?2BP(0)

WMIService.ExecQueryでwscript.exeを検索して、CommandLineを見てみても、
"が外されてバラバラになっています。
また、Argumentsでも、WMIでもフルパスが長いと後ろの方が切れてしまうようです。

323 :名無し~3.EXE:2011/12/02(金) 08:14:17.63 ID:rgvao1mt
>>321
2byte文字をAsciiにエンコードするとか

324 :名無し~3.EXE:2011/12/02(金) 17:02:35.97 ID:lQcqRQ8c
それってだれの制限なの?

325 :名無し~3.EXE:2011/12/02(金) 17:13:12.44 ID:lQcqRQ8c
ファイル名を指定して実行にドロップしたらどうなる?
それで駄目ならドラッグ&ドロップできんてことだろ?

326 :名無し~3.EXE:2011/12/02(金) 17:37:52.90 ID:lQcqRQ8c
ショートパス名使えば?

327 :321:2011/12/02(金) 19:28:41.17 ID:2Ca29Y9K
うーん・・・ とりあえず作っているスクリプト晒します
WSHの仕様なのかなぁ?

D&Dされたショートカットファイルや実行ファイルをDropMyRightsで実行するWSH
http://www1.axfc.net/uploader/Sc/so/297301.zip

328 :名無し~3.EXE:2011/12/03(土) 01:45:13.33 ID:luRL2aN8
windowsのファイルパス名の最大長は256 Bytes(MAX_PATH=256)
でもAPIでのバッファ長は260 Bytesだから、ファイル移動とかで
256-259Bytesになることはある。
ただし、256Bytesを超えるファイルパスは削除とかできなくなるのは有名。
CMD.exeもこの制限を免れることはできない。

329 :321:2011/12/03(土) 04:09:16.88 ID:adpHRkP6
>>328 おぉ ありがとうございます。

ついでなので検証結果メモ。(WindowsXP Professional SP3 + NTFS 3.1(5.1))
フルパスに半角スペースを含まない(=D&D時、引数が「"」で囲まれない)場合
・フルパスが259Byte以下ならD&D正常 開く・移動・削除可能
・フルパスが260Byte以上ならD&D異常 開く・移動・削除不能

フルパスに半角スペースを含む(=D&D時、引数が「"」で囲まれる)場合
・フルパスが257Byte以下ならD&D正常 開く・移動・削除可能
・フルパスが258〜259ByteならD&D異常 開く・移動・削除可能
・フルパスが260Byte以上ならD&D異常 開く・移動・削除不能

330 :321:2011/12/03(土) 04:25:57.01 ID:adpHRkP6
あれ 日本語を含む場合、開く・移動・削除は300Byte以上でもできた

331 :名無し~3.EXE:2011/12/03(土) 05:00:45.99 ID:luRL2aN8
Bytesじゃなくて文字数だったかもしれん。
あと、WIN32APIのMAX_APTHは260だった。(MAX_FNAMEが256)
ただしNTFSの制限は確か32767だったと思うので、64bit Windows(WIN64API)はまた別かも知れん。
まあC++言語とか使う人じゃなかったら意味ないdefine値だが。

332 :名無し~3.EXE:2011/12/03(土) 05:44:57.72 ID:luRL2aN8
あっ、NTFSのMFTはは内部Unicode(UTF-16)だった。(なのでwindowsでの取り扱いも同様)
なので260はUnicodeでのカウントであり、Bytesにすると520Bytesだね。
あと、32767はNTFSのパス名の制限であり(とはいえwindowsでは扱えない)
ファイル名、フォルダ名は255文字までなのでお間違えなく。

333 :名無し~3.EXE:2011/12/03(土) 05:54:52.63 ID:luRL2aN8
ただMAX_PATHが260だとしても、windowsの内部でどうAPIが使われているのか
不明なので正確な制限はexplorerその他の作りにもよるので
使うものを自分で調べるしかないのかも。

334 :名無し~3.EXE:2011/12/03(土) 10:49:09.39 ID:/gF/+gk+
>>321
ちゅーかなぜ258byteものパスを作れてしまったのかを
追求もすべきじゃね? その原因を防がないと再発するだろ。

335 :名無し~3.EXE:2011/12/03(土) 16:23:13.02 ID:iXL/IjpI
subst使えば?

336 :名無し~3.EXE:2011/12/03(土) 22:24:14.94 ID:7jSx8jTM
OLEのドラッグ&ドロップ用インターフェイスを実装できれば
MAX_PATHからは解放されるんだけどね。

337 :名無し~3.EXE:2011/12/04(日) 03:54:45.77 ID:/eM36+ib
>>336
それはパス名取得にWINAPIを使わずに独自にファイルシステムへの
アクセスを構築するってことか?
FSへのアクセスでWINAPIを使わないなんてDISK解析ツール並みだな。

338 :名無し~3.EXE:2011/12/04(日) 14:12:41.55 ID:Z/kxLnYq
この制限をほぼ 32,000 ワイド文字へ拡張するには

339 :名無し~3.EXE:2011/12/05(月) 00:06:11.19 ID:ka3P5M2Z
>>336
それって何を作ればいいの?
デスクトップ上でのドラッグドロップってexplorerの機能じゃなかったっけ?
explorer作れってこと?

340 :名無し~3.EXE:2011/12/05(月) 14:17:39.48 ID:dd+MJMfN
wshのドロップハンドラはバグってるからな
代わりに使えるまともなドロップハンドラがほしいな

341 :321:2011/12/05(月) 18:31:33.54 ID:heCA4j0r
「wscript.exe "〜.js"」へのショートカットファイルに、D&Dすると問題ないようです。
ちなみに、D&Dしたファイルは
「C:\Documents and Settings\root\My Documents\MSDN\DropMyRights\引数の最後で権限を指
定 N=NormalUser(制限付きユーザーアカウント相当), C=ConstrainedUser(アクセストー
クンのSIDを制限した更に制限されたアカウント ファイルの入出力もできない), U=Untrus
tedUser(殆ど動かない) 省略するとNになる.txt」
です。(改行含まず)

342 :名無し~3.EXE:2011/12/05(月) 19:14:42.85 ID:dd+MJMfN
exeなんかのドロップハンドラだな
wshの関連付けを変えてみ
たしか別の問題であかんかったはず

102 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)