全3件 (3件中 1-3件目)
1
UWSCスクリプトを作るとき、最初にpublic DEBUG=trueなんておまじないを付けているのは私だけではないはず。でも、これってtrue/falseを設定し忘れたりすると、結構めんどいことになることもあります。ECサイトで思いがけずポチっちゃったりして。で、自動でデバッグ中かどうかを返す関数を作ってみました。デバッグ中かどうか、なんてどうしてわかるの? という方はスクリプトを読んでください。IsInDebug.uwsif Get_Uwsc_Name="IsInDebug.uws" msgbox( IsInDebug() )endiffunction isInDebug() with createoleobj("WbemScripting.SWbemLocator") getOleItem(.ConnectServer.ExecQuery( "SELECT * FROM Win32_Process" )) endwith ParentPid="" ParentName="" for process in All_Ole_Item if process.processid=status(getid(GET_THISUWSC_WIN), ST_PROCESS) ParentPid=process.ParentProcessId break endif next for process in All_Ole_Item if process.processid=ParentPid ParentName=process.Name ParentName=copy( ParentName, 1, length(ParentName)-4 ) endif next result=!(!pos( ParentName, MyEditors ))textblock MyEditorssakura mery code atomendtextblockfendスクリプトの冒頭でコールしておけば、必要な時if IsInDebug()とかで制御できます。デバッグ中かどうかの判定は、エディタから起動したかどうか。ただそれだけ。テキストブロックに使いそうなエディタを書いておけば大抵用は足りると…。
2020.12.19
コメント(0)
powershellでタプルが使えることに気づいたので、思いついた。$n=72$x=$y=1;1..$n|%{$x,$y=$y,($x+$y)};$x #fib(72)を求める#806515533049393 を出力
2020.12.10
コメント(0)
文字コード表上で次の文字を取得したいことってありますね。何かテキスト処理をするとき、そのファイルにない文字を区切り文字に使ったり。textencodingほにゃららgetbyteとかなんとか結構めんどかったんだけど、試行錯誤でできました。powershell内部ではUnicodeで処理しているとかで、文字コード表はUnicodeのものになります。get-NextCodeCharfunction get-NextCodeChar( $c,[switch]$Decrease ){ if ( !$c ){ $c=$input } if ( !$c ){ return } if ( $Decrease ){ $inc=-1 }else{ $inc=1 } $result="" $c -split ""|%{ try{ $result+=[string]([char]([int]([convert]::ToChar($_))+$inc)) }catch{} } return $result}パイプや引数で文字を渡すとコード表で次の文字を返します。2文字以上の文字列なら、それぞれを一つずらしたものをくっつけて取得できます。-Decrease をつけて呼び出すと、「次」でなく一つ手前の文字になります。
2020.12.02
コメント(0)
全3件 (3件中 1-3件目)
1

