[過去ログ] PowerShell -Part 5 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(3): 2021/03/18(木)00:29 ID:/MpReTiX(1) AAS
前スレ
PowerShell -Part 4
2chスレ:tech

次スレは>>980が立ててね!!
876: 2021/12/16(木)21:09 ID:VSm+B60n(1) AAS
>>871
> is not a raw-bytes conduit to a file in PowerShell, unlike in cmd.exe.

Instead, PowerShell always decodes output from external programs (into .NET strings) before further processing (but not when printing directly to the display), based on the character encoding stored in [Console]::OutputEncoding.

Therefore, before your external-program call, you must (at least temporarily) set [Console]::OutputEncoding to match the actual character encoding used in your external program's output; e.g., [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
877
(1): 2021/12/16(木)21:15 ID:V72yjyE9(8/9) AAS
従来型のパイプラインを選べない時点で設計思想がおかしいんですよ
$(xxx) みたいな特殊表現によるパイプが提供されてしかるべき
というかPowerShellのパイプラインを特殊表現に閉じ込めるべき
878: 2021/12/16(木)21:56 ID:V72yjyE9(9/9) AAS
OutputEncodingとコードページがごっちゃになってるのもよくない
OutputEncodingをUTF8に指定したら、cmd /? で英語ヘルプが返されるようになってしまう
この挙動は、コマンドプロンプト上のchcp コマンドでコードページを変えたときのcmd /?の挙動と同じ
879: 2021/12/16(木)22:23 ID:ywwvfrpp(3/4) AAS
>>877
そもそも従来型のパイプラインは生バイト晒してたように聞こえるんだが、テキストモード(ascii)IOを忘れてないか

fopen等システムコールに行儀良く"b"フラグ渡してれば問題はないが、そうでない時にcmdはtypeや |を処理する際にコンソールのファント設定見に行く等奇怪な挙動をしてた
でもたまに制御文字をtypeして死んだり…

テキストモードを排除できれば可能かも
880: 2021/12/16(木)22:31 ID:ywwvfrpp(4/4) AAS
gnuとかのプログラムは今でもioモード切り替えフラグ付いてたりするね

生バイトが欲しければProcessInfoとかからstdin/stdout引っこ抜いてIO.BinaryWriterに渡すとか
881: 2021/12/16(木)22:47 ID:peIHdemY(1) AAS
文字列中に紛れたeof文字相当のバイトを見ても読み込みを続ける挙動は多分windows的には正しくないよな
そんな文字無くしてしまえ、と思うけど
882: 2021/12/17(金)06:27 ID:cFRRrt8D(1/11) AAS
wsl --helpのみっともない改行はUTF-16のL"\r\n"をテキストモードで出力するwslの変態行為がそもそもの原因だし

