WSH(・∀・)スレッド! ..
[2ch|▼Menu]
75:71
04/10/27 10:02:28
>>72
この方法だと、対象アプリがすでに最小化されていたときにも
一度フォアグラウンドに引っ張ってきて、その上で最小化しますね
またSendkeyはフォアグラウンドのアプリに送られるっぽいから
対象アプリが最前面に来る前に100ms経ってしまうと
違うアプリが最小化されてしまいました
直接対象アプリにSendkeyするのってなんか方法ありましたっけ?

76:72
04/10/27 10:30:43
>>75
多分無理かと。
適当にSleepの時間を調整するしかないのでは?

>>73
var str = "hoge";
var ie = WScript.CreateObject("InternetExplorer.Application");
ie.Navigate("about:blank");
while(ie.Busy){ WScript.Sleep(100); }
ie.Document.parentWindow.clipboardData.setData("text", str);
ie.Quit();

by googleの検索結果の上から3番目くらい(特殊文字の処理は省略)
一番上に出てくるやつをダウンロードしてもいいと思うけど。


77:71
04/10/27 13:01:09
たまに、最前面に出てきてもアクティブにならないときもあり
そのときはsleep時間延ばしてても全然違うアプリが閉じてしまう。
むぅぅ。これ以上はWSHでは無理っぽ?

78:デフォルトの名無しさん
04/10/27 21:26:28
>>76
ありがとうございます。
調べたときにIEとか出てきて「なぜ?」って疑問も
教えてもらったclipboardDataからぐぐって
IE呼び出してるんだろうって謎も解けました。

79:デフォルトの名無しさん
04/10/31 01:55:53
>>76 とても、ためになりました。
str = "hoge"
Set ie = WScript.CreateObject("InternetExplorer.Application")
ie.Navigate("about:blank")
Do While ie.Busy = True
WScript.Sleep(100)
Loop

Dummy = ie.Document.parentWindow.clipboardData.setData("text", str)
ie.Quit()

当方、VBS派ですが、期待した動作でした。
これまで、IEが立ち上がって来るのかと思って使ってませんでした。
これまでは、VBO4WSH.EXE で、VBのClipboadObj を使えるように
してました。
便利だけど、インストールしないといけないのが面倒なんですよね。
URLリンク(rd.vector.co.jp)


80:79
04/10/31 08:22:25
SendKeys を使って、"~"や"%" を送ろうとしても、それぞれ、[Enter]や[Alt] に変換されてしまって、
ファイル名のダイアログボックスに、名前を上手く入力できず困っていました。

でも、Clipboard の中に SetData("~ %") しておいて、Sendkeys("^V")《貼り付け》
してしまえば、上手く行きそうな気がしてきました。
まだ試してないけど、あとでためしてみます。
問題を解くきっかけを作っていただき、ありがとうございました。

81:デフォルトの名無しさん
04/10/31 12:13:38
>>80
URLリンク(www.microsoft.com)

82:デフォルトの名無しさん
04/11/02 16:50:19
CreateObjectもできて
dir /b | sortとかもできるWSHなスクリプトってないの?
VBSってすごい面倒。

83:デフォルトの名無しさん
04/11/03 22:56:06
WSHでセキュリティのイベントログを削除するスクリプトを
perlで作ったですがエラーがでて困ってます。
 # cscript script.pls
でコマンド実行すると
 # PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
とエラーになります。
環境はWindows XPにActivePerl 5.8.4です。
どこが悪いのでしょうか。改善点をお願いします。

以下ソースです。

use Win32::OLE;

open(LOG, "eventquery.vbs /v /fo csv /l Security |");
@data = <LOG>;
close(LOG);

$strComputer = ".";
$wmi = Win32::OLE->GetObject(
"WinMgmts:{impersonationLevel=impersonate}!//" .
"$strComputer\\root\\cimv2"
);

$colLogs = $wmi->ExecNortificaitonQuery(
"Select * from Win32_NTEventLogFile where LogFileName='Security'"
);

foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}

84:80
04/11/04 00:24:57
>>81
どうもありがとうございます。こんな仕様になっていたのですね。
clipboard でのテキスト処理も使えるし、Sendkeys も小技が利くしで、
私のやりたい事の9割方は、WSHでほとんど事足りてしまいます。

85:デフォルトの名無しさん
04/11/06 05:42:20
>>83
何やってるのか知らんけど、colLogsが配列なら$じゃなくて@colLogsなのでは?
もし配列へのポインタなら、foreachで使うところで @$colLogs にするとか。
いずれにせよスカラー値がforeachの中にあるのは気持ち悪い。

ってWSHの話じゃないじゃん・・・


86:83
04/11/06 09:55:39
>>85
エラーの場所がClearEventLog()メソッド呼び出しのところなのでWSHスレッドで良いのかなと。
VBSなら ClearEventLog() でイベントログを削除出来るはずなんですけど
perlでやろうとするとエラーになるので何故かと思って。(perl使うなって話はなしで)

87:デフォルトの名無しさん
04/11/07 16:06:26
>>86 (>>83)
おまえ人の話聞いてないだろ。もっと >>85 の言ってることちゃんと考えろや。

foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}

$objEvent が undefined だから
# PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
になるのは当たり前だろ。


88:83
04/11/08 00:18:45
>>87
foreach の ( ) の中を @colLogs としても同じく "undefined value" とエラーがでます。
@$colLogs とすると実行は出来たのですが foreach の中の処理をしてくれません。(実行しても何も起こらない)
WMIの呼び出しが間違っているんですかね?
perlでWMI扱う情報がweb上にほとんどなく、
どうすればいいのかよくわからないので知恵を貸してください。

追加で質問なんですが、文字コード/改行コードはEUC-JP/CRLFでよろしいんですか?

89:83
04/11/08 00:25:04
ちなみにwebで見つけたVBでログをクリアする方法です(バックアップする処理も含まれていますが)
perlへ移植するにはどうすればよいでしょう

----------------------------------------------------------------
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate,(Backup)}!\\" & _
     strComputer & "\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery _
  ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

