2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« VB6アプリやEXCEL VBAなどのWindowsアプリから標準入出力を使用する方法 | トップページ | コマンドラインで、空のファイルを作る、改行のない文字列を出力する。 »

2006年9月13日 (水)

unix tee擬似バッチファイル

標準入力を読んで、標準出力と標準エラーに出力します。

JScriptとVBScriptの2通りで。お好みで選んでください。

TeeHJS.CMD

@MSHTA.EXE "javascript:new ActiveXObject('WScript.Shell').SendKeys('%%{tab}');var fso=new ActiveXObject('Scripting.FileSystemObject');var StdIn=fso.GetStandardStream(0);var StdOut=fso.GetStandardStream(1);var StdErr=fso.GetStandardStream(2);while(!StdIn.atEndOfStream){var Char=StdIn.Read(1);StdOut.Write(Char);StdErr.Write(Char);}close();"

TeeVBS.CMD

@MSHTA.EXE vbscript:Execute("CreateObject(""WScript.Shell"").SendKeys ""%%{tab}"":Set fso=CreateObject(""Scripting.FileSystemObject""):Set StdIn=fso.GetStandardStream(0):Set StdOut=fso.GetStandardStream(1):Set StdErr=fso.GetStandardStream(2):Do While Not StdIn.atEndOfStream:Char=StdIn.Read(1):StdOut.Write(Char):StdErr.Write(Char):Loop:close:")

使用法

コマンドプロンプトでは、

MORE | Tee.CMD 2>ファイル | MORE

バッチファイル内では、

MORE | CALL Tee.CMD 2>ファイル | MORE

MORE | MSHTA.EXE ~~~ 2>ファイル | MORE

前後のMOREは、適宜、別のコマンドかリダイレクションに変えてください。

また、こういうバッチファイルの書き方もあります。

TeeHTA.CMD

@MSHTA.EXE "%~f0"
@GOTO :EOF
<script language=vbscript>
Set wShell=CreateObject("WScript.Shell")
wShell.SendKeys "%{tab}"
Set fso=CreateObject("Scripting.FileSystemObject")
Set StdIn=fso.GetStandardStream(0)
Set StdOut=fso.GetStandardStream(1)
Set StdErr=fso.GetStandardStream(2)
Do While Not StdIn.atEndOfStream
Char=StdIn.ReadLine(1)
StdOut.Write(Char)
StdErr.Write(Char)
Loop
close
</script>

使用法は同様です。

※SendKeys"%{tab}"は、フォーカスが非表示のHTAに移ることへの対策です。

« VB6アプリやEXCEL VBAなどのWindowsアプリから標準入出力を使用する方法 | トップページ | コマンドラインで、空のファイルを作る、改行のない文字列を出力する。 »