外部リンク:docs.microsoft.com
883: 2021/12/17(金)06:36 ID:cFRRrt8D(2/11) AAS
PowerShell固有のパイプラインに、|, >> を使うのをやめて
例えば $|, $ $>> のような特殊表現に閉じ込めてほしいんだが
今さら無理か
884: 2021/12/17(金)07:27 ID:cFRRrt8D(3/11) AAS
昔、MINGWのcatコマンドが0x0aを勝手に0x0d,0x0aへテキストモード変換する迷惑行為で人知れず苦しんだ人は多かったと思う
885: 2021/12/17(金)08:47 ID:+hqMWYwb(1) AAS
c標準ライブラリの"t"フラグはホスト側でよしなに変換してくれという表明だけど、たぶん行論理セパレータ\n↔\r\n変換してくれるやつくらいに考えてる人が多いんじゃねえかな
886: 2021/12/17(金)09:02 ID:z0PRPnA0(1) AAS
"t"はc規格には無いか、無指定の"w"フラグ等がテキストモードにデフォルトするというだけで
cっぽいopen関数備えてる言語(pythonとか)だと"b"との区別を意識させる為に"wt"とか受け付けるけど
887: 2021/12/17(金)09:38 ID:cFRRrt8D(4/11) AAS
マイクロソフト謹製アプリが率先してやらかしてるってところが肝
888
(1): 2021/12/17(金)10:04 ID:YK+z10uu(1/6) AAS
それと直接関係あるかは再現しないのでちょっと不明
>>871はconhostをsjisに設定してない?
889: 2021/12/17(金)10:07 ID:YK+z10uu(2/6) AAS
v7.2/wt(preview)
[console]のioデフォルトはutf8(=旧nobom)になってた
890
(1): 2021/12/17(金)10:09 ID:cFRRrt8D(5/11) AAS
>>888
CP932は日本語OSの規定の設定だよ
再現しないとか何言ってるのかわからない
作られたファイルaaa.txtの文字コードの確認さえできないんなら回答しなくていいよ
891
(1): 2021/12/17(金)10:14 ID:YK+z10uu(3/6) AAS
>>890
原因分かってんのなら変えなよ…
win10パッケージ版(us_en)に日本語パック追加で入れるとデフォルトはこうなると思う
892: 2021/12/17(金)10:27 ID:YK+z10uu(4/6) AAS
あとwin11非対応マシンでms配布のロールバック用iso(非ローカライズ版)イメージで再インストール→日本語パック選択した人も該当するはず
oem版はsjisが多いと思う
893
(1): 2021/12/17(金)10:32 ID:cFRRrt8D(6/11) AAS
>>891
Windows Terminalでも起きるんだからconhost.exeは関係ないぞ
894: 2021/12/17(金)10:42 ID:YK+z10uu(5/6) AAS
>>893
conhostも[console]もシステムのcpから拾ってくる
wtに関してはsetting.jsonからも設定できる
様々なエンコーディング切り替えられないソフトが混在してて、グローバルに切り替えるのがためらわれるならば
ps/cmd>ms-settings:~(スタート>歯車のやつ)からアプリ毎にエンコーディング設定するのがおすすめ
895: 2021/12/17(金)10:56 ID:cFRRrt8D(7/11) AAS
エンコーディング機能にAutoDetectがあれば良いだけなんだがな
簡単なことを難しくしてしまうのは無能の証なんだよ
PowerShellみててつくづくそう思う
896
(1): 2021/12/17(金)11:26 ID:aYaid5rJ(1) AAS
オートディテクトはギルティ、頭抱える事になるぞ
素性の良いデータで大体動けばいいような自動化なら、古き良きnkfでも噛ませ
ポータブルにしたいならPSGalleryに純pwsh実装のモジュールが転がってる、クオリティは知らん

i/oエンコーディングをシェルレベルで扱えるのはバベルの塔なwindows環境では重宝する
897: 2021/12/17(金)11:27 ID:cFRRrt8D(8/11) AAS
PowerShellのパイプラインそれ自体がすでに低速なのに文字コードの自動判定すらないとか無能すぎでしょ
898: 2021/12/17(金)11:29 ID:cFRRrt8D(9/11) AAS
>>896
古き良きnkfを噛ませられないからもめてるですよ
パイプでnkfに入力された時点で汚染されてるから
時すでにお寿司なのがPowerShell
899
(1): 2021/12/17(金)12:26 ID:YK+z10uu(6/6) AAS
リダイレクトの挙動が不自然に感じるのは、ホストの概念で躓いてるのでは
ホストはコンソールとも限らないし、coreバンドルのコンソールホスト以外にもiseやらaspやら色々あるわけで
なんで設定が分かれてるのか考えるべき
900
(1): 2021/12/17(金)12:35 ID:cFRRrt8D(10/11) AAS
>>899
別にいろんなホストがあってもいいんだよ
昔ながらの標準入出力と棲み分けして提供すべきだったってこと
だけど、十把一絡げにしたせいで昔ながらのパイプ処理まで低速になってしまった
901: 2021/12/17(金)12:48 ID:BQzVpcl1(1) AAS
>>900
>>856からrelatedで飛べる
外部リンク:github.com
で提案されてるような構文はあったら確かに便利かと思う

もちろんcoreの設計とは相容れないから、追加モジュールかwindows pwsh(新)でリリースすることになると思うけど
イイね押しとこう
902: 2021/12/17(金)13:16 ID:cFRRrt8D(11/11) AAS
むしろPowerShelll固有の構文を新しい構文に移行させてほしいくらいだわ
パイプラインにテキスト縛りがある時点でPowerShellは欠陥品なんだよ
903
(1): 2021/12/29(水)20:28 ID:/Pws6ORw(1/4) AAS
PowerShellは以下コマンドをFunction化できない。
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932); $OutputEncoding = [Text.Encoding]::GetEncoding(932);