For Each objLogfile in colLogFiles
  objLogFile.BackupEventLog("c:\scripts\" & strBackupName & _
    "_application.evt")
  objLogFile.ClearEventLog()
Next

90:デフォルトの名無しさん
04/11/08 06:13:37
>>89
SQL使える人ならできるだろ

91:85
04/11/08 06:28:52
>>83
できたぞ。喜べ。
検索キーワードは「"Win32::OLE" コレクション」。
OLEの世界のコレクションはperlの世界では単なるポインタなので、
そのままではループをまわせない。
それをどうやって扱うのか?
専用のWin32::OLE::Enumモジュールを使えばいいらしい。

以下コード。

use Win32::OLE;
use Win32::OLE::Enum;

$strComputer = ".";
$objWMIService = Win32::OLE->GetObject(
 "winmgmts:{impersonationLevel=impersonate,(Backup)}!\\\\".
 "$strComputer\\root\\cimv2");
$colLogFiles = $objWMIService->ExecQuery
 ("Select * from Win32_NTEventLogFile where LogFileName='Application'");
$enum = Win32::OLE::Enum->new($colLogFiles);

while (defined($item = $enum->Next)) {
 $item->BackupEventLog("c:\\scripts\\test_application.evt");
 $item->ClearEventLog();
}


92:デフォルトの名無しさん
04/11/08 14:20:32
すげー

93:デフォルトの名無しさん
04/11/08 18:03:32
結論、VBS使え。

94:83
04/11/10 10:39:32
>>91
おおぉお!ありがとうございます!感動して目の前が潤んでいます
perlのポインタの扱いについてよく理解できてませんでした。
精進します ありがとうございました

95:デフォルトの名無しさん
04/11/17 11:36:35
JScriptから、INIファイルを読みたいのですが何かいい方法はないでしょうか?
Win32APIでいうならgetPrivateProfileStringみたいなのを探しています。
よろしくお願いします。

96:デフォルトの名無しさん
04/11/17 18:02:53
素直にFSOでテキストファイル処理してもたいした手間じゃないと思うけど。

97:デフォルトの名無しさん
04/11/18 01:18:26
ウィンドウの無いプロセスを終了→起動させたいのだけど、
終了のさせ方がわかりません。ウィンドウがあれば、
>>72でできそうなんですが。

98:デフォルトの名無しさん
04/11/18 02:34:30
>>97
WMI を使う。
URLリンク(www.microsoft.com)


99:97
04/11/20 01:43:21
>>98 有難う! と言いたいのですが、WSHでないのが残念! です。

100:デフォルトの名無しさん
04/11/20 03:18:16
そいつは残念だ。

101:デフォルトの名無しさん
04/11/22 15:07:28


102:デフォルトの名無しさん
04/12/27 21:23:04
 


103:デフォルトの名無しさん
05/01/12 07:48:35
msgbox("新年あけましておめでとうございます")

104:デフォルトの名無しさん
05/01/12 17:42:38
質問スマソ。WSHでIEオブジェクトを扱った時、ページ内のJavaScript Functionって
呼べないのかな・・

105:デフォルトの名無しさん
05/01/12 23:23:14
IEオブジェクトはWindows 2000である条件のもとだと使えネェな。
といってもその条件が特殊だからあんま意味ないか。

106:デフォルトの名無しさん
05/01/12 23:37:41
>>104
ページ内のスクリプト各関数は
大抵ボタンやリンクのonClickなんかに関連づけられてるから
そのイベントをfireEventするってのは?




107:デフォルトの名無しさん
05/01/21 00:49:26
すみません、全くの初心者なんですが、Wordのマクロから、
別のところに保存してある.vbsファイルを実行したいのです。
(要はWordで今選択している単語を、
コピーして別のアプリのウインドウに貼付けしたい)
Wordのマクロでとりあえず
Selection.Copy
でコピーはできたのですが、その後、
(1)別のアプリの起動
(2)そのアプリへの貼付け
がどうやるかわかりません。
どなたかどうぞよろしくお願いします。

108:デフォルトの名無しさん
05/01/21 00:57:43
shell
sendkey

109:デフォルトの名無しさん
05/01/21 00:58:57
>107
WScript.Run
Sendkey

110:デフォルトの名無しさん
05/01/21 01:15:59
WSHがマルチスレッドに対応!
かと思って
ぅぉ
っと声を上げてクリックしてしもたorz

111:デフォルトの名無しさん
05/02/25 06:44:32
スレリンク(hosp板:14-番)
このスレッドの14番、15番は、
URLリンク(www.roy.hi-ho.ne.jp)
ここで、公開されているスクリプトです。
このスクリプトを変形して、
フォルダ内(1層でいい)のファイル名+サイズをテキストに書き出したいです。
ツリー構造はいりません。
私は、シェルうんぬんでわけがわからなくなりました。
虫のいい話ですが、どなたかお助け下さい。

112:デフォルトの名無しさん
05/02/25 07:05:15
>111
ややこしいと思うならshellを使わずにD&Dのみで作ればいいんじゃない?
ツリー構造いらないならそんなに難しいものでもないが。

113:111
05/02/25 07:18:11
>>112
これを機会にWSHを身に着けたいんです。

114:デフォルトの名無しさん
05/02/25 07:27:01
|д・)つC:\>tree TARGET_DIR /a /f > OUT_FILE

115:111
05/02/25 08:00:18
どうも有り難うございます。 >>114
つーか、私が最終的にやりたい事は、
ターゲットのフォルダに、
なっち.jpg 2.100 KB
あやや.mp3 45.777KB
つんく.txt 300KB
 ‥‥
とあったら、別のフォルダに、
なっち.jpg 2.100
あやや.mp3 45.777
つんく.txt 300
 ‥‥
とゆう名の0KBのテキストファイルを作りたいんです。
これを1発でやるには、WSHが最適だと思うのですが、どうでしょう?

116:デフォルトの名無しさん
05/02/25 10:02:49
>>115
そうですね。そう思います。

