トップ «前の日記(2006-07-14) 最新 次の日記(2006-07-16)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2006-07-15

_ というわけで青山の近くに住んでるわけですが

青山=墓場

なるほど。完全に間違って覚えてました。というか、モスクワ駅前もまた青山なのか。であればむしろ思っているということですね。

#そういえば、何も読んでないとか言いながら超マシン誕生とか読んでるし。

_ 奥が深いMS

再現するパターンができたのでメモ。

追記:間違い

既知かどうかは知らない。MSDNを普通に読む限り、この動作はおかしい。

元はRuby on HTAだが、VBScript on WScript.exeでも再現したのでそっちの例。


Set w = CreateObject("WScript.Shell")
Set e = w.Exec("cmd.exe /c echo a")
r = ""
Do While e.StdErr.AtEndOfStream
  r = r & e.StdErr.Read(1)
Loop
WScript.echo r
rem wscript.exeがループする。

マシン速度などにも依存するかも知れないが、Execで実行したコマンドが標準エラーをさわらなかった場合、WshScriptExec#StdErrは、永遠のAtEndOfStreamプロパティが偽のままになる。だが、呼び出し側はどうやってそれを確認すれば良いのか?(追記:常識的にWshScriptExec#status != 0という判断はできるわけだが、なんかなぁ……)

WShScriptExec#StdErrにオブジェクトはアサインされている。おそらく、Read(1)が長さ0の文字列を返したかどうかで判断することは可能だろう。が、ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WEBDEV.v10.en/script56/html/wsMthRead.htm には戻り値の長さが0の場合がEOFだとはどこにも書いてない。サンプルは、AtEndOfStreamプロパティ検証ばかりだ。

それにつけても雷がすごかった。

期待してる人。最初のパイプが詰まるのはしょうがないとは思うが。hold one's breathで固唾を呑んで見守るという意味なのか。あきらめな、っていうことなのかな?

本日のツッコミ(全2件) [ツッコミを入れる]
_ なかだ (2006-07-15 23:55)

Do While not e.StdErr.AtEndOfStream<br>ですか?

_ arton (2006-07-16 00:26)

あ、そうか。上のリストはくるくるして当然ですね。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え