Function内でしかスコープが有効でないことが原因。$global:OutputEncodingを変えてもダメ。
なのでchcpコマンド相当のことをやろうとしたら手入力するしかない

なんというか、PowerShellは他のシェル言語でできいることができない残念なシェル言語。
オワコン化待ったなし
904
(1): 2021/12/29(水)20:49 ID:/Pws6ORw(2/4) AAS
([console])::OutputEncodingをFunction外にも適用できないことにはchcp相当の機能は実現できない
Powershellからchcpを呼ぶとcmdシェルを介してコマンドプロンプトの初期値が表示されるだけであり、グローバル設定とは無関係

([console])::OutputEncodingが効いたかどうかは、cmd /? で戻されるヘルプ文字列が日本語かどうかで判断できる
905: 2021/12/29(水)20:57 ID:7YDJokPl(1) AAS
UNIXシェルは糞of糞
やっぱりPowerShellだよな

シェルスクリプトは文字通りの逐次実行
sleepy-yoshi.hatenablog.com/entry/20090917/p1
906
(1): 2021/12/29(水)23:03 ID:wj529v9h(1) AAS
>>903-904
ドットソースで実行してもだめなの?
function f1 {〜}
. f1
907: 2021/12/29(水)23:16 ID:/Pws6ORw(3/4) AAS
>>906
説明不足だった
やりたいことはコマンド入力じゃなくてSet-PSReadLineKeyHandler -Keyを使ったキーバインドなんだけど
ドット. で反映してくてもScriptBlockやFunctionのスコープに閉じ込められてしまうから解決にならない
908: 2021/12/29(水)23:39 ID:/Pws6ORw(4/4) AAS
ま、そういうエンコーディング切り替え機能をどれだけ充実させても既存のbashやCMDのようなプロセス間通信はできないのでやるだけ無駄ってのはわかってる
909: 2021/12/30(木)08:42 ID:InFuAQoQ(1) AAS
PowerShellでバイナリ(もしくはエンコーディングが不明なデータ)を扱う
外部リンク:qiita.com
910: 2021/12/30(木)21:35 ID:FEP7eJXA(1) AAS
powershell内部でcmd呼んだらいいのでは
何がしたいのかわからんけど
911: 2021/12/30(木)23:22 ID:pA3aK4qE(1) AAS
PowerShellからcmd を呼んだら負け、みたいな抵抗感が少しある
912: 2021/12/31(金)19:53 ID:YcD3GAD3(1) AAS
残念な仕様はあれども、ちゃんと書けば、ちゃんと動く
クソとは思わんな。便利は便利よ
913
(1): 2022/01/11(火)22:54 ID:rTZaFBoT(1) AAS
CSVを項目で検索し、ヒットした列を編集したいんだけど、パイプが理解しきれてないせいで上手いこといかない
$ArrCsvData | Where-Object{$_.CodeNo -match $Code} |
このあとにカンマ区切りのテキストファイルを該当列に上書きしたいんだけど、どうすればいいのでしょうか?
914: 2022/01/11(火)23:45 ID:1S8cvNBi(1/2) AAS
>>913
まず、ArrCsvDataはCSVからオブジェクトに変換(ConverFrom-CSVやImport-CSV)した物なのかな
じゃないとプロパティで値を呼び出せないよ

「カンマ区切りのテキストファイルを該当列に上書きしたい」の意味が測り兼ねるけど、
条件に合致する行を編集したいなら

$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }

とやる。コツは編集後に「;$_ 」とやって出力する所。じゃないと編集だけして破棄する事になる。

さらにCSVで保存したいなら
省1
915
(1): 2022/01/11(火)23:46 ID:1S8cvNBi(2/2) AAS
ミス
if文の閉じカッコ忘れてた

$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }



$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列"} ; $_ }
916: 2022/01/12(水)00:21 ID:B+xDwNUa(1) AAS
いちいち空行挿むなスカスカ脳
917
(1): 2022/01/12(水)01:11 ID:0oGT7bUk(1) AAS
>>915
教えていただきありがとうございます