117:114
05/02/25 10:07:24
ちゃんと読んでなかった。流して。
そんなに難しいことじゃないので、そのうち自己解決するでしょう。
あと、どこがわからないのかを書くといいと思う。

118:111
05/02/25 10:08:13
URLリンク(www.roy.hi-ho.ne.jp)
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
これは、1行目でWSHShellの変数の宣言をしてから、セットしてるのに、

スレリンク(hosp板:14-番)
Dim sLine,sRootDir,sOutFile
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
これは、Fs、Shellを変数の宣言をしないでセットしてるのが疑問です。

119:111
05/02/25 11:08:25
スレリンク(hosp板:14-番)

Search oRootDir.Items.Item 'oRootDir.Self 'Win2000の場合

'はレム文の始まりだと思うけど、何で1行に2つあるのか、わかりません。

120:111
05/02/25 11:24:41
つーか、大昔にクイックCをちょこっとだけ、かじった事があるんですが、
始めから、
WScript.Echo "終了"
ここまでが、メイン関数
Sub Search(obj)
ここから最後までが、呼ばれる関数ですよね?
で、
Search oRootDir.Items.Item 'oRootDir.Self 'Win2000の場合
ってことは、Win2000以外の場合は、Search(obj)を使わない、って事ですか?

121:デフォルトの名無しさん
05/02/25 12:36:50
>>118
BASICは変数宣言しなくてもいいのです。

>>119-200
Win2000の場合は
Search oRootDir.Self
にしろって意味です。

122:401
05/02/25 23:26:19
>>121
そうですか、レス有り難うございます。

スレリンク(hosp板:14-番)
つーか、誰かこのスクリプトを削って、
フォルダ内(1層でいい)のファイル名+サイズをテキストに書き出すのみのスクリプトを書いてくれないかな?
複雑すぎてわかりません。

123:デフォルトの名無しさん
05/02/26 00:02:25
>>122

Set fso = CreateObject("Scripting.FileSystemObject")
Set src = fso.GetFolder(InputBox("コピー元フォルダ"))
Set dest = fso.GetFolder(InputBox("コピー先フォルダ"))
For Each f In src.Files
Set ts = dest.CreateTextFile(f.Name & " " & f.Size, False)
ts.Close
Next


124:111
05/02/26 01:49:25
>>123
うわあー、すばらしい、有難うございます。 感謝感謝です。
これで、HDDの整理に取り掛かれます。 感激です。

125:111
05/02/26 22:00:52
すみません、更なるお願いです。
>Set src = fso.GetFolder(InputBox("コピー元フォルダ"))
コピー元フォルダを自分で入力するのが面倒。マウスだけで入力したい。

>Set dest = fso.GetFolder(InputBox("コピー先フォルダ"))
これも面倒。自動で、C:\COPYフォルダ作りそこに入れて欲しい。
あと、ターゲットのフォルダに、
なっち.jpg 2.100 KB
あやや.mp3 45.777KB
つんく.txt 300KB
 ‥‥
とあったら、別のフォルダに、
なっち 2.100
あやや 45.777
つんく 300
 ‥‥
と、元のファイルの拡張子は省略して欲しい。
どうでしょうか?

126:デフォルトの名無しさん
05/02/26 22:57:43
>>125
「自分で入力するのが面倒。マウスだけで入力したい。」という君に
URLリンク(www.vector.co.jp)

「これも面倒。自動で、C:\COPYフォルダ作り」という君に
URLリンク(www.vector.co.jp)


127:111
05/02/26 23:09:58
URLリンク(www.roy.hi-ho.ne.jp)

Set Shell=Wscript.CreateObject("Shell.Application")
Set f=Shell.BrowseForFolder(0,"フォルダを選んでください")
MsgBox f.Items.Item.Path '選択したフォルダ名を表示

これを試してみると、2行目、文字1で、引数の数が一致していません。または不正なプロパティをしていしています。
'Shell.BrowseForFolder'  コード、800A01C2 ソース、VBScript 実行時エラー
となってしまいます。

128:111
05/02/26 23:11:45
WSHで、お願いします。 >>126

129:111
05/02/26 23:21:27
つか、>>127は解決しました。2行目が間違いでした。
Set f=Shell.BrowseForFolder(0,"フォルダを選んでください",0)
引き続き、>>125をお願いします。

130:111
05/02/26 23:50:16
>>123さんのソースをいじって、
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell=Wscript.CreateObject("Shell.Application")
Set MOTOf=Shell.BrowseForFolder(0,"コピー元フォルダを選んでください",0)
Set dest = fso.GetFolder(InputBox("コピー先フォルダ"))
For Each f In MOTOf.Files
Set ts = dest.CreateTextFile(f.Name & " " & f.Size, False)
ts.Close
Next
とやってみました。コピー先フォルダの入力までは出来るんですが、
それ以後、エラーが出ます。
行5、文字1、オブジェクトでサポートされていないプロパティまたはめそっどです。
'MOTOf.Files' コード、800A01B6 ソース、VBScript 実行時エラー
となってしまいます。

131:デフォルトの名無しさん
05/02/27 00:02:07
>111
つか、これを機会にWSHを身に着けたい、と言うなら、
1日ぐらいは自分で悩んで手を動かしてぐぐってトライアンドエラーを繰り返してみなさい。
それでどうしてもわからなければ聞きに来れば誰か教えてくれるかも知れない。

132:デフォルトの名無しさん
05/02/27 00:04:24
copyFolder = "C:\COPY"
Set objShell = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(copyFolder) Then
fso.CreateFolder(copyFolder)
End If
Set objFolder = objShell.BrowseForFolder( 0, "フォルダ選択", 0 )
If objFolder is nothing Then
WScript.Quit
End If
Set file = fso.CreateTextFile( copyFolder & "\FILES.TXT", True )
Set objFolderItems = objFolder.Items
For Each f In objFolderItems
If Not f.IsFolder Then
file.WriteLine( f.Name & vbTab & f.Size )
bname = fso.GetBaseName(f.Path)
name = copyFolder & "\" & bname & " " & f.Size
fso.CopyFile f.Path, name
fso.DeleteFile(f.Path)
End If
Next

