WSH(・∀・)スレッド! Part 4at TECH
WSH(・∀・)スレッド! Part 4 - 暇つぶし2ch1:デフォルトの名無しさん
09/05/24 01:22:48
( ´ゝ`) 誰か詳しい情報キボンヌ

●過去スレ
WSH(・∀・)スレッド!
スレリンク(tech板)
WSH(・∀・)スレッド! Part 2
スレリンク(tech板)
WSH(・∀・)スレッド! Part 3
スレリンク(tech板)

●関連スレ
お前ら、wsh使ってますか? Part7
スレリンク(win板)
HTAをもっと流行らせる計画 Part2
スレリンク(tech板)
★WSHでCGI★JScriptVBScript
スレリンク(php板)

●公式サイト
Windows Script
URLリンク(www.microsoft.com)

●個人サイト
Windows Scripting Host
URLリンク(homepage3.nifty.com)
Windows Scripting Host Laboratory
URLリンク(www.roy.hi-ho.ne.jp)
Windows Script Wiki
URLリンク(winscript.s41.xrea.com)

2:デフォルトの名無しさん
09/05/24 12:30:47
>>1


WSHやVBSずっと消えないで欲しい
というか消えたら困る

3:デフォルトの名無しさん
09/05/24 12:43:45
VB6よりは長生きできるさきっと

4:デフォルトの名無しさん
09/05/25 00:03:22
javascriptが残るならjscriptも残るだろうし、wshも当然残ることになる。そうなるとvbscriptも残るし、htaが残るのは当然だ。

5:デフォルトの名無しさん
09/05/25 01:03:14
ある日、次のバージョンのWindowsでは対応しないことになって終わる

6:デフォルトの名無しさん
09/05/25 02:10:47
だんだん使いにくくなるな
scriptcontrolはvistaで消えた
<input type=file>はie8で使えん
...

7:デフォルトの名無しさん
09/05/25 03:42:08
ここの人たちは PowerShell は使ってる?

>>2
WSH消えたら困る人ってあんまり見かけないけど
案件でWSH酷使してるんか?

8:デフォルトの名無しさん
09/05/25 12:17:42
>>7
いままで標準装備のWSHで処理しなかった人たちは、今後標準装備になるPowerShellも使わんだろうな。

9:デフォルトの名無しさん
09/05/25 14:20:01
>>7
俺は個人だよ

msgboxが好きなので(ホントはpopupメソ)
powershellは未だ手付かず

WSHから自由に.netのクラスライブラリ
呼び出せるといいんだけどね

10:デフォルトの名無しさん
09/05/25 23:58:28
そういうcomを作ればよい

11:デフォルトの名無しさん
09/05/30 12:53:57
com?やだよメンドクサイ
標準装備で出来ることがWSHのメリットなのにさ。

WSHからSystem.Collections.ArrayList呼ぶことなら結構あるけどな。

12:デフォルトの名無しさん
09/05/30 14:05:09
System.Collections.ArrayListはcomから呼べるように特別に作ってあるのか
それとも、ほかのクラスもレジストリに書けば呼べるのか?

13:デフォルトの名無しさん
09/05/30 14:20:31
URLリンク(www.isla-plata.org)

14:デフォルトの名無しさん
09/05/30 16:30:39
で、どっち?

15:デフォルトの名無しさん
09/05/30 17:49:11
>>13
ここまでまとめた人が居るんか、すごいな
でもやっぱりあんまり使えなそう

結局powershell覚えて出力をWSHで受け取るとか
本末転倒だなw

16:デフォルトの名無しさん
09/05/30 21:52:20
PowerShellでもWin32API使いにくいからな
FindWindowやSendMessageが標準環境で簡単に使えるようにならんかな

17:デフォルトの名無しさん
09/05/30 22:39:18
スクリプト言語の中にはC関数を直接呼び出せるものがあってな

18:デフォルトの名無しさん
09/05/30 23:37:40
そんなもん、いくらでも有るが

19:デフォルトの名無しさん
09/05/31 00:00:38
なんでvbscriptは

20:デフォルトの名無しさん
09/05/31 01:55:01
こんなにかわいいの?

21:デフォルトの名無しさん
09/06/02 17:33:30
シフトキーを押しながらの操作はWSHでどうするの?

22:デフォルトの名無しさん
09/06/02 19:00:42
WSHを実行するのにシフトキーを押す必要はありません。

23:デフォルトの名無しさん
09/06/02 22:45:16
なるほど

24:デフォルトの名無しさん
09/06/06 14:55:08
>>21
copyhereやmovehereみたいに用意されてるものもあるが
ショートカットの貼り付けや
invokeverb "delete"みたいに用意されてないものもある
ないものはあきらめてほかの方法さがせ

25:デフォルトの名無しさん
09/06/06 19:22:13
なるほど

26:デフォルトの名無しさん
09/06/10 15:44:18
mailto:sage

27:デフォルトの名無しさん
09/06/10 16:28:32
getobject("hoge.xls")して、それが新規インスタンスか、
既存のインスタンスか、区別する方法は?

28:デフォルトの名無しさん
09/06/10 22:14:31
普通にやれば良いだけでは?

29:デフォルトの名無しさん
09/06/10 23:46:59
抽象的な質問なのですが、wshでアプリケーションを操作する・・・では無くて
wshでアプリケーションを作る事は可能ですか?


30:デフォルトの名無しさん
09/06/10 23:54:37
GUIつきのアプリは厳しいんじゃないか?

31:デフォルトの名無しさん
09/06/10 23:58:39
そのためのHTAです。

32:デフォルトの名無しさん
09/06/11 02:03:46
<SCRIPT language="vbscript">
str = "Hello World!!"
</SCRIPT>
<BODY>
<P><変数strを、ここに出力したい。></P>
</BODY>

33:デフォルトの名無しさん
09/06/11 08:09:32


34:デフォルトの名無しさん
09/06/11 12:27:33
<BODY>
<P>Hello World!!</P>
</BODY>

35:デフォルトの名無しさん
09/06/11 13:11:12
>>27
ないんじゃないか
getobjectする前に排他オープンしてみるとか

36:デフォルトの名無しさん
09/06/11 14:05:51
<html><BODY><!-- NHKニュース速報すくりぷと.hta -->
<div align="center"><i>NHKニュース速報 </i><span id =span1></span><span id =span2></span></div></BODY>
<script language=vbscript>
Window.ReSizeTo 480,360
Sub Window_onLoad()
span2.innerhtml="<font size=1> アナログ</font>"
For iii = 0 to 10
span1.innerhtml = "日経平均、" & iii & "万円台突破"
createobject("WScript.Shell").Run "%COMSPEC% /c ping -n " & 1 & " 127.0.0.1>nul", 0, true
next
end sub
</script></html>

37:デフォルトの名無しさん
09/06/11 14:18:30
<html>
<body>
<!-- 完璧すぎる.hta -->
<p>変数strを、ここに出力したい。</p>
<span id =strspan></span>
</body>
<script language=vbscript>
sub window_onLoad()
str = "Hello World!!"
strspan.innerhtml = str
end sub
</script>
</html>

38:デフォルトの名無しさん
09/06/11 19:32:35
>変数strを、ここに出力したい。
といってるくせに違うところに出してどうする?

39:デフォルトの名無しさん
09/06/11 19:34:27
>>37
setintervalかsettimeout使えよ

40:デフォルトの名無しさん
09/06/12 19:35:43
getobject("hoge.xls")

getobject("hoge.xls","excel.sheet")
の違いはなんだろう?

41:デフォルトの名無しさん
09/06/12 20:27:34
,"excel.sheet"があるかないかの違い。

42:デフォルトの名無しさん
09/06/13 01:46:37
ハズレ

43:デフォルトの名無しさん
09/06/13 12:43:27
Active にするオブジェクトを指定してるんじゃなかったっけか?

44:デフォルトの名無しさん
09/06/13 15:37:34
どちらもWorkbookオブジェクトが取れる

45:デフォルトの名無しさん
09/06/13 15:41:08
getobject("hoge.xls")
は新規と既存がとれるけど
getobject("hoge.xls","excel.sheet")
は新規のみだろ
getobject("","excel.sheet")がcreateobjectなのはその1例だろ



46:デフォルトの名無しさん
09/06/18 22:56:09
exec.vbs
createobject("wscript.shell").exec("notepad")
を作って
wscript exec.vbs|more
とすると、wscriptは終了してるのに、notepadの終了を待ちます。
なぜか、わかる人いますか?

47:デフォルトの名無しさん
09/06/19 00:09:58
C:\>notepad|more

48:デフォルトの名無しさん
09/06/19 01:06:15
createobject("wscript.shell").run("notepad")
だと待たないからrunとexecの違いのなにかだろ

49:デフォルトの名無しさん
09/06/19 01:40:10
start /b /wait notepad|more
start /b notepad|more
パイプがinheritされて閉じられてないみたいだな

50:デフォルトの名無しさん
09/06/22 18:45:55
作業の自動化ができる、って具体的に何を自動化したいの?
連投スクリプトとかできるの?

51:デフォルトの名無しさん
09/06/22 19:40:30
それはお前さん次第さ

52:デフォルトの名無しさん
09/06/22 19:42:21
明日の会議で自動的に受け答えしてくれる?

53:デフォルトの名無しさん
09/06/22 19:55:21
それもお前さん次第さ

54:デフォルトの名無しさん
09/06/22 19:59:47
俺の代わりに飯食ってきてくれるか?いま手が離せない

55:デフォルトの名無しさん
09/06/22 20:05:23
それはまた別の話

56:デフォルトの名無しさん
09/06/22 20:36:12
どうやら>>52>>54の間辺りにWSHでできる事の限界があるらしい

57:デフォルトの名無しさん
09/06/22 22:43:00
じゃあ俺の心の隙間を埋めてくれるのかい?

58:デフォルトの名無しさん
09/06/23 21:23:44
埋め

59:デフォルトの名無しさん
09/06/24 22:58:30



60:デフォルトの名無しさん
09/06/25 16:04:09
WSHにてインストールされているプリンタの一覧を取得する方法はありますか?

61:デフォルトの名無しさん
09/06/25 16:10:32
あります

62:デフォルトの名無しさん
09/06/28 18:48:32
ありがたい

63:デフォルトの名無しさん
09/07/06 23:32:01
WSHで現在アクティブなウィンドウを取得する方法ってありませんか?
最前面に来て使用しているであろうアプリを調べたいのです。

64:デフォルトの名無しさん
09/07/07 00:20:49
ない
win32api使え

65:デフォルトの名無しさん
09/07/07 00:39:04
SFCminiとAutoitXを入れましょう。これでWSHからwin32apiも使い放題。window操作もやりたい放題。

66:63
09/07/07 00:55:00
>>64、65

ありがとうございます。調べてみます。

ネットで調べてうすうすAPIというものを使わないと無理そうだとは思ってたのですが
やはりそうですか・・

67:デフォルトの名無しさん
09/07/07 01:08:28
WSHから離れて、dmscript( 日本人製作の
Jscriptと同様のスクリプト、dm.exe -l オプションでワンライナーの
ようにも使えるので場合によってはWSHからWin32Apiの機能を利用可能)、
UWSC(日本人製作、ドキュメント多し)、
なでしこ(日本人製作、ドキュメント多し)、
AutohotkeyやAutoIT3(AutoItXとほぼ同じ)をつまんで見るのも吉。
これらは、SFCminiやAutoITXに比べて、ポータブルでも使えるメリットがある。

68:デフォルトの名無しさん
09/07/07 01:11:48
あんま怪しいツールは入れたくないんだよね

69:デフォルトの名無しさん
09/07/07 01:47:20
MS純正
excel
powershell
vb.net

70:デフォルトの名無しさん
09/07/07 01:56:27
どれもOS標準添付じゃないし…

71:デフォルトの名無しさん
09/07/07 20:05:15
結局は XUL が最強だよな

72:デフォルトの名無しさん
09/07/07 21:29:45
.netはvistaに標準添付だろ

73:デフォルトの名無しさん
09/07/07 22:51:00
開発環境も?

74:デフォルトの名無しさん
09/07/08 01:39:17
vbc.exe

75:デフォルトの名無しさん
09/07/08 01:51:31
>>74

URLリンク(www.moonmile.net)
>実は Windows XP3 や Vista のマシンでは既に .NET Framework が(勝手に)導入されており、
>実は環境変数を設定すれば Visual C# Express Edition を入れなくても
>コンパイルができます。当然実行もできます。

へぇそうなんだ。常識なの?良いこと聞いた、thx


76:デフォルトの名無しさん
09/07/08 19:59:39
IEで、Ctrl+Nでウィンドウの新規作成を行った時と等価な状態(セッション情報等を継承)で、
WSHでIEのウィンドウの新規作成を行い、
かつそのIEのウィンドウのオブジェクトIDを得るにはどうしたら宜しいでしょうか?


77:デフォルトの名無しさん
09/07/08 20:44:55
>>76
ここはWSHのスレであって
IEコンポーネントAPIのスレではないのでスレ違い。

78:デフォルトの名無しさん
09/07/08 23:01:22
Shell.apliction でグルグルすると既存のieオブジェクトやエクスプローラーのハンドルとれるじゃん。
またはieオブジェクト作ったときのオブジェクトに、例えば objIe.hWndってやってもハンドル取れる。

79:デフォルトの名無しさん
09/07/09 02:51:48
>>78
やりたい事は、セッション情報を引き継いだIEの新規ウィンドウの生成(Ctrl+Nに相当)です。

例えば、

ie1 = new ActiveXObject("InternetExplorer.Application");
ie1.Navigate("URLリンク(www.example.com)");
// ログイン処理

ie2 = new ActiveXObject("InternetExplorer.Application");
ie2.Navigate("URLリンク(www.example.com)");

とした場合、ie1の派生物とie2の派生物では別セッションとなってしまい、
ie1でログイン状態がセッション管理により行われている場合、
ie2では非ログイン状態になってしまいます。


80:デフォルトの名無しさん
09/07/09 03:30:44
>>79
window.open ではダメなの?

81:デフォルトの名無しさん
09/07/13 17:21:30
>>78
どれがアクティブか調べる方法は?

82:デフォルトの名無しさん
09/07/13 18:38:09
普通にやれば良いんじゃないの?

83:デフォルトの名無しさん
09/07/13 19:48:59
普通にWin32APIのFindWindow クラス名でやれば良いんじゃないの?


84:デフォルトの名無しさん
09/07/15 21:19:25
>>83
タブの区別がつかん

85:デフォルトの名無しさん
09/08/11 19:02:06
statustextでつくとは!

86:デフォルトの名無しさん
09/08/22 06:23:12
CreateObject("Shell.Application").Windows.Item
でアクティブ取れるんだね。

87:デフォルトの名無しさん
09/08/22 15:05:28
正確には
でアクティブ取れたんだね。

88:デフォルトの名無しさん
09/08/22 19:44:04
>>87
え?Vista以降は取れないとか?

89:デフォルトの名無しさん
09/08/23 14:13:39
え?IE7以降は取れないとか?


90:デフォルトの名無しさん
09/08/27 15:49:26
どこで聞けばいいのかわからないのでここで質問を
piyo1hogera.txt
piyo2hogera.txt
piyo3hogera.txt
piyo5hogera.txt
pito8hogera.txt
というように番号がとびとびになっているようなファイルの集まりから数字だけを抽出して
htmlファイルに反映させたいんだけどどうすればいい?

一応, ファイル一覧は抽出できるんだけどそっから数字だけを抽出するにはどうすればいいかわからないので。

91:デフォルトの名無しさん
09/08/27 19:08:52
>>90
正規表現を使うのが簡単
var num;
if (/(\d+)/.exec(ファイル名) != null) { // ファイル名に数字を含んでいたら
num = RegExp.$1; //抽出した数字
}


92:デフォルトの名無しさん
09/08/29 01:14:59
$1wwwwwwwwwwww

93:デフォルトの名無しさん
09/09/07 19:22:11
WScript.Echoで文字色変えられますか?もし変えられるなら方法も

94:デフォルトの名無しさん
09/09/08 05:55:20
>>93
コンソールの文字色変更だったらオススメはしない
一応、コンソールAPI or エスケープシーケンス を使うことで出来るけどね
↑は環境を変更する必要があるので、HTAを使った方がマシだと思う

95:デフォルトの名無しさん
09/09/08 16:20:44
tscmd.zipのechoc.exeを使うといいかも

96:デフォルトの名無しさん
09/09/08 16:48:43
createobject("wscript.shell").exec "cmd /c color ac"

97:デフォルトの名無しさん
09/09/08 20:36:48
>>95-96
間違ってはいないけど >>93 の意図とは違うだろ・・・ワザとか?

98:デフォルトの名無しさん
09/09/08 22:19:41
>>96はだめみたいよ
標準入出力をリダイレクトしてコンソール環境を継承してない?

99:デフォルトの名無しさん
09/09/08 22:58:31
>>93
NT系OSのコマンドプロンプトでは色指定などのエスケープシーケンスは標準ではサポートされない
エスケープシーケンス ANSI.SYS などのキーワードで検索

100:デフォルトの名無しさん
09/09/08 23:43:35
echo エスケープシーケンス | ansi.exe
みたいなのがあったような

101:デフォルトの名無しさん
09/09/09 01:02:43
PowerShellの中では文字色変えられるけど、
CMDに戻ると色が消えるのはなんでだろう?

102:デフォルトの名無しさん
09/09/09 15:31:45
>>98
ok cmd /c color ac
ng cmd /c color ac <nul >nul 2>nul



103:デフォルトの名無しさん
09/09/09 20:43:53
createobject("wscript.shell").exec "command con /c cmd /c color ac"

104:デフォルトの名無しさん
09/09/10 17:30:19
無理ぽ

105:デフォルトの名無しさん
09/09/11 17:34:00
なんかズレテるな

106:デフォルトの名無しさん
09/09/11 19:35:57
>>105
なんかズレてるな


107:デフォルトの名無しさん
09/09/11 20:06:31
excel経由でコンソールAPIを呼ぶ

108:デフォルトの名無しさん
09/09/12 19:25:50
>>103
なんかコードページがズレてるな
createobject("wscript.shell").exec "chcp.com 932"

109:デフォルトの名無しさん
09/09/14 14:35:30
InvokeVerbで、右クリックメニューのサブメニューは 呼べないんでしょうか

110:デフォルトの名無しさん
09/09/15 07:22:20
>>109
どういう状況下で何をしたいのか理解できないけど
InvokeVerbで呼べないならレジストリ読んで実行しとけ

111:デフォルトの名無しさん
09/09/15 14:46:42
InvokeVerb "メニュー項目\サブメニュー項目"
とでもできればよいが

112:デフォルトの名無しさん
09/09/16 12:44:13
InvokeVerbEx "メニュー項目","サブメニュー項目"


113:デフォルトの名無しさん
09/09/17 23:30:32
WordのActiveXコンポーネントについて聞いて良いですか?
WSHから、documentオブジェクトに
他所で生成したリストをMailMergeさせることは出来たんですが、
実際のデータが割り当てられたプレビュー状態を表示させるメソッドってありますか?
ツールバーのボタンを押せばちゃんと表示されます。

114:デフォルトの名無しさん
09/09/18 00:15:01
>>113
こんなんで良いの?
var word = new ActiveXObject('Word.Application');
word.visible = true
var doc = word.Documents.Add();
doc.Content.InsertAfter("hello, world.");
doc.PrintPreview();


115:デフォルトの名無しさん
09/09/18 00:28:10
>>114
ありがとうございます。
説明が悪かったのですが、印刷プレビューではなくて、
通常のレイアウト内の、差し込み印刷のプレビュー表示です。
右、左でレコードを移動できるあれです。
ツールバーのボタンを押さないと、<<名前>>みたいなフィールドのままですよね。
それを、差し込んだ状態で見せたいんです。
ちゃんとデータソースと結合は出来ているのですが。
スレ違いですかね・・・

116:デフォルトの名無しさん
09/09/18 00:42:13
>>115
失礼、差込印刷なって使ったことなかったので

とすると、これ?
doc.MailMerge.ViewMailMergeFieldCodes = false

117:116
09/09/18 00:43:29
×差込印刷なって
○差込印刷なんて
orz...


118:デフォルトの名無しさん
09/09/18 00:46:24
>>116
調べてみたら、それで間違いないと思います!
今ちょっとWordが無い環境なんで、改めて試してみます。
ありがとうございました。

119:デフォルトの名無しさん
09/09/19 01:54:02
ABALE.ZIPとかいうCOMが入っているのですが、これって使えるの?

120:デフォルトの名無しさん
09/09/24 22:41:49
Wordの印刷についてお聞きしたいんですが.
Wordを印刷するプログラムを書いたのですが,
プリンタを任意に指定する方法がわかりません.
以下のプログラムでは,”通常使うプリンタ”になってしまいます.
プリンタを指定する場合はどのようにすればよいのでしょうか?
できれば,引数からプリンタを指定するようにしたいです.
よろしくお願いいたします.

var pf,obj;
var objArgs = WScript.Arguments;
pf = new ActiveXObject("Word.Application");
pf.DisplayAlerts = false;
obj = pf.Documents.Open(objArgs(0),0,1);
obj.PrintOut();
obj.Close(0);
WScript.Quit(0);

121:デフォルトの名無しさん
09/09/24 23:08:20
>>120
試してないけど、
pf.ActivePrinter = "プリンタ名"
あたり?

ちなみに、明らかにword固有の機能はスレ違い
VBAスレなどに行ってください

122:デフォルトの名無しさん
09/09/25 00:41:38
>>121
ありがとうございます.
その方法で動きました

123:デフォルトの名無しさん
09/09/25 00:44:39
ちなみに、VBAスレでは、VBやVBSでも書ける話はスレ違いと言われるので、
さらにほかのスレに行ってください

124:デフォルトの名無しさん
09/09/25 04:29:36
> ちなみに、VBAスレでは、VBやVBSでも書ける話はスレ違いと言われる
ハズレ

「VBやVBSでも書ける話」がスレ違いなのではなく
「Word.ApplicationやExcel.Applicationを使わずにVBやVBSでも書ける話」がスレ違いと言われる

VBやVBSでも書ける話でも、WordやExcel固有機能の話なら、当然スレ違いじゃない
だってVBAのAはWord.[A]pplicationやExcel.[A]pplicationのAなんだから

125:デフォルトの名無しさん
09/09/25 14:50:55
new ActiveXObject("Shell.Application").ShellExecute(objArgs(0),"プリンタ名",null,"printto");
は、どのスレだろう?

126:デフォルトの名無しさん
09/09/25 17:04:12
すいません。質問させてください。
「画面のプロパティ」の内容に当たるレジストリを書き換えるコードを書いています。
が、ログオフか再起動をしないと反映されません。
ログオフ、再起動なしで反映させる方法はありませんか?

127:デフォルトの名無しさん
09/09/25 19:13:20
たぶんスレ違いと言われるんじゃまいか

128:デフォルトの名無しさん
09/09/25 20:04:19
>>126
設定するモノによる
「画面のプロパティ」の画面自体をVBSで操作した方が楽ぢゃねぇ?

129:デフォルトの名無しさん
09/09/25 20:15:00
VBSで画面の操作なんかできんのか

130:デフォルトの名無しさん
09/09/25 20:38:11
sendkeysだろ
>>126
inichangeとかsettingchangeとかぐぐれ

131:デフォルトの名無しさん
09/09/25 20:56:04
sendkeysはVBSじゃないけど

132:デフォルトの名無しさん
09/09/26 02:07:43


133:デフォルトの名無しさん
09/09/26 10:29:44
wはVBSじゃないけど

134:デフォルトの名無しさん
09/09/29 15:59:53
WScript.Echo "w"
はVBSね

135:デフォルトの名無しさん
09/09/29 18:50:17
Is there any here document in WSH?

136:デフォルトの名無しさん
09/10/01 23:18:05
UserとPasswdを指定してリモートのファイルにアクセスするならMapNetworkDriveが使えるけど
ドライブのマッピングをしたくない場合って他に何か方法あるかな?
net useコマンド叩けばいいんだけど、あんまり美しくない。。。

137:デフォルトの名無しさん
09/10/01 23:26:31
pushdとかは?

138:デフォルトの名無しさん
09/10/01 23:28:32
FileSystemObject って UNC に対応してなかったけ?

139:デフォルトの名無しさん
09/10/02 01:32:32
UNCってUser/Pass指定できるんだっけ?

140:デフォルトの名無しさん
09/10/02 01:53:29
マップしてfsoで開いてアンマップ

141:デフォルトの名無しさん
09/10/07 12:46:15
指定したパスのフォルダをエクスプローラーで、
サイズや位置を指定して開く方法があったら教えてください。
ぐぐろうとすると InternetExplorerでのやり方ばかりヒットしてしまって・・・

142:デフォルトの名無しさん
09/10/07 13:25:15
' 変数の定義,WSHの準備,etc...
Option Explicit
Dim FSO,WS,AG,WE,strOs,strInp,strCom,intRet
Set FSO=CreateObject("Scripting.FileSystemObject")
Set WS=CreateObject("WScript.Shell")
Set AG=WScript.Arguments
Set WE=WS.Environment("PROCESS") : strOs=WE("OS")

' RunメソッドでEXPLORER.EXEを起動し、引数で指定されたドライブ/フォルダ(省略時は現在のドライブ/フォルダ)をツリー枠と共に表示
strInp="." : If (AG.Count > 0) Then strInp=AG(0)
strCom="EXPLORER /e,/root," & Chr(34) & FSO.GetAbsolutePathName(strInp) & Chr(34)
intRet=WS.Run(strCom , 1, true)

' WSHのバージョンが5.1以降かつOSがWindowsNT系(NT/2000/XPなど)の場合、処理内容をイベントID:4(情報)でWindowsNTイベントログへ記録
If (WScript.Version > "5.0") And (strOs = "Windows_NT") Then
WS.LogEvent 4, "(bvExplorer.vbs) 次のコマンドラインを実行しました。" & vbCrLf & strCom
End If

' 各オブジェクトのメモリ リソース等を開放し、本スクリプト実行を終了
Set FSO=Nothing : Set WS=Nothing : Set AG=Nothing : Set WE=Nothing
WScript.Quit()

143:デフォルトの名無しさん
09/10/07 20:30:11
Set ie=GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
ie.Visible=True
ie.Top=
ie.Width=
...

144:デフォルトの名無しさん
09/10/09 13:05:03
FSOその他でシンボリックリンクの判定できる?
ターゲット取り出せる?

145:デフォルトの名無しさん
09/10/09 19:10:05
ExecuteExcel4Macro("CALL(""user32"",""FindWindowExA"",
はよくあるが、
ExecuteExcel4Macro("CALL(""user32"",""FindWindowExW"",
はできないのか?

146:デフォルトの名無しさん
09/10/09 22:54:27
>>144
シンボリックリンクなら。ジャンクションはこれでは無理。たぶんWMIでいけるんじゃないか。
動かしたのは Win7RC なので、XP では無理。Vista はどうかわからん。

Set shell = CreateObject ("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = shell.Namespace("C:\temp")
For Each fname in folder.Items
filePath = folder.GetDetailsOf(fname, 179)
fileAttr = folder.GetDetailsOf(fname, 6)
isFolder = InStr(1,fileAttr,"D",1)
isLink = InStr(1,fileAttr,"L",1)
If isFolder = 1 Then
Set fEntry = fso.GetFolder(filePath)
Else
Set fEntry = fso.GetFile(filePath)
End If
If isLink <> 0 Then
Wscript.echo filePath & " is linking to " & _
folder.GetDetailsOf(fname, 188)
End If
Next


147:デフォルトの名無しさん
09/10/09 22:57:38
ごみが残ってた。これいらん。
' If isFolder = 1 Then
' Set fEntry = fso.GetFolder(filePath)
' Else
' Set fEntry = fso.GetFile(filePath)
' End If

148:デフォルトの名無しさん
09/10/10 14:48:07
おー、さんきゅう
ただし、Vistaでは属性に、Lが付かんね
リンク先はあるので、ショートカットでなければで区別するかな

149:デフォルトの名無しさん
09/10/10 17:33:03
そうなんだ。それじゃ >>147 の fEntry で fEntry.Attributes AND 1024 を調べてみ。

150:デフォルトの名無しさん
09/10/11 16:10:12
分類に「リンク」があるかでも区別できるかも

folder.GetDetailsOf(fname, 188)
Vistaで187 
ExtendedPropertyのほうがよいが、IDが不明
GetDetailsOfとExtendedPropertyの対応表か調べる方法があればよいが

151:デフォルトの名無しさん
09/10/11 20:57:35
あった
System.Link.TargetParsingPath
ms-help://MS.MSDNQTR.v90.ja/shellcc/platform/shell/reference/properties/link/system_link_targetparsingpath.htm


152:デフォルトの名無しさん
09/10/12 21:37:40
すみません
URLリンク(detail.chiebukuro.yahoo.co.jp)
この答えを教えていただけないでしょうか
よろしくお願いします

153:デフォルトの名無しさん
09/10/12 22:32:38
>>152
取得順はソートされない(詳細はFATやNTFSの構造の話になるので省略する)
取得したデータを自前でソートしろ

154:デフォルトの名無しさん
09/10/12 22:50:19
>>152
自前ソートが面倒であれば以下のとちらかで手抜きしろ
・ソート指定したdirコマンドの結果を使う
・basp21のReadDirを利用する

155:デフォルトの名無しさん
09/10/12 23:01:18
>>153-154
ソートするには取得してからでないとダメということですね
ありがとうございます

取得するフォルダの順番というものは決まっているのでしょうか?
対象のフォルダに
20090101
20090102
20090201
20090202
とこのような感じでサブフォルダがありまして
フォルダが読み込まれる順番を調べているのですが
どうも情報がうまくさがせないものでして
echoなどで出しておりますとおそらく昇順だとは思うのですが
明示的にできないか・もしくは昇順であることを裏付ける何かがないかと思いまして

156:デフォルトの名無しさん
09/10/12 23:12:55
ループの処理のあとにsleep10000くらい入れて
処理フォルダ見とけばいいんじゃない?

157:デフォルトの名無しさん
09/10/12 23:19:53
>>155
FATに関して言えば情報格納順であり
ファイルやフォルダ削除/作成により順番が変わる
NTFSについても確実に名称でソートされている訳ではない
環境依存にしたくなければソートしろ

158:デフォルトの名無しさん
09/10/12 23:24:42
>>156-157
ありがとうございます
複雑な内部の問題なんですね…
ソートしてから使いチアと思います。
本当に助かりました

159:デフォルトの名無しさん
09/10/13 00:12:04
横レスですが、
みなさんソートはどうしてますか?
バブルソートが楽ですけど、量が増えると遅くて重くて。
エクスプローラがどんなに大量のファイルがあっても一瞬でソートできるように、
何か便利な方法ないでしょうか?

160:159
09/10/13 00:16:54
すんません、>>154で出てた・・・

161:デフォルトの名無しさん
09/10/13 15:32:29
JSciptのArray.sort()でええ

162:デフォルトの名無しさん
09/10/13 15:41:58
CreateObject("System.Collections.SortedList")

163:デフォルトの名無しさん
09/10/14 18:16:19
>>21-25
keybd_eventでシフトキー押しながら
invokeverb "delete"
すればよいよ

164:デフォルトの名無しさん
09/11/08 21:10:28
質問です
vbsで特定ページのソースを取得し、X行目がYという内容と一致するかのチェックをするスクリプトを作りたいのですが
ソース全体を出力する方法はobjIE.Document.Body.InnerHtmlでできるのは分かったんですが
ソース全体の閲覧ではなくソースのX行目がYという文字列と一致するかどうかの分岐を作るのはどうすればいいのでしょうか?

165:デフォルトの名無しさん
09/11/08 21:42:02
>>164
ネタ? どこまで理解できていないのか読み取れない・・・

InStr系関数で改行コードをカウントしてX行目の開始/終了位置を取得
Mid系関数でX行目のデータを取得
If文で分岐

当然ループは使うぞ

166:デフォルトの名無しさん
09/11/08 23:00:09
>>165
分かりにくくてすみません
>InStr系関数で改行コードをカウントしてX行目の開始/終了位置を取得
>Mid系関数でX行目のデータを取得
ここが分かりませんでした

もう少し調べてみます

167:デフォルトの名無しさん
09/11/08 23:58:40
俺ならXMLDOMで全体取ってから
\nでsplitするかな。

168:デフォルトの名無しさん
09/11/09 01:21:37
StrBody = objIE.Document.Body.InnerHTML
lntPos = InStr(1, StrBody, Chr(13), 1)
これの戻り値がどうやっても0になってしまいます
対処法お願いします

169:デフォルトの名無しさん
09/11/09 15:46:51
Chr(13)?

170:デフォルトの名無しさん
09/11/09 15:54:55
>>169
段落コードのつもりなんですが

171:デフォルトの名無しさん
09/11/09 16:38:05
Chr(10)

172:デフォルトの名無しさん
09/11/09 17:26:14
段落コード?

173:デフォルトの名無しさん
09/11/09 17:33:14
HTMLにおける「段落」をめぐって
URLリンク(www.asahi-net.or.jp)

174:デフォルトの名無しさん
09/11/09 18:32:24
ソース?

175:デフォルトの名無しさん
09/11/09 19:13:38
>>170
HTMLの段落はそっちでしたか
InStrが返す値が明らかに存在する文字を検索しても0になってしまうのはStrBodyが長すぎるせいなのでしょうか?
長さ制限は無いはずだしStrBodyをためしにechoで出力してみたらちゃんと表示されてるのでStringは収納されてるはずなんですが

>>167
ちょっとこちらも調べて見ます

176:デフォルトの名無しさん
09/11/09 21:58:26
>長すぎるせいなのでしょうか?
それはない
>InStrが返す値が明らかに存在する文字を検索しても0になってしまう
それもない

177:デフォルトの名無しさん
09/11/09 23:21:28
>>176
無いはずなのは分かってるんですけどなぜかそうなってしまうんです
ためしにVBで>>168のIntPosをMsgBoxで出力しようとしてもなぜか0に


178:デフォルトの名無しさん
09/11/10 01:02:57
すみません
IntPos = の部分がうまく変数として認識されていなかったのが問題だった見たいです
解決しました

179:デフォルトの名無しさん
09/11/10 17:02:37
意味不明だが
on error resume next
でも使ってんのか?やめとけ
option explicit
は使っとけ

180:デフォルトの名無しさん
09/11/16 22:17:29
URLリンク(d.hatena.ne.jp)

181:デフォルトの名無しさん
09/11/17 15:03:31
いみふ
結局使えないんだろ?

182:デフォルトの名無しさん
09/11/18 20:01:43
以前は
cscript //e:jscript -
が使えたが

183:デフォルトの名無しさん
09/11/18 22:00:30


>cscript //e:jscript -
WScript.Echo(WScript.Version);
^Z
5.7

184:デフォルトの名無しさん
09/11/22 15:42:09
>cscript //e:jscript -
入力エラー: スクリプト ファイル "-" が見つかりません。

185:デフォルトの名無しさん
09/11/25 02:05:32
>cscript //e:jscript con
WScript.Echo(WScript.Version);
^Z
5.7

186:デフォルトの名無しさん
09/11/26 12:03:39
レンホウ「こんなロボット作って、なんになるんです?」

187:デフォルトの名無しさん
09/11/26 18:04:00
ロボットになるんです

188:デフォルトの名無しさん
09/11/28 17:39:05
>cscript //e:jscript con
CScript エラー: Windows Script Host の実行に失敗しました。 (この操作を完了するの
に十分な記憶域がありません。 )

189:デフォルトの名無しさん
09/11/28 19:47:24
純粋なあの頃は仕事で追い詰められて自殺なんて都市伝説だと思ってたけど
今じゃ知り合いの失踪も自殺も体験した

190:デフォルトの名無しさん
09/12/02 10:59:46
正規表現が文法的に正しいかどうかを判別する方法はありませんか
括弧が足りないとか教えてくれなくていい
スクリプトが異常終了しないでtrueかfalseを返してくれればいい

191:デフォルトの名無しさん
09/12/02 18:48:37
try catch

192:デフォルトの名無しさん
09/12/02 19:26:27
>>191
駄目だった
try {var re = /asd(fgh/;}
catch(e){WScript.echo("error");}

193:デフォルトの名無しさん
09/12/02 19:36:59
RegExp.compile

194:デフォルトの名無しさん
09/12/02 19:58:42
>>192
RegExp

195:デフォルトの名無しさん
09/12/05 00:05:02
wshで
var n=/a]b/;
と打ったらエラーが出ませんでした。他の括弧ならエラーが出ます。
エスケープ無しの右かぎ括弧ってなにか特別な意味はありますか?
この場合は、"a]bと続く三文字"と解釈して大丈夫なんですか?

196:デフォルトの名無しさん
09/12/05 14:20:01
ためせば?

197:デフォルトの名無しさん
09/12/13 13:23:44
Excel2003と2010が共存している環境で
WSHを使うことで両者を使い分けようとしています。
参考 : URLリンク(www.drk7.jp)

RegRead("HKEY_CLASSES_ROOT\\CLSID\\{00024500-0000-0000-C000-000000000046}\\LocalServer32\\").replace(/ \/[^ \/]+/g, '')
で、Excel 最新版(最後にインストールしたもの?)のパスは得られるのですが、古い方のパスを得られません。

何か良い方法はないでしょうか?

198:デフォルトの名無しさん
09/12/13 13:24:56
今は決めうちで、「C:\Program Files\Microsoft Office\*\EXCEL.EXE」の * の部分を変えて存在確認をとって処理しています。
* の部分は、
Office2010 : office14
Office2007 : office12
Office2003 : office11
Office2002 : office10
Office2000 : office9
Office97 : office8
Office95 : office
であっているでしょうか?
よろしくお願いします。

199:デフォルトの名無しさん
09/12/13 19:27:38
URLリンク(support.microsoft.com)

200:デフォルトの名無しさん
09/12/15 18:19:27
EXCEL.EXEを検索してFileVersionで判定すべき

201:デフォルトの名無しさん
09/12/23 00:00:12
Office2010ってもう発売されてるんだ.....

202:デフォルトの名無しさん
09/12/23 14:44:53
さあ

203:デフォルトの名無しさん
09/12/23 14:50:06
office13は?

204:デフォルトの名無しさん
09/12/24 09:35:19
スレちがい

205:デフォルトの名無しさん
10/01/13 18:31:33
お願いだから教えてください。スレ違いかも知れないけどPower Shellスレないみたいだし・・

Windows Power Shell(2.0)でIEを起動してマウスクリックをエミュレートさせようとした場合、Win32API(mouse_event)を使うと思うんですが
DllImport("usr32.dll",Charset=Charset.Auto)でCharset = ←の=の後がどうとかいって、実行できません。Charsetのくだりを全削除すると今度は予期しない属性と出てしまいます。

mouse_eventにこだわりはないんですが
IEを立ち上げ
マウスクリックをエミュレートする

処理を教えてください。APIなら宣言部もお願い;;



206:デフォルトの名無しさん
10/01/13 18:37:51
205ですけど

座標とかハードコーディングで大丈夫ですので肝を簡潔にお願い;;


207:デフォルトの名無しさん
10/01/13 23:40:26
スレちがい
Windows PowerShell 2.0 Part2

208:デフォルトの名無しさん
10/01/14 00:07:23
普通はDOM使うんじゃなかろうか、いや知らんけど

209:デフォルトの名無しさん
10/01/14 02:56:55 BE:1403990069-PLT(23400)
>>207
URLも貼ってあげなよ

スレリンク(win板)

210:デフォルトの名無しさん
10/02/22 21:41:34
次のように Folderオブジェクトの SubFolders でFolderコレクションを取得したとして、

 Set c = folder.SubFolders

これを For Each ではなくて以下のように For で処理したいです。

 For i = 0 To c.Count
  :
 Next

このループの中で、i 番目のアイテムを取得するにはどうしたらよいでしょうか?
c(i) でも c.Item(i) でもダメでした。


211:デフォルトの名無しさん
10/02/22 21:44:18
c.Items(i)

212:210
10/02/22 21:50:27
それだと
オブジェクトでサポートされていないプロパティまたはメソッドです。:'c.Items'
です。
ちなみに、c.Item("Test") みたいに、実在するフォルダ名を与えればフォルダオブジェクトは取って来れます。
それじゃ意味無いですが。


213:デフォルトの名無しさん
10/02/22 22:06:18
c(i).Value
c(i).Item()

214:210
10/02/22 22:17:28
>>213
プロシージャの呼び出し、または引数が不正です。


215:デフォルトの名無しさん
10/02/22 23:29:43
Shell.Application の FolderItems のほうを使ったら?

216:デフォルトの名無しさん
10/02/25 21:55:47
配列に入れて使え

217:デフォルトの名無しさん
10/02/25 22:13:00
For i = 0 To c.Count
j=0
 For Each f In c
If j=i Then Exit For
j=j+1
 Next
MsgBox f
Next

218:デフォルトの名無しさん
10/02/25 22:55:24
番号は使えないみたいだな
ItemクリックしたらDictionaryに飛んだ

URLリンク(msdn.microsoft.com)

219:デフォルトの名無しさん
10/03/01 21:36:27
test

220:デフォルトの名無しさん
10/03/05 12:44:09
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


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