CSVは
「A001,,」
「B001,かきくけこ,12345」
のようなフィールドで
$Code = "A001"を検索し
「A001,あいうえお,12345」
のような内部のテキストファイルがあり、編集したい列名を指定せずにまとめて編集したいと思っています。
実際には編集する項目が多くループさせながら格納だと長くなってしまうため、省略できないかと思い相談させていただきました。
918
(1): 2022/01/12(水)21:13 ID:vTY0CDWm(1) AAS
gc $csv_in -Encoding Default | %{ $fields = $_ -split ","; if ($fields[0] -match $Code) { $fieldsを加工; $fields -join "," } else { $_ } } | Out-File $csv_out -Encoding Default
919: 2022/01/13(木)01:49 ID:sU2jW0+6(1) AAS
>>918
ありがとうございます
まだ理解できていないところもありますので勉強しながら試させていただきます
920
(1): 2022/01/18(火)20:28 ID:4KOVvciD(1) AAS
get-aliasをalias、またはget-serviceをservice、
自作の関数でもget-testとしたらtest、のように
エイリアス定義無しでも
get-を省略して実行出来てしまう(または、省略したらget-*扱いになる)のですが
これについて記載されたドキュメントが何処にあるか
教えて頂けないでしょうか
921
(1): 2022/01/19(水)20:37 ID:QgcNfSy6(1) AAS
>>920
外部リンク[2]:docs.microsoft.com

PowerShell がコマンド入力を解析すると、コマンドレットまたはネイティブ実行可能ファイルへのコマンド名の解決が試みされます。 コマンド名が完全に一致しない場合、PowerShell は既定の動詞としてコマンドの前 Get- に付加されます。
922: 2022/01/20(木)15:57 ID:PUohEL+U(1) AAS
PowerShellバカにしてたけど、安定性半端ないわ
適当にササッと書いたやつがなんのエラーもなくずっと正確に動いとる
923: 2022/01/20(木)16:02 ID:Aa91Vk9H(1) AAS
>>921
ありがとうございます!
このドキュメントが見つからず困っていました
助かりました
924: 2022/01/20(木)17:34 ID:I7UNJZAr(1) AAS
正直、PowerShellって名前がダサいと思う
925: 2022/01/20(木)19:23 ID:qK2oGbTr(1) AAS
チカラこそパワー!
926: 2022/01/20(木)19:45 ID:N7Uy6cYb(1) AAS
ぱわわしぇる!
927
(1): 2022/01/20(木)19:54 ID:INnqrIt/(1) AAS
名前負けしてるなあ、とは思うけど
928: 2022/01/20(木)20:28 ID:Ibae9TV2(1) AAS
富士通が昔PowerCobolとか出してたからPowerなんちゃらは不安になる
929: 2022/01/20(木)20:31 ID:6YV8Mf/D(1) AAS
うちはウルトラCとかいうインタープリターだったなー
930: 2022/01/20(木)22:25 ID:yvXRNpR1(1) AAS
力貝

宝貝みたいなもんだなきっと
931: 2022/01/20(木)22:31 ID:ogjAY3PM(1) AAS
>>927
そう?
方向性はともかくshよりだいぶ高機能になってると思う
932
(1): 2022/01/21(金)14:41 ID:Q8HlpjEI(1/3) AAS
質問です。

get-childitemのデフォルトのソート順は何でしょうか?(sort-objectを明示しない場合の並び順)

ソート順について記載されているドキュメントの所在でも良いです。
933
(1): 2022/01/21(金)20:37 ID:QAFbTLmU(1) AAS
>>932
NTFSなら何もしなくてもUNICODEのコード順だかでソートされて出てくる
要するにファイルシステム次第
934: 2022/01/21(金)20:45 ID:D6eDuhqM(1) AAS
>>933
さて、どうかな
MicrosoftはSJIS時代のソート順をひきずってると思うぞ
935: 2022/01/21(金)22:44 ID:Q8HlpjEI(2/3) AAS
AA省
936: 2022/01/21(金)22:50 ID:Q8HlpjEI(3/3) AAS
長文になりすみませんでした。
ディレクトリ構成が崩れてしまいましたが、以下の通りです。
 dir1\dir2\dir3\PG1\file*.txt
 dir1\dir2\dir3\PG2\修正前.xlsx

別の場所で質問すべきということでしたら、その旨をお伝えください。
当スレに相応しくないようでしたら無視頂いて構いません。申し訳ございませんでした。
937: 2022/01/21(金)22:51 ID:2Ya+eSMz(1) AAS
例えば、ソード結果が異なる、1,2,3 と、3,2,1 を比べれば、2しか一致しない
938: 2022/01/22(土)18:26 ID:wDrU8P/z(1) AAS
>>917
Ruby で作ってみた

