WSH の WshShell.Exec メソッドで得た標準出力の内容(StdOut)から最後の改行を削除するには、String.substring メソッドを使う
昨日のスクリプトで上手くいかなかった件が解決しました。最後の改行を取り除けば良いのだろうなというところまではわかっていたのですが、それがなかなか上手く行かず。http://www.kipwmi.com/fmbbs/wwwlng.cgi?print+200405/04050080.txt を参考に、substring メソッドによる位置指定で取り除くという方法で上手くいきました。
以下、昨日のスクリプトの完全版。
//usage: %0 .extension var WshShell = WScript.CreateObject("WScript.Shell"); var myExt = WScript.Arguments(0); var myExecAssoc = WshShell.Exec("cmd /c assoc " + myExt); var myOutAssoc = myExecAssoc.StdOut.ReadAll(); var myFtype = myOutAssoc.split("=")[1]; var myExecFtype = WshShell.Exec("cmd /c ftype " + myFtype); var myOutFtype = myExecFtype.StdOut.ReadAll(); if (myOutFtype==""){ var myCleanedFtype = myFtype.substring(0, myFtype.length-2); var myRegKey = "HKEY_CLASSES_ROOT\\" + myCleanedFtype + "\\Shell\\Open\\Command\\"; myOutFtype = myCleanedFtype + "=" + WshShell.RegRead(myRegKey); } WScript.Echo(myOutFtype);
以下、上手く行かなかった方法を列挙。