133:111
05/02/27 00:11:18
>>132
おお、有難うございます。ちゃんと動きました。 感謝します。

134:デフォルトの名無しさん
05/02/27 00:53:13
>>111
・・・勉強しろよ

135:111
05/02/27 02:02:36
>>134
へぇ、勉強します。 つか、なんで>>130がエラーになるのか説明出来ますか?

136:デフォルトの名無しさん
05/02/27 02:23:55
>135
ぐぐってる?
BrowseForFolderで取得できるFolderオブジェクトと
FileSystemObjectのFolderオブジェクトとは別のものだから。
BrowseForFolderのFolderオブジェクトにはFilesコレクションがない。

137:デフォルトの名無しさん
05/02/27 03:00:10
ここは111様にみんなで貢献するスレッドです。
勉強しろとかぐだぐだ言わずに、111様がお聞きになられたことに素早く答えましょう。

138:111
05/02/27 03:54:04
>>136
要するに、2つの系列の異なるオブジェクト間でのデータのやり取りが出来ない、ってことですか?
だから、>>132のプログラムは
苦肉の策として、テキストファイルにデータを書き出し、それを再読してる、と。
これってビジュアルベーシックの仕様ですか?

139:111
05/02/27 04:00:31
とはゆうものの、>>123さんと>>132さんには非常に感謝してます。

140:デフォルトの名無しさん
05/02/27 04:17:52
>138
違う。
Shell.ApplicationとScripting.FileSystemObjectにはたまたま同じ「Folder」という
名前のオブジェクトがあってよく似た構造をしてるけど、実際には全く違うもの。
だから当然使い方も違う。
BrowseForFolderのFolderオブジェクトはFilesというプロパティはない。
BrowseForFolderのFolderオブジェクトからはItemsというコレクションで取得して
FileかFolderかを判別する必要があるの。

FileSystemObjectから取得したFolderオブジェクトであれば>130でOKだった。