require 'csv'
# ruby ./script.rb ./input.csv (デフォルトは、$stdout)
# ruby ./script.rb ./input.csv > 出力ファイル

# 2列目に、カンマ・改行・シングル/ダブルクォーテーションを入れてみた
csv_text = %(A001,"あ,い\nう'え""お",123) #=> "A001,\"あ,い\nう'え\"\"お\",123"
csv_ary = CSV.parse_line( csv_text ) #=> ["A001", "あ,い\nう'え\"お", "123"]

# 引数は入力ファイル名・input.csv
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
省16
939: 2022/01/22(土)18:35 ID:95Wn62Jb(1) AAS
キチガイが来た
940: 2022/01/22(土)18:54 ID:MgA+2TRu(1) AAS
キチガイは見えない
941: 2022/01/22(土)19:21 ID:kAQ/cYNL(1) AAS
目的とやってることがとっちらかってるな
なんで比較するのにLastWriteTimeでソートしてんの
942
(1): 2022/01/26(水)20:55 ID:wcWyeiko(1) AAS
画像リンク[png]:i.imgur.com
タスクマネージャーから手動で子プロセスだけ終了させることはできるけど
PowerShellでやるには Get-Process -Name explorer のあと
どうやって子プロセスのPIDを取得すればいいでしょうか?教えてください
943
(1): 2022/01/26(水)22:28 ID:KYTViaCV(1) AAS
>>942
Get-WmiObjectかGet-CimInstance使ったら?
(Get-Process -Name explorer).Id | %{Get-CimInstance Win32_Process -Filter "ParentProcessId=$_"}
>>22 でも出てるよ
944
(2): 2022/01/26(水)23:22 ID:z4xHZvF2(1/2) AAS
最近PowerShell使い始めたんだけど
大きなシステムを作るとき、メインと複数のサブルーチンとかも基本1つのファイルで完結させるのか?それともファイルを何個も分けるのか?
どっちだとしても可読性下がる気がする
945
(1): 2022/01/26(水)23:29 ID:z4xHZvF2(2/2) AAS
PowerShell ISEでスクリプトウィンドウは何で左側に表示できないんだろ
左側のほうが俺はやりやすいわ
946: 2022/01/26(水)23:54 ID:BYfIsc0u(1) AAS
>>945
Microsoftはpowershell開発にはvscodeの方がおすすめだと言ってるよ
外部リンク[2]:docs.microsoft.com
947: 2022/01/27(木)02:33 ID:sf3Kg0Os(1) AAS
>>943
ありがとうございます。これで試してみます
948
(1): 2022/01/27(木)08:04 ID:EosWc+ux(1) AAS
>>944
そもそも大きなシステムをPowerShellでは作らない
949: 2022/01/27(木)09:23 ID:p8Bx/YYe(1) AAS
>>944
>>948の通りPowerShellで大きなシステムを作る事自体がアンチパターンの極み
どうやっても可読性最悪だし破綻は避けられない
950: 2022/01/27(木)10:21 ID:tOnT0cfV(1) AAS
powershellで大きめのものを組むならC#で組むときみたいな箱庭を作る発想は完全に捨てて、UNIX的な思考に切り替えるべき
完成度の高い単独で機能するコマンドを作って組み合わせていくようにすることで、ドメインを拡大させない
コマンド同士の細かい相互作用を作り込んではいけない
951
(1): 2022/01/29(土)09:01 ID:oEiS6XOx(1) AAS
Unix コンポーネント: 小さいことは美徳である
外部リンク[html]:web.archive.org
952: 2022/01/30(日)01:37 ID:ZZo5v4fB(1) AAS
>>951
ちょっと読んでみたらIEのCOMベースってすばらしいよね真似しよが結論になってて時代を感じた
さてBonoboはUnix界でうまくいったのでしょうか
外部リンク:en.wikipedia.org
953
(1): 2022/02/02(水)01:43 ID:eLtuTeT2(1/3) AAS
Get-Contentで取得したテキストファイルが
処理終わっても自分自身で開いていることが多い
別の処理で終わったこのテキストファイルを削除しようとすると
自分で開いているので削除出来ないでエラーが出る

