[PukiWiki]
FAQ
http://winscript.s41.xrea.com/wiki/index.php?%5B%5BFAQ%5D%5D

[ リロード ]   [ 新規 | 編集 | 差分 | 添付 ]   [ トップ | 一覧 | 単語検索 | 最終更新 | バックアップ | ヘルプ ]


最新の10件
2015-05-312012-01-192012-01-162011-12-302010-07-022008-03-252007-02-072006-09-25

Windows Script FAQ

実行環境

反応しなくなったスクリプトを停止させるには?

1. タスクマネージャを開き、CPUを占有しているWScript.exeもしくはCScript.exeを停止させます。

反応しなくなったWMIを使用したスクリプトを停止させるには?

1. 通常のスクリプトと同様にタスクマネージャを開き、WScript.exeもしくはCScript.exeを停止させます。

2. WMIサービスがCPUを占有している場合は、管理ツールからWMIサービスを再起動します。

WSH一般

クリップボードの文字列を読み込むには?

1. InternetExplorer?オブジェクトを使います。 (ただし、インターネットゾーンのセキュリティ設定によっては動作しません)

 ' [VBScript]
 Set Ie = WScript.CreateObject("InternetExplorer.Application")
 Ie.Navigate "about:blank"
 Do While Ie.Busy
 	Wscript.Sleep 10
 Loop
 'クリップボードの文字列を取得。
 sClipBoard = Ie.Document.parentWindow.clipboardData.getData("text")  
 Ie.Quit
 MsgBox sClipBoard 

2.Officeがインストールされていれば下記でも出来ます。

 Set uf=CreateObject("Forms.Form.1")
 Set tb=uf.Controls.Add("Forms.TextBox.1").Object
 tb.MultiLine=True
 If tb.CanPaste Then
  tb.Paste
  WScript.StdOut.Write tb.Text
 End If
 Set tb=Nothing
 Set uf=Nothing

クリップボードに文字列を書き込むには?

1. InternetExplorer?オブジェクトを使います。 (ただし、インターネットゾーンのセキュリティ設定によっては動作しません)

 ' [VBScript]
 Set Ie = WScript.CreateObject("InternetExplorer.Application")
 Ie.Navigate "about:blank"
 Do While Ie.Busy
 	Wscript.Sleep 10
 Loop
 'クリップボードに「あいうえお」という文字列を書き込む。
 Ie.Document.parentWindow.clipboardData.setData "text","あいうえお"
 '以下のようにすると、クリップボードの中身を消去できます。
 'Ie.Document.parentWindow.clipboardData.clearData "text"
 Ie.Quit

2.Officeがインストールされていれば下記でも出来ます。

 Text=WScript.StdIn.ReadAll
 '
 Set uf=CreateObject("Forms.Form.1")
 Set tb=uf.Controls.Add("Forms.TextBox.1").Object
 tb.MultiLine=True
 tb.Text=Text
 tb.SelStart=0
 tb.SelLength=tb.TextLength
 tb.Copy
 Set tb=Nothing
 Set uf=Nothing

アプリケーション

アプリケーションを起動するには?

1. WshShell? オブジェクトの Exec メソッドを使います。

 ' [VBScript]
 Set WshShell = CreateObject("WScript.Shell")
 Set oExec = WshShell.Exec("filename")

 // [JScript]
 var WshShell = new ActiveXObject("WScript.Shell");
 var oExec = WshShell.Exec("filename");

2. WshShell? オブジェクトの Run メソッドを使います。

 ' [VBScript]
 Set WshShell = WScript.CreateObject("WScript.Shell")
 WshShell.Run "filename"

 // [JScript]
 var WshShell = new ActiveXObject("WScript.Shell");
 WshShell.Run("filename");

アプリケーションを終了するには?

1. WshScriptExec? オブジェクトの Terminate メソッドを使います。

 ' [VBScript]
 Set oExec = WshShell.Exec("filename")
 oExec.Terminate

 // [JScript]
 var oExec = WshShell.Exec("filename");
 oExec.Terminate();

2. すでに起動しているアプリを終了。

 Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
 Set Service = Locator.ConnectServer
 
 Set oProcs = Service.ExecQuery _
 ("Select * From Win32_Process Where Description=""終了したいプロセスのexe名.exe""")
 For Each oProc In oProcs
 	oProc.Terminate
 Next

文字列処理

配列

配列をソート(整列)するには?

ここでは一例としてもっとも簡単な「バブルソート」を例示しておきます。GetSortedArray?関数に一次元配列を引数として与えると、ソートされた配列を返します。

 Function GetSortedArray(arrArray)
 	aTemp=arrArray
 	For I = 0 To UBound(aTemp)
 		For J = 0 To I
 			If aTemp(I) < aTemp(J) Then
 			'↑<にすると昇順、>にすると降順になる
 				tmp = aTemp(I)
 				aTemp(I) = aTemp(J)
 				aTemp(J) = tmp
 			End If 
 		Next
 	Next
 	GetSortedArray = aTemp
 End Function

ファイルシステム

ネットワーク

Webからファイルをダウンロードするには?

Msxml2.XMLHTTPおよびAdodb.Streamを使って次のように記述します。

 sSource = "http://www.roy.hi-ho.ne.jp/mutaguchi/image/wshlabs.png" 'ダウンロード元
 sDest = "test.png" 'コピー先 
 Const adTypeBinary = 1
 Const adSaveCreateNotExist = 1
 Const adSaveCreateOverWrite = 2
 Set oHTTP = WScript.CreateObject("Msxml2.XMLHTTP")
 oHTTP.Open "GET", sSource, False
 oHTTP.Send
 Set Stream = WScript.CreateObject("Adodb.Stream")
 Stream.Type = adTypeBinary
 Stream.Open
 Stream.Write oHTTP.responseBody
 Stream.Savetofile sDest, adSaveCreateOverWrite

Webからテキストファイルを取得し、文字列に代入するには?

 Dim s
 s = GetInternetTextFile("http://www.yahoo.co.jp","EUC-JP")
 Msgbox s
 '===== インターネットファイル取得処理 =====
 Private Function GetInternetTextFile(URL, sCode)
     Dim ado
     Set ado = CreateObject("ADODB.Stream")
     Call ado.open
     ado.Type = 1	'=== adTypeBinary
     Call ado.Write(GetHTMLSource(URL))
     ado.Position = 0
     ado.Type = 2	'=== adTypeText
     ado.Charset = sCode
     GetInternetTextFile = ado.ReadText
     Call ado.Close
     Set ado = Nothing
    End Function
 '===== HTMLソース取得処理 =====
 Private Function GetHTMLSource(URL)
     Dim xHTTP
     Set xHTTP = CreateObject("MSXML2.ServerXMLHTTP")
     Call xHTTP.open("GET", URL, False)
     Call xHTTP.send
     GetHTMLSource = xHTTP.responseBody
     Set xHTTP = Nothing
 End Function

レジストリ

サブキーを列挙するには?

WshShell?オブジェクトのReg*系メソッドには、レジストリキーのサブキーを列挙する メソッドがありませんが、WMIを使えば可能です。

 ' [VBScript]
 'HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorerキーに
 '含まれる、サブキーの一覧を表示します。
 Dim oReg, sParentKey, aKeys
 '定数の宣言。
 Const HKEY_CLASSES_ROOT = &H80000000
 Const HKEY_CURRENT_USER = &H80000001
 Const HKEY_LOCAL_MACHINE = &H80000002
 Const HKEY_USERS = &H80000003
 Const HKEY_PERFORMANCE_DATA = &H80000004
 Const HKEY_CURRENT_CONFIG = &H80000005
 Const HKEY_DYN_DATA = &H80000006
 '親キーの指定。
 sParentKey = "software\Microsoft\Windows\CurrentVersion\Explorer"
 'WMIのStdRegProvクラスを使用します。
 Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
 "!root/default:StdRegProv")
 'enumkeyメソッドを実行します。
 oReg.enumkey HKEY_CURRENT_USER,sParentKey,aKeys
 'aKeysにはサブキー名を格納した配列が返されます。
 MsgBox Join(aKeys,vbCrLf) 'Join関数を使って、サブキー一覧を表示します。

WSF

全角のコメントを記入したい。

WSFはXML形式で、全角文字を扱う場合は文字コードを指定しないとドキュメントを正しく認識しないので、先頭に以下の1文を加えます。

 <?xml version="1.0" encoding="shift-jis" ?>

WSCも同じくXML形式なので、同じ事が言えます。

XMLとしての構文チェックをしたい。

 対象ドキュメントの拡張子を「xml」へ変更

または

 ファイルをコピーしたものの拡張子を「xml」へ変更

いずれかの処理をした上でブラウザから閲覧します。ブラウザでエラーが出なければ、XMLの構文としては問題ありません。またWSCでも応用が利きます。


リロード   新規 編集 差分   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: Tue, 25 Mar 2008 07:44:22 JST (3255d)
Link: MenuBar(1880d) FrontPage(2427d)

Modified by Mutaguchi

"PukiWiki" 1.3.6 Copyright © 2001,2002,2003 PukiWiki Developers Team. License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
Powered by PHP 5.3.29

HTML convert time to 0.048 sec.