2007.03.06

WSHで ワンライナー

WSH って、標準入力からスクリプトを流し込みできないもんだろうか、と思っていたのだが、
以下のスクリプトをあらかじめ用意しておけば、近いことができる。

(StdInExec.vbs として保存)

Option Explicit
Dim s
Dim hStdIn

Set hStdIn= WScript.StdIn
s= hStdIn.ReadAll
Execute(s)
hStdIn.Close

例えば、以下のように使う。

echo WScript.Echo DateAdd("d", 1, Date)'明日の日付を表示|CScript StdInExec.vbs
echo WScript.Echo eval("2^4-1")'動的計算|CScript StdInExec.vbs
echo Set objWMIService= GetObject("winmgmts:"):For Each objProcess In objWMIService.InstancesOf("Win32_process"):WScript.Echo objProcess.Name:Next'Process一覧(力技)|cscript stdinexec.vbs

SQLServerなんかと組み合わせたりして、

xp_cmdshell 'echo WScript.Sleep(3000)|CScript //Nologo C:\work\StdInExec.vbs' --3秒待つ


馬鹿ですか。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ichikawa