処理が終わっても閉じない原因か対処法はないでしょうか
954
(1): 2022/02/02(水)02:18 ID:DC2596zT(1) AAS
>>953
明示的にオブジェクトを破棄する。
955: 2022/02/02(水)07:51 ID:eLtuTeT2(2/3) AAS
>>954
なるほど破棄すると繋がりが消えるのか
ありがとうございます
956: 2022/02/02(水)23:39 ID:eLtuTeT2(3/3) AAS
すみません、オブジェクト破棄を以下のように解釈していたのですが
そうなるとRemobe-Itemでファイルを削除するとき、変数に入れずにフルパスで指定するのか?と思ったけどやっぱり違うと思うし
改めて変数に入れるのも多分違うと思い、すっきりしない状態です。
多分破棄するの意味を間違って、こちらが解釈してると思うのですが、この場合どう書いてますでしょうか?

$lines = (Get-content $FilePath-as [string[]]

Remove-Variable FilePath

Remobe-Item $FilePath
957: 2022/02/03(木)07:21 ID:OMU2Br15(1/2) AAS
remove variableであってるとおもう。
GCに回収させるとより安全。
$nullを代入でもいけるかな
958: 2022/02/03(木)07:41 ID:OMU2Br15(2/2) AAS
ん?ファイル開いているのはlinesじゃないか?
linesを破棄しよう
959: 2022/02/03(木)16:23 ID:VbK4RRek(1) AAS
gcでファイル開きっぱなしなんてないと思うけど
削除できないってパターンはありそうだな
削除できるまで無限ループでいいんじゃね
960: 2022/02/03(木)20:01 ID:gI5tR0VQ(1) AAS
Get-content終わってもファイル開きっぱなしなんてあるの?
物凄いデカいファイルだったらあり得るのか?
961: 2022/02/03(木)23:08 ID:mIHwLL5k(1) AAS
Get-content(cat)はcat.exeと違うバッファリング方法だからユーザーから見れば開きっぱなしに感じる場合もあるかも
962: 2022/02/06(日)00:04 ID:D4g/hsrG(1) AAS
同じ変数を使い回すのにこだわっている阿呆だな
963: 2022/02/06(日)01:29 ID:2aKrrA/x(1) AAS
AA省
964: 2022/02/06(日)14:34 ID:m5li3VVD(1) AAS
そもそもファイルを削除できなかったことが無い
965: 2022/02/07(月)07:35 ID:83JX6KKe(1) AAS
削除できないのは他の要因で起こり得るから何とも
966: 2022/02/09(水)12:21 ID:3KsDo8lO(1) AAS
gcに-waitとか-tailとか付けると開きっぱなしになるけど、明示的に離せってスイッチは無かったっけ?
付けなけりゃ閉じてるものかと思ってた
967
(1): 2022/02/09(水)23:40 ID:WBXgVt22(1) AAS
WindowsFormを使いGUIを作ろうと思っていますがtextboxのイベントハンドラが理解できていません
VBAでいうAfterUpdateをやろうと思っているのですが、
textbox1のフォーカスが別に移ったらlabel1にテストと表記したいのですが
そういった処理は可能でしたら下のどこを直せばいいのでしょうか?

Add-Type -AssemblyName system.windows.forms
Add-Type -AssemblyName system.drawing

$form = New-Object System.Windows.Forms.Form

$textbox1 = [System.Windows.Forms.textbox]@{
location = New-Object System.Drawing.point(10,10)
size = New-Object system.drawing.size(100,100)
省12
968
(1): 2022/02/10(木)19:36 ID:/6XFwXXi(1) AAS
>>967
>$textbox1.leave
ここで行を分けてしまうとpowershellのパーサは一旦解釈を終えてしまうからイベントハンドラとして登録できてない。
それとイベンントハンドラの名前は頭にadd_〜を付ける決まりになってる(なぜかは知らない)
従って下のように記述する。
$textbox1.add_leave({
$label1.text = "テスト"
})

それとテキストボックスだけではフォーカスの移動が確認できないから
ボタンとか適当なフォーカスを持つコントロールを配置しておく
省6
969: 2022/02/11(金)00:44 ID:xWKZ1gm4(1) AAS
>>968
教えていただきありがとうございます。
テキストボックスだけだと移動が確認できないなど知らなかったのでとても助かりました。
970: 2022/02/12(土)03:20 ID:NDMck+ft(1) AAS
ネタだろ
971: 2022/02/12(土)16:09 ID:8ted8XK+(1) AAS
入力コントロールがフォーカスを失ったという、イベントは無いの?
972: 2022/02/12(土)21:15 ID:JXSQUy8V(1) AAS
Control.Leave イベント
外部リンク:docs.microsoft.com
973
(1): 2022/02/13(日)17:33 ID:zeKJdxT+(1/4) AAS
よろしくお願いします。
現在開いているexcelのアクティブブックを捕まる方法ないでしょうか??
例えば、アクティブブックのアクティブシートにのってるグラフの軸を全て変更したい時に、
excelからpowershell ISEに画面を変えて操作したいのです。
974
(1): 2022/02/13(日)17:40 ID:0qwas07F(1/2) AAS
>>973
Pythonおすすめ
975
(1): 2022/02/13(日)17:44 ID:zeKJdxT+(2/4) AAS
>974
ありがとうございます。
xlwingsだとアクティブブックつかめるけど、グラフの細かな設定がない
openpyxlだとアクティブブックをつかめなさそう、
でpowershellでできないかな、と。
976: 2022/02/13(日)17:47 ID:0qwas07F(2/2) AAS
>>975
グラフもPythonで描けばいい
977: 2022/02/13(日)17:55 ID:lPImUKwL(1) AAS
pandasに無いような高等な統計関数が必要でないかぎりpythonで完結したほうが楽なんじゃね
978: 2022/02/13(日)18:02 ID:zeKJdxT+(3/4) AAS
ありがとうございます。
まぁ、会社でみながexcel使ってるので、、こんな質問をしている次第です、、
979: 2022/02/13(日)18:06 ID:PEAS4D91(1) AAS
シートの名前やらインデックスがpwshでわかれば、その情報をpythonに渡してmatplotlibでtemp.jpgとかで吐き出したグラフをまたpwshで貼れば行ける気がする
980
(1): 2022/02/13(日)18:34 ID:Z5jSGqeY(1) AAS
ActiveWorkBookプロパティで捕まえられるでしょ
VBAから呼んでもPowershellから呼んでもPythonから呼んでもいい
981: 2022/02/13(日)18:37 ID:LaQ04ZoE(1/2) AAS
次スレほい
PowerShell -Part 6
2chスレ:tech
982: 2022/02/13(日)18:41 ID:LaQ04ZoE(2/2) AAS
余計なお世話ついでに
ISEはもう終わったプロジェクトなので
後継のVSCode+Powershellプラグインに乗り換えるのがオススメ
983: 2022/02/13(日)20:32 ID:zeKJdxT+(4/4) AAS
色々アドバイスありがとうございました。

それもそだな、と下記でいけました。お騒がせいたしました

$Excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")

$Excel.ActiveWorkbook.ActiveSheet.name
984
(1): 2022/02/21(月)13:09 ID:jIppNsU3(1/4) AAS
教えて下さい
powershellで再帰処理をしたいんですが、

"The script failed due to call depth overflow"

と言うエラーで最後まで処理してくれません。
再帰回数のスタックオーバーフローで
トランポリン処理が有効とまでは調べたのですが
上手く理解出来ず

↓↓
外部リンク:qiita.com

詳しい方、よろしくお願いします
985: 2022/02/21(月)13:24 ID:Vv5lB4cH(1/4) AAS
そのメッセージの言わんとするところは、すげー効率悪いので再帰で書くな
というアドバイスです
986: 2022/02/21(月)13:39 ID:jIppNsU3(2/4) AAS
対象データが階層構造になっていて、
網羅的に処理したいんですが、うーん
987: 2022/02/21(月)14:08 ID:Vv5lB4cH(2/4) AAS
500階層あるデータ構造はさすがに扱ったことがない…
そもそも特定の枝が底なし沼なのだとしたら、それでも延々と潜り続ける、というのは本当に意図した挙動なのか?

底なし沼が時々存在して、それに興味が無いのならば素直な余再帰で書ける幅優先探索を勧める

深さ優先で頑張りたいなら、スタックとしてコールスタックを流用するのでなくて、明示的にスタックにpush/popすると少しは経済的
特定の深さに達したら諦める決め打ちもあり

トランポリンで遅延評価を積む利点は、入力データ構造を処理するというより、需要に応じて任意の深さのデータを出力できるという点にあるので、悪手かと
988: 2022/02/21(月)14:17 ID:+uSXi1Gh(1/4) AAS
トランポリン?のやってることはSchemeで言うCPS相当だね。まずCPSを理解しないと何が起きてるのか判らないと思う。
であるならば理屈ではトランポリンなんて変な事しなくてもスクリプトブロックをクロージャにするやつだけで再帰をクロージャの連鎖呼び出しに置き換えることはできると思う。
989: 2022/02/21(月)14:38 ID:Vv5lB4cH(3/4) AAS
(実装は暗黙のCPSかもしれないけど) schemeだとdelay/forceそのまんまじゃね

イテレータとかストリームとか色んな言い方があるけど、何にせよ処理すべきデータがまだ存在していないような時にのみ有効
もし処理対象のデータが既に存在しているのなら、単に無駄な計算を増やすだけだよ
990: 2022/02/21(月)14:43 ID:+uSXi1Gh(2/4) AAS
再帰処理したいつってる本人が理解できないと意味ないからな
再帰が軽い言語で処理すりゃいいんじゃねーの
991: 2022/02/21(月)15:22 ID:002PyiUh(1/2) AAS
コールスタック制限してない言語の方が珍しいと思うがね、スクリプト言語なら500-1000くらいが標準的か

とりあえず言語によって課される安全装置としてのコールスタック制限を回避したいのなら、>>984が求めている資料はこれだと思う外部リンク:www.python.orgじゃなくてすまん)
生リスト(配列)を使ってもいいけど、現実的な時間で可能なのか怪しい程の難問なので、これの出番かも

外部リンク:docs.microsoft.com
外部リンク:docs.microsoft.com
992: 2022/02/21(月)15:34 ID:002PyiUh(2/2) AAS
ごめんdfsだわこれ
全要素網羅したい、という要求だからどっちでもいいと思うけど
queueはこれ使うと配列よりかなり速いはず
外部リンク:docs.microsoft.com
993: 2022/02/21(月)16:03 ID:jIppNsU3(3/4) AAS
すみません、めちゃくちゃ難しいっす

なんとなくリンク先のスクリプトが
動かせればと思ったのですが…

やはり悪手なんですかね
994: 2022/02/21(月)16:22 ID:Vv5lB4cH(4/4) AAS
データのサンプル、期待する出力を書いてくれれば具体的なコード提案できるかも(たぶん)
995: 2022/02/21(月)18:40 ID:jIppNsU3(4/4) AAS
色々回答してありがとうございました

結局再帰を使わずループで代用する
こととしました

トランポリンはもう少し
勉強してみたいと思います
996: 2022/02/21(月)20:07 ID:+uSXi1Gh(3/4) AAS
AA省
997: 2022/02/21(月)21:16 ID:+uSXi1Gh(4/4) AAS
AA省
998: 2022/02/21(月)21:38 ID:MnJW8OUO(1) AAS
変なやり方を広めようとするやつの典型例
999: 2022/02/22(火)00:12 ID:wYlI3N7E(1) AAS
あえて混乱させようとしてるようにしか思えない

仮に末尾最適化でシリアルなコードを得たとして、まさかそれが木の探索に有利だとでも?

呼び出しをstart-(thread)jobで行ってスレッド/プロセスをばら撒けば済む話じゃないの
コールスタック溢れるような計算であればあるほど、スケーラブルで高速
1000: 2022/02/22(火)02:35 ID:LHZaRsEg(1) AAS
スタックを使わない再帰呼び出しならスタックは溢れないなw
個々の再帰呼び出しをStart-ThreadJob/Wait/Receiveで機械的に置き換えればとりあえず動く雛形にはなる
代わりにプロセス/スレッドが溢れるけど、スレッドなら単に順番待ちに入るだけで悪さはしない

個々のワーカーが自身の子をwaitしている限りはオーバーヘッドでしかないので、メインプロセスを設けStart時に-StreamingHostで直接報告を挙げさせるべき
長く走ってる枝を殺す等、最適化の可能性は大

メモ化や大域脱出程度で済むような問題には薦めない
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 341日 2時間 5分 41秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
省4
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.226s*