141:デフォルトの名無しさん
05/02/27 10:20:02
>>111
(ry

142:デフォルトの名無しさん
05/02/27 12:54:11
>>111
早く死ねよお前

143:デフォルトの名無しさん
05/03/01 06:12:31
WSHか…
仕事中にコソーリ、トランプゲーム組む時に使う程度かな
一見エディタ開いてコード書いてるわけだが、
んなことしてるなんざ、周りに言えないな…w

144:111
05/03/02 11:56:42
>>132
つか、これ俺の希望とは違うわ。

ターゲットのフォルダに、
なっち.jpg 2.100 KB
あやや.mp3 45.777KB
つんく.txt 300KB
 ‥‥
とあったら、別のフォルダに、
なっち 2.100
あやや 45.777
つんく 300
 ‥‥
と、拡張子のない、0BYTEのテキストファイルを作って欲しい
あと、元ファイルは消さない
です。

145:デフォルトの名無しさん
05/03/02 12:07:36
>>144
あなたの主張は理解できました。

がんばってくださいね

146:デフォルトの名無しさん
05/03/02 13:33:44
@echo off
for %%I in (%1\*.*) do type nul>"%2\%%~nI %%~zI"

147:デフォルトの名無しさん
05/03/02 19:38:35
ここは111様にみんなで貢献するスレッドです。
勉強しろとかぐだぐだ言わずに、111様がお聞きになられたことに素早く答えましょう。


148:デフォルトの名無しさん
05/03/02 23:27:09
132は111が戻ってこれないよう元ファイルだけじゃなくて
全てのファイルを消すようにしておきゃよかったのに。

149:デフォルトの名無しさん
05/03/03 01:26:38
どっかに「リクに答えてスクリプトを作るスレ」って無かったっけ?

150:デフォルトの名無しさん
05/03/03 02:22:33
ソフト板にあったような。スクリプト限定じゃないけど

151:デフォルトの名無しさん
05/03/03 02:51:37
「こんな」でスレ検索するとごろごろ引っかかるな。

152:デフォルトの名無しさん
05/03/03 04:52:36
スレリンク(tech板)
スレリンク(tech板)


153:デフォルトの名無しさん
05/03/05 06:11:22
すみません。Irvineスレで聞くべきなんですが、全く、反応が無いんです。
IrvineのRegistDateやSuccessDateのフォーマットって何なのかご存知の方、いらっしゃいますでしょうか?

154:デフォルトの名無しさん
05/03/11 03:28:55
ここ何のスレだっけ?

155:デフォルトの名無しさん
05/03/11 07:33:15
ソフト起動は以下のコマンドでやっているのですが。
ソフトを終了させるのは、どのように記述すればいいのでしょうか。

set ws = CreateObject("WScript.Shell")
ws.Run "   "

初歩的な質問で恐縮なんですが、よろしくお願いします。

156:デフォルトの名無しさん
05/03/11 07:44:47
>155
終了を待つことはできるけど、終了させることはできない。
SendkeysでALT+F4とか。

157:デフォルトの名無しさん
05/03/11 08:12:13
RunでなくてExec使えば?
Terminateあるよ。


158:デフォルトの名無しさん
05/03/11 10:34:44
>>156
>>157
ありがとうございます。それでやってみます。

159:デフォルトの名無しさん
05/03/12 03:31:39
IISでCGIの処理にWSHを使おうと思っているのですが、
スクリプトは正常に動いているのにURLから実行すると

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

CScript エラー: 設定の読み込みに失敗しました。 (アクセスが拒否されました。
)

というエラーが出てきてしまいます。
IIS側の設定でスクリプトマッピングは

拡張子 .XXX
実行ファイルのパス C:\winnt\system32\cscript.exe //nologo %s

みたいにしているのですが・・・


160:デフォルトの名無しさん
05/03/12 07:04:38
IUSR_XXXX
IWAM_XXXX
をAdministratorsに汁
URLリンク(www.users.gr.jp)
URLリンク(www.roy.hi-ho.ne.jp)



161:153
05/03/12 09:20:14
>154
どうもすみません。それでは質問を少し変えさせていただきます。
RegistDateというのは、ダウンロードの開始日時を表すdouble値なのですが、例えば、
38387.3075909722
というのが、Irvineの画面では
2005/02/04 07:22:55
と表示されています。
38394.2332972222
の場合が
2005/02/11 05:35:56
と表示されます。
おそらく、いつか特定の年月日からの経過秒数とかそういう値だと思うのですが、longでなくdoubleだというのが私には謎です。
日時を扱ったことのあるプログラマの方々、double形式が出てくることに何か心当たりはないでしょうか・・・?


162:デフォルトの名無しさん
05/03/12 09:34:35
(02/11 05:35) - (02/04 07:22) = 6日と22時間
(38394.23329) - (38387.30759) = 6.927


163:デフォルトの名無しさん
05/03/12 09:45:56
>161
date型は内部的にはdouble型で扱ってる。

dbldate=38387.3075909722
call msgbox(CDate(dbldate))

164:デフォルトの名無しさん
05/03/12 22:41:56
>>162-163
「何でdoubleを使ってるのか?」
という質問の答えになっていないと思う。


165:デフォルトの名無しさん
05/03/13 01:00:37
>>164
long だと 2038年1月18日までしか数えられないから。

こんなカンジの答えを希望?

166:161
05/03/13 06:08:57
CDate()で変換できるのですか!
うーん、奇妙!
ビット数の関係でdoubleなのでは、とは思っていましたが・・・
WSH(VBScript?)のdoubleって何バイトでしたっけ?
どうもありがとうございました。


167:デフォルトの名無しさん
05/03/13 10:28:55
>166
64bit

168:デフォルトの名無しさん
05/03/13 18:28:40
>>166
8バイト

169:デフォルトの名無しさん
05/03/16 05:41:48
自分で作ったアプリを WSH で制御しようとおもったら,
あらかじめ決められたインターフェイスを持った COM オブジェクトにしないとダメってことですか?
ってことは, C# で作っているアプリを WSH で制御できるようにするのは難しい?

170:デフォルトの名無しさん
05/03/16 05:55:19
HWNDを元に考えられる限りの窓遠隔操作機能を持ったCOMを誰か作ってくれないかな。


171:デフォルトの名無しさん
05/03/17 09:34:26
DynaCall

172:デフォルトの名無しさん
05/03/20 05:27:53
私、VBSしかわからないんですが、DateオブジェクトってどうしてJSでしか使えないんですか?

173:デフォルトの名無しさん
05/03/20 10:38:22
>>172
使えますよ。

<job>
<script language="JScript">
dt = new Date();
</script>
<script language="VBScript">
MsgBox dt.toUTCString()
</script>
</job>


174:デフォルトの名無しさん
05/03/20 16:02:18
>>43
XULのこと?HTAとは激しく別物かと思いますよ

HTAは通常のDHTMLを使ったWebページと同じくscriptタグ中に埋め込まれた
JScriptやVBSを呼び出すことで動作を表現する。

XULはそれ自体がXML準拠の構文でプログラムの動作を記述したもので
Mozillaのコアエンジンを通して実行される

と解釈してるが

175:デフォルトの名無しさん
05/03/26 14:25:44
>>173
同じ例に汁。

176:デフォルトの名無しさん
05/04/03 14:18:22
>>173
1年前の書き込みにレスしてどうする

177:デフォルトの名無しさん
05/04/03 14:19:04
アンカーミス>>733>>734

178:デフォルトの名無しさん
05/04/03 23:39:59
>177
いつへのアンカーなんだよw

179:デフォルトの名無しさん
05/04/04 08:56:57
このペースだと6年後くらいだな。

180:176
05/04/04 17:04:29
はずぃ>自分

181:デフォルトの名無しさん
05/04/05 23:58:34
取得した文字列の中身が全部 US ASCIIかどうかチェックしたいのですが、何かいい方法ないでしょうか?
CだとIsAscii()があるのですがWSHだとないので。。。。

182:デフォルトの名無しさん
05/04/06 13:13:55
>>181
アルファベットまたは数字、いくつかの記号
にマッチするか調べればいいんじゃない?

183:デフォルトの名無しさん
05/04/07 01:05:54
181だけど事故解決しました
面倒くさがらずに自分で作らないとだめだね
CHRつかうのとREGEXP使うのとどっちがパフォーマンスいいのかなあ
どぴゅ

184:デフォルトの名無しさん
05/04/09 00:02:19
 ( ゚д゚)ノ ハイ!質問です!

msgbox 2^64
を実行すると

1.84467440737096E+19
と表示されます。

15桁を超えるものは指数を使って表示されるようですが、整数で表示する事は出来ますか?




185:デフォルトの名無しさん
05/04/09 00:45:39
文字列に変換

186:184
05/04/09 00:50:30
>>185

文字列に変換は、Cstr() ですか?
Cstrは試して見ましたが、表示に変化はありませんでした。

それとも他の方法でしょうか?

187:デフォルトの名無しさん
05/04/09 01:43:09
多倍長整数使えよ

188:デフォルトの名無しさん
05/04/09 11:05:17
変換したら加工せにゃ

189:デフォルトの名無しさん
05/04/16 15:48:13
質問です。
あるフォルダ2つのファイルを比較します。
2つのフォルダの拡張子は例としてtxtとvbsです。
拡張子がちがう同じファイル名のファイルの
最終更新日時を比較します。ファイル名は大量の為特定できません。
比較してvbsのほうが日付が古ければ
エラーとしてテキストファイルに書き出す
という、vbsを作りたいのですがどなたかわかりますか?

190:デフォルトの名無しさん
05/04/16 16:23:36
>189
1.フォルダAとフォルダBがある。
  (フォルダAには拡張子vbsのファイルが、フォルダBには拡張子txtのファイルが入っている)
2.フォルダAからファイルをひとつ取り出す
3.フォルダBから拡張子を除いた部分の名前が同じファイルを探す
4.フォルダAとフォルダBのファイルの更新日時を比較して、
  フォルダAのファイルが古ければテキストファイルにエラーを出力。
5.フォルダAのファイルが無くなるまで2〜4を繰り返す

こういうフローでいいならできる。

191:デフォルトの名無しさん
05/04/16 17:52:35
>>190
できたら作ってくれませんか?m(__)m

192:デフォルトの名無しさん
05/04/16 17:56:50
>>191
逝ってよし。

193:デフォルトの名無しさん
05/04/16 21:48:46
            _,ノ‐''''''^^^¨¨¨⌒ ̄⌒^^''¬-、,_
        ._v-''¨`   .,,vー─-、    .,,vー─-、 .¨'ーu_
      _ノ'″     ./′    ¨┐ ./     ゙┐  .゙'┐
     ,/′      ./ ̄''''-¬,,,,__.ミ .i |,,,,___ ..)   ゙\
    ,/′     λ  |     ( ・ )| } .¨'ーu,,  |     \
   ./′      八,、-ミ.ノ‐''''''^^ ̄./¨レ       .人,_     ミ
  .,ノ′     ._ノU'   \_   ._,rlト冖へy   _/  ¨'‐u   .゙lr
 .,i′     /ー-v、.,,_   ¨^^¨´〔    〕.¨^^¨′  __.,、 ゙\.  {
 〕      ./′    .⌒'''''    \,,,,,,ノ′  v-ー'''¨ .λ  ゙┐ }    __________
 |      ノ  .λ──ー      }      __,,.,、v;(_)ー''  {..]  /
 |     :|   | |            .!      `         .}} < きがるにいってくれるなあ。
 }     .|   .U-:;:冖^ ̄       .|      ¨¨¨¨¨ ̄¨¨′ ミ}  \
 .|     .}       _,,,,,vvl''''¨¨|^^⌒|¨¨''''lvv,_         }     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ). .   〕    ,,、-v~|   .|   |   |   |''T^i-,,_      /
  .{     ). ., r'z::''''~゙(~~ ̄ ̄ ̄ ̄ ̄ ̄~~~`^^^^''''¬;;;_   ノ
   ミ.    `i,                         , `'' /
   ゙).    `i,                           .,ノ  λ
    \    },     ′               .  /   | |
     . \  \                   .  ,/     ∪
       (¨¨¨¨¨¨¨¨¨¨¨¨¨¨゙ソ冖干ア^^^^^^^^^^^^^r'′
      /~~~~~~~~i¬冖'''''7′   ∨¬ーーz─-―「\
     /     _ノ     厂¨丁¨¨フ    .ミ、    ゙\

194:デフォルトの名無しさん
05/04/17 16:22:30
質問です。
XPを使っているのですが、デスクトップからスタンバイに移行するのに
Dim objShell
Set objShell = WScript.CreateObject("Shell.Application")
objShell.Suspend
というコードを使えばできると書いてあったんですが、
スタンバイに移行できません。
このコードはXPでは使えないのでしょうか?


195:デフォルトの名無しさん
05/04/18 02:05:49
>>191
せっかくアルゴリズムまでは教えてくれてるんだからヘルプファイル読みながらでも
自分で作んなさいよ

196:191
05/04/20 11:13:48
行き詰まってつい・・・・。でも、なんとかできました。
190さん、ありがとう。

197:191
05/04/21 06:45:27
できたのですが、ファイルがたくさんある場合に今どれくらい
進んでいるのか進捗状況を表示させられたらいいと思っているのですが、
今何%進んでいるか(プログレスバー?)を表示させるには
どうすればいいですか?検索とかしてるんですが、みつかりません。
無理なんでしょうか?

198:デフォルトの名無しさん
05/04/21 07:12:56
>>197
プログレスバーは無理な希ガス

cscriptから起動させて、文字列出力させたら?

199:191
05/04/21 07:37:13
>198氏
朝早くありがとうございます。無理ですか・・・。
しかたないのであきらめます。

200:デフォルトの名無しさん
05/04/24 23:25:02
この文なんですが

mLocation = FindFromText( pos, html, "<td valign=""top""><strong>■", "</strong><br>", "" )
                                            ↑         ↑
矢印で示した部分のコンマに当てはまる文字列を変数posとhtmlにそれぞれ返すいうことですか?

201:デフォルトの名無しさん
05/04/24 23:53:46
>>200
書いたやつに聞けよ・・・


"<td valign=""top""><strong>■" と、 "</strong><br>" にはさまれている文字を
mLocation に返すみたいだが・・・

202:デフォルトの名無しさん
05/04/25 01:17:55
>201
そうだな
サンクス

203:デフォルトの名無しさん
05/05/08 14:40:39
すいません,VBScriptでレジストリ操作をしたいんですが,
あるレジストリキーが存在するかどうかを確認する方法はありますか?
RegReadで存在しない値を参照してエラーが出てしまうんですが
回避方法がわからないんです.

204:キー列挙ならWMIの方が楽だよ
05/05/08 15:02:33
>>203
On Error Resum Nextじゃダメ?

205:204
05/05/08 15:02:56
Resum→Resume

206:デフォルトの名無しさん
05/05/08 15:06:25
>>204
それはアレですよね,エラー無視.
最初はそれにしてたんですが
他の部分でエラー出たりすることもあるしどうかなぁ と.

というか,エラー無視で強引に進めるのって怖くありません?

207:デフォルトの名無しさん
05/05/08 15:09:39
ちなみにHTAを使って割りと複雑な操作をするんで
VBScript+HTAじゃないとダメっぽいです.

RegDeleteもサブキーがあるとエラーとかいう意味不明な仕様ですが
あれも何とかならんでしょうか。
今は oWsh.Run("reg delete "HKCR\.dat" /f) とこんな事をしてます.
でもreg.exeを使うと動作にタイムラグが・・・_| ̄|○

208:デフォルトの名無しさん
05/05/08 19:03:25
URLリンク(www.microsoft.com)


209:デフォルトの名無しさん
05/05/09 02:20:54
>>203
>>208 の手段でも良いし、条件分岐させれば良いだけじゃないのか。

210:デフォルトの名無しさん
05/05/09 03:00:18
>>208,209
そうですね,208ので全部消していくかな.
条件分岐っていうのは?
レジストリキーが存在するかどうかが調べられないのに
どう条件分岐させるんですか?

211:デフォルトの名無しさん
05/05/09 20:16:32
>>210
当初 >>203 で言っていた「あるレジストリキー」というのがいくらかでも
特定されたものであれば、レジストリキーの有無で条件分岐できるだろうと
いうこと。今回言っているように、どのようなキーが存在するかさえ不明で
あれば >>208 の示した手段がベター。

212:デフォルトの名無しさん
05/05/09 20:56:52
>206
エラーの出そうな操作の直後に
if err<>0 then
 〜
end if
でエラーの場合の動作を(msgboxとかexit doとか)。

213:デフォルトの名無しさん
05/05/09 23:32:34
>>211
すいません、レジストリキーの有無ってどうやって調べるんですか?

214:デフォルトの名無しさん
05/05/11 21:46:18
キーをオープンしてみれば分かる

215:デフォルトの名無しさん
05/05/11 21:46:36
>>213
そのくらい調べりゃすぐ分かるだろ
自分で調べろよ

216:デフォルトの名無しさん
05/05/14 10:59:37
すいません、キーはどうやってオープンすればいいのか…

217:デフォルトの名無しさん
05/05/14 18:33:51
キーを読み取ってみてエラーが発生したら分岐させる?

218:デフォルトの名無しさん
05/05/16 18:58:29
急速にスレの質が低下してまいりました

219:デフォルトの名無しさん
05/05/17 14:07:51
急速という割には、ペース遅すぎな希ガス

220:デフォルトの名無しさん
05/05/20 13:45:42
スレッドストッパーの俺様が来ましたよ

221:デフォルトの名無しさん
05/05/20 22:35:57
そこでスレッドリバイバーの漏れ様の登場ですよ

222:デフォルトの名無しさん
05/05/20 23:09:32
そこでハイパースレッディングな俺様の登場ですよ!!

223:デフォルトの名無しさん
05/05/23 01:18:56
おまいらちっとはwsh使へ

224:デフォルトの名無しさん
05/05/23 23:05:05
いやぷぅ(~o~)

225:デフォルトの名無しさん
05/05/24 23:12:11
バッチファイルと違って、タスクマネージャくらいからしか強制終了できないのが辛い。
あとは時間指定ぐらいですかね?
でも、環境によって実行時間が違ってくるから時間による終了は入れたくないなぁ。

226:デフォルトの名無しさん
05/05/25 02:25:23
バッチで強制終了させりゃいいじゃん。
バッチでできんことはWSHにやらせて。

227:デフォルトの名無しさん
05/05/25 19:59:47
向き不向きを考えて使えって事か。
そりゃそうか。

バッチファイルで何行も同じようなこと書きたくないなぁと思って
vbsならスマートかな、と思ってやってみたんですた。
まぁコマンドプログラム呼び出すたびにアクティブなウインドウがそっちに移るんで
それも困ってたトコなんでやっぱバッチのほうが向いてるかも

228:デフォルトの名無しさん
05/05/26 05:03:19
>225-227 cscript.exe もちゃんと使おうな

229:225=227
05/05/26 19:59:30
URLリンク(www.atmarkit.co.jp)
コマンドラインスクリプトのことかーーーー!!!
初めて知りました。
多謝でつ。


230:デフォルトの名無しさん
05/05/27 12:38:44
WSHは略だけど
CScriptも略してCSHとは言わんな

231:デフォルトの名無しさん
05/05/27 22:27:43
wshはwscript.exeの略じゃないし

232:デフォルトの名無しさん
05/06/01 13:26:13
JScriptでショートカットのファイルを吐き出したいです
どうすれば出来ますか?

233:デフォルトの名無しさん
05/06/01 14:11:25
>>232
URLリンク(www.microsoft.com)


234:デフォルトの名無しさん
05/06/01 15:51:26
>>233
ありがとう

235:デフォルトの名無しさん
05/06/01 18:24:40
一定の間隔をおいて標準入力をテキストファイルに出力するにはどーしたらいい?
おしえてー

236:デフォルトの名無しさん
05/06/01 22:30:52
>235
一定の間隔とは行間のことだと勝手に想像して書いてみる
んでもって言語の指定ないから勝手にJScript

var ROW_SPACES=1;
var a=WScript.StdIn.ReadAll().split("\r\n");
var f=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile("outfile.txt");
for(var i=0;i<a.length;i++){
f.WriteLine(a[i]);
for(var c=0;c<ROW_SPACES;c++)f.WriteLine();
}
f.Close();


237:デフォルトの名無しさん
05/06/02 01:45:36
間隔っつったらやっぱ時間じゃねえの?

while (!WScript.StdIn.AtEndOfStream) {
WScript.StdOut.Write(WScript.StdIn.ReadAll());
WScript.Sleep(10000);
}



238:236
05/06/02 02:20:20
>237
標準入力→テキストファイル、ってあるから
多分行間じゃないかなあと予測した
逆なら劣化ページャみたいな物と予測したのだけど

あと StdIn.AtEndOfStream() は試したら
存在しないみたいでエラー出たから ReadAll()

239:デフォルトの名無しさん
05/06/02 03:24:38
時間だとすると標準入力をテキストファイルに出力するのに一定の間隔を空ける意味が良く分からん

240:236
05/06/02 15:24:26
>239
そう、私もそれが言いたかった、ごめん_| ̄|○

てか、StdIn.AtEndOfStream てプロパティだから
括弧付けると駄目なのね…逝って来る_| ̄|○

241:デフォルトの名無しさん
05/06/03 17:59:10
ひょっとしてこういうことがしたいのかも

do while True
do while (not WScript.StdIn.AtEndOfStream)
WScript.StdOut.Write(WScript.StdIn.ReadAll())
loop
WScript.Sleep(5000)
loop


242:デフォルトの名無しさん
05/06/05 17:59:02
>241
ReadAllなのにAtEndOfStreamを待つのか?

243:デフォルトの名無しさん
05/06/05 20:51:29
tail -f
みたいな動きをさせるためじゃないかな

244:デフォルトの名無しさん
05/06/10 09:57:18
「デヴァイスマネージャ」の
「USBルートハブ」を無効にして
再度,有効にするという操作を
WSH にしてみてください

245:デフォルトの名無しさん
05/06/10 12:35:24
msgbox "USBハブのコード抜け"
msgbox "抜いたらもう一回挿せ"


246:デフォルトの名無しさん
05/06/10 12:50:41
>>245
【ご主人様】メイドさんスクリプト【ご命令を】
スレリンク(tech板)


247:デフォルトの名無しさん
05/06/10 14:01:26
Private Sub Command1_Click()

Dim UsbSet As SWbemObjectSet
Dim Usb As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim MesStr As String

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer
Set UsbSet = Service.ExecQuery("Select * From Win32_USBHub")

For Each Usb In UsbSet

MesStr = MesStr + "USBハブの名前:" + Usb.Description + vbCrLf + _
"USBハブのデバイスID:" + Usb.DeviceID + vbCrLf

Next

MsgBox "USBハブの情報です。" + vbCrLf + _
vbCrLf + MesStr + vbCrLf + "ですよ。"

Set UsbSet = Nothing
Set Usb = Nothing
Set Locator = Nothing
Set Service = Nothing

End Sub

248:デフォルトの名無しさん
05/06/10 14:03:22
Private Sub Command1_Click()

Dim UsbSet As SWbemObjectSet
Dim Usb As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim MesStr As String

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer
Set UsbSet = Service.ExecQuery("Select * From Win32_USBController")

For Each Usb In UsbSet

MesStr = MesStr & Usb.Name & vbCrLf

Next

MsgBox "USBコントローラの一覧です。" & vbCrLf & _
vbCrLf & MesStr & vbCrLf & "ですよ。"

Set UsbSet = Nothing
Set Usb = Nothing
Set Service = Nothing
Set Locator = Nothing

End Sub

249:デフォルトの名無しさん
05/06/10 14:10:00
URLリンク(www.microsoft.com)


250:デフォルトの名無しさん
05/06/10 14:44:59
>>244
UWSC使ってみ

URLリンク(www.h7.dion.ne.jp)


251:デフォルトの名無しさん
05/06/15 10:03:13
ご存知の方いらしたらご指導お願い致します

var oShell = WScript.CreateObject("Shell.Application");
var oFolder = oShell.NameSpace("fURLリンク(192.168.*.**)保存/");

var desktop = oShell.NameSpace(0);
var objFolderItems = desktop.Items();
for(var i = 0; i < objFolderItems.Count; i++) {
var ofitem = objFolderItems.Item(i);
if(ofitem.Name == "日報.xls") {
oFolder.CopyHere(ofitem);
WScript.Sleep(6000);
break;
}
}

日報.xlsをサーバーにFTPを使ってコピーするプログラムを作成しました
前日の同名ファイルに上書きして毎日保存しているのですが
ファイルの上書き確認ダイアログが出てしまうの非表示にして自動的に
上書きしたいのですが、よろしくお願い致します。

252:デフォルトの名無しさん
05/06/15 10:17:31
ふつうにftpコマンド使った方がよくね?

253:デフォルトの名無しさん
05/06/15 10:47:54
>>252
というと確認ダイアログをちゃんと出したほうが良いということでしょうか?
一応、転送終了後にファイルの更新日時や内容を軽くchkしていますので
サーバー側で定期的に別フォルダにバックアップしているので、間違いで
上書きしてもとりあえず問題ないのです


objFolder.CopyHere vItem, [vOptions]
FOF_NOCONFIRMATION 0x0010 上書きしますかとか聞いてこなくなる

oFolder.CopyHere(ofitem, 0x0010);
oFolder.CopyHere(ofitem , 0x0010);
こんなのを見つけて直してみても直りませんね

254:252
05/06/15 11:35:37
>>253
いあ、ftpでファイルをアップするだけの用途なら、
-sオプション付けて、動作指定したファイル記述するだけで良さそうだなー

と思っただけ

255:デフォルトの名無しさん
05/06/15 12:30:00
なるほどそういう事でしたか、コマンドプロンプトでやるのでしょうか
wshで記述できるのでしょうか?
勉強不足でして、バッチファイルの作り方も危ういので
>>251
で晒したソースもよそ様のサンプルを使って作成したので理解度0に近いのです

256:デフォルトの名無しさん
05/06/15 13:08:51
コマンドプロンプトでもwshでも可能

ftpの-sオプションについては↓みれば大体分かると思う
URLリンク(www.atmarkit.co.jp)

257:デフォルトの名無しさん
05/06/15 20:02:10
その前に、ftpコマンドの成功、失敗の判定をスクリプトやバッチファイルでできるのか?

258:デフォルトの名無しさん
05/06/15 20:20:50
もう一回アクセスしてファイルの日付がアップロードした日時になってるかとか
サイズがローカルのものと同じになっているかとかをチェックすれば出来なくはない

259:251
05/06/16 10:07:09
報告遅くなりまして申し訳御座いません
それと皆様に助言頂き感謝しております。
ftpの-sオプションについて教えて頂いたサイトを目下勉強中ですが
構文エラーが出てしまいうまくいかない状況です。しばらくサンプルを
作成して試してみますので、どうしても分からなかったら又ご助言を
よろしく御願い致します



260:デフォルトの名無しさん
05/06/16 14:20:45
おしごとでWSH使ってるんですが、
WSHのファイルインクルードって vbs しかインクルードできんのですか?

<script langage=VBScript src="aaaaaaa.vbs"/>

これでWSHスクリプトをインクルードしようとすると最初のJOBタグでエラーになってこのやろうちくしょう。

vbsでファイルインクルードがあればいいんですが・・・。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4306日前に更新/212 KB
担当:undef