前スレ
PowerShell -Part 4
https://mevius.5ch.net/test/read.cgi/tech/1577862511/
次スレは>>980が立ててね!!
探検
PowerShell -Part 5
レス数が1000を超えています。これ以上書き込みはできません。
2021/03/18(木) 00:29:52.04ID:/MpReTiX
2021/03/18(木) 01:54:43.20ID:KHyuuwNF
echo 保守しとくけど多分朝には落ちてる
2021/03/18(木) 02:11:36.48ID:LDDTgdRP
>>1
おつ
おつ
2021/03/18(木) 02:41:58.78ID:k7pgRAR8
パワー
2021/03/18(木) 12:05:10.24ID:t06qOp3P
パイプやリダイレクトが微妙
結局 cmd /C を使うはめに
結局 cmd /C を使うはめに
2021/03/18(木) 14:38:25.42ID:CPg6C46D
Call native operator #13068
https://github.com/PowerShell/PowerShell/issues/13068
https://github.com/PowerShell/PowerShell/issues/13068
2021/03/18(木) 15:14:55.38ID:6Ys2lBRM
未経験新卒で入社してからLinux関連の開発しかしてこなかった俺がふとpowershellの勉強始めてるんだが、なかなか慣れんわ
まあ出来ることから地道に使い込んでいくしかないか…
まあ出来ることから地道に使い込んでいくしかないか…
2021/03/18(木) 16:29:17.47ID:7c+GTWi3
あるオブジェクトのプロパティ(数や名前は不明)を全て取得して
別に新規作成するPScustomObjectのプロパティとして設定したいのですか
どのようにすれば実現出来ますでしょうか?
別に新規作成するPScustomObjectのプロパティとして設定したいのですか
どのようにすれば実現出来ますでしょうか?
2021/03/18(木) 16:30:46.69ID:7c+GTWi3
補足です。
あるオブジェクトのプロパティの値は必要ありません。
新しいPScustomObjectのプロパティの値は別のものをセットします。
あるオブジェクトのプロパティの値は必要ありません。
新しいPScustomObjectのプロパティの値は別のものをセットします。
2021/03/18(木) 17:04:09.34ID:5geAwNmp
get-memberでプロパティでフィルタしてadd-memberかな?
2021/03/18(木) 17:40:50.17ID:Zj9YO3RT
アナル。
後からオブジェクト追加ですね。
初心者なのでPScustomObject作成時にプロパティ指定しか頭になかったです。
サンクソ。
後からオブジェクト追加ですね。
初心者なのでPScustomObject作成時にプロパティ指定しか頭になかったです。
サンクソ。
2021/03/19(金) 04:00:45.99ID:RMQx/osX
>>7
linuxだけど俺も周りもPowerShellしか使ってねえわ
linuxだけど俺も周りもPowerShellしか使ってねえわ
2021/03/19(金) 04:02:37.40ID:RMQx/osX
まあ部署で統一図ったってだけだけどな
linuxのログインシェルにPowerShellはまだまだマイノリティ
linuxのログインシェルにPowerShellはまだまだマイノリティ
2021/03/19(金) 09:44:27.09ID:ubz8QMhD
Select-Objectでプロパティを取り出す際に@{name=〜;expession={〜}}
って指定方法があると思いますが、
@data=@{"key1"=@(1,2);"key2"=@(3,4)}
という配列を値に持つハッシュ@dataから
1,3;2,4
と言う風にデータを取り出したいのですが
(各配列の要素0から順番に)
@data|Select-Object @{name="out";expession={ ($_.key1 + "," + $_.key2) -join ";"}}
だと
1;2;,;3;4
になってしまいます。
1,3;2,4
と取り出すにはどうすれば良いでしょうか?
って指定方法があると思いますが、
@data=@{"key1"=@(1,2);"key2"=@(3,4)}
という配列を値に持つハッシュ@dataから
1,3;2,4
と言う風にデータを取り出したいのですが
(各配列の要素0から順番に)
@data|Select-Object @{name="out";expession={ ($_.key1 + "," + $_.key2) -join ";"}}
だと
1;2;,;3;4
になってしまいます。
1,3;2,4
と取り出すにはどうすれば良いでしょうか?
2021/03/19(金) 09:45:14.92ID:ubz8QMhD
訂正
@data は $data の間違いです。
@data は $data の間違いです。
2021/03/19(金) 14:52:27.90ID:z8FPp2cZ
$data|Select-Object @{name="out";expression={ ($_.key1 -join ",") + ";" + ($_.key2 -join ",") }}
配列の加算
https://docs.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-arrays#array-addition
配列の加算
https://docs.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-arrays#array-addition
2021/03/19(金) 17:10:06.64ID:Lmt+5Mde
>>16
う〜ん。これだと
1,2;3,4
と出力されてしまいます。
説明が悪かったです。
配列毎に順番に出力ではなく、
全配列の若い要素から順番に出力です。
配列Aの要素0,配列Bの要素0;
配列Aの要素1,配列Bの要素1;
配列Aの要素2,配列Bの要素2;
・
・
と言うふうに、
$dataの場合は
1,3;2,4
と出力したいのです。
う〜ん。これだと
1,2;3,4
と出力されてしまいます。
説明が悪かったです。
配列毎に順番に出力ではなく、
全配列の若い要素から順番に出力です。
配列Aの要素0,配列Bの要素0;
配列Aの要素1,配列Bの要素1;
配列Aの要素2,配列Bの要素2;
・
・
と言うふうに、
$dataの場合は
1,3;2,4
と出力したいのです。
2021/03/19(金) 17:23:02.60ID:e41Lj/Gw
スクリプト内の、Start-Processで起動したプロセスが、「別の」プロセスを起動します。
この「別の」プロセスのPIDを取るに、確実性のある方法ってありますでしょうか。
具体的に申し上げますと、TeratTermマクロの実行ファイル(以下、ttpmacro.exe)を、Start-Processで呼び出すと
ttpmacro.exeが、Teraterm本体を呼び出します。
以下の、@でttpmacro.exeのPIDは取れるのですが、ttpmacro.exeが呼び出した
Teraterm本体のPIDは取れません。
現状Aの方法、ttpmacro.exeをStart-Processで起動→3秒待ち(起動待ち)→Get-Processで最新のTeraterm本体のPIDを取る
で間に合ってはいるのですが、不確実性があります。
これの対処に、確実性のある方法があったら教えてください。
Get-ProcessのStart-Timeが〇秒以内の場合〜というのも考えたんですが、
やっぱり不確実があるのでまだ導入はしてません。
よろしくお願いいたします。
以下ソースコード一部抜粋しました。ご参照ください。
$ttl_macro=Teratemマクロのファイルパス
$ttpm_bin="C:\Program Files (x86)\teraterm\ttpmacro.exe"
@$ttl_pid=(Start-Process -PassThru -FilePath $ttpm_bin -ArgumentList "/V $ttl_macro $log_full_path")
sleep 3 #Teraterm本体の起動待ち用。
A$ttp_pid=((Get-Process -name "ttermpro") | Select-Object id,StartTime,name | Sort-Object -Property Starttime | Select-Object -Last 1)
この「別の」プロセスのPIDを取るに、確実性のある方法ってありますでしょうか。
具体的に申し上げますと、TeratTermマクロの実行ファイル(以下、ttpmacro.exe)を、Start-Processで呼び出すと
ttpmacro.exeが、Teraterm本体を呼び出します。
以下の、@でttpmacro.exeのPIDは取れるのですが、ttpmacro.exeが呼び出した
Teraterm本体のPIDは取れません。
現状Aの方法、ttpmacro.exeをStart-Processで起動→3秒待ち(起動待ち)→Get-Processで最新のTeraterm本体のPIDを取る
で間に合ってはいるのですが、不確実性があります。
これの対処に、確実性のある方法があったら教えてください。
Get-ProcessのStart-Timeが〇秒以内の場合〜というのも考えたんですが、
やっぱり不確実があるのでまだ導入はしてません。
よろしくお願いいたします。
以下ソースコード一部抜粋しました。ご参照ください。
$ttl_macro=Teratemマクロのファイルパス
$ttpm_bin="C:\Program Files (x86)\teraterm\ttpmacro.exe"
@$ttl_pid=(Start-Process -PassThru -FilePath $ttpm_bin -ArgumentList "/V $ttl_macro $log_full_path")
sleep 3 #Teraterm本体の起動待ち用。
A$ttp_pid=((Get-Process -name "ttermpro") | Select-Object id,StartTime,name | Sort-Object -Property Starttime | Select-Object -Last 1)
2021/03/19(金) 17:37:54.61ID:jH8qf1vo
>>17
Keyは固定でいいのね
なら
($data.Key1.GetLowerBound(0) .. $data.Key1.GetUpperBound(0) | %{ $data.Key1[$_], $data.Key2[$_] -join ',' }) -join ';'
でいいかと
Keyは固定でいいのね
なら
($data.Key1.GetLowerBound(0) .. $data.Key1.GetUpperBound(0) | %{ $data.Key1[$_], $data.Key2[$_] -join ',' }) -join ';'
でいいかと
2021/03/19(金) 17:48:29.69ID:eKviOhZZ
2021/03/19(金) 18:11:41.22ID:jH8qf1vo
2021/03/19(金) 18:53:58.30ID:qinkf1Gp
2021/03/20(土) 01:13:04.71ID:jX8BSYxa
2021/03/20(土) 14:13:24.65ID:n5hjp+Ey
いえいえ
25デフォルトの名無しさん
2021/03/20(土) 14:57:52.11ID:Af+N2/eO Windows Terminal について質問、コンソールウィンドウをキーボード操作で編集モードにする方法ってある?
PowerShellでできそうかな?
PowerShellでできそうかな?
2021/03/20(土) 15:52:35.96ID:IyzEzHor
>>14
Ruby で作った
hash = { 1 => [ 11, 12, 13 ], 2 => [ 21, 22, 23 ] }
# zip で、行列の転置・transpose で、
# 2次元配列・[[11, 21], [12, 22], [13, 23]]
result = hash[ 1 ].zip( hash[ 2 ] ).
map{ |ary| ary.join( "," ) }.join( ";" )
puts result #=> 11,21;12,22;13,23
Ruby で作った
hash = { 1 => [ 11, 12, 13 ], 2 => [ 21, 22, 23 ] }
# zip で、行列の転置・transpose で、
# 2次元配列・[[11, 21], [12, 22], [13, 23]]
result = hash[ 1 ].zip( hash[ 2 ] ).
map{ |ary| ary.join( "," ) }.join( ";" )
puts result #=> 11,21;12,22;13,23
2021/03/21(日) 09:27:35.68ID:smBpkDl7
サーバ運用などにpowershellのおすすめの参考書教えてください
プログラムの基礎的な内容はおさえていて、vbsで簡単なスクリプトは作れるレベルです。
プログラムの基礎的な内容はおさえていて、vbsで簡単なスクリプトは作れるレベルです。
2021/03/21(日) 09:58:35.32ID:+Ri9vB82
今のPowerShellって実は既に非推奨なんで、MSの方針に従うなら今出ている参考書はほとんどお勧めできないってことになる
最新のPowerShell Coreについてはまあ参考書はほとんどなくて、ググってみりゃわかるがお勧め以前に参考書は国内では一つしか出ていないから選択の余地はない
最新のPowerShell Coreについてはまあ参考書はほとんどなくて、ググってみりゃわかるがお勧め以前に参考書は国内では一つしか出ていないから選択の余地はない
2021/03/21(日) 10:31:27.07ID:Duyg5pmm
pwsh(core)ってやつ
チュートリアルならMSのサイト、get-helpでunix系のman相当のマニュアル読める
結構快適だよ
チュートリアルならMSのサイト、get-helpでunix系のman相当のマニュアル読める
結構快適だよ
2021/03/21(日) 11:20:17.33ID:zQZFaxjB
でもわざわざpsの最新版入れ直す所なんて希だから知ってて損はない
2021/03/21(日) 14:34:20.67ID:Vq6bDiDx
Windows PowerShell実践システム管理ガイド 第3版
https://shop.nikkeibp.co.jp/front/commodity/0000/P53610/
Office 365管理者のための逆引きPowerShellハンドブック
https://www.nikkeibp.co.jp/atclpubmkt/book/18/P53740/
ネットワーク管理に使うWMI―PowerShellによるWindowsマシン管理
https://www.cutt.co.jp/book/978-4-87783-363-3.html
https://shop.nikkeibp.co.jp/front/commodity/0000/P53610/
Office 365管理者のための逆引きPowerShellハンドブック
https://www.nikkeibp.co.jp/atclpubmkt/book/18/P53740/
ネットワーク管理に使うWMI―PowerShellによるWindowsマシン管理
https://www.cutt.co.jp/book/978-4-87783-363-3.html
2021/03/22(月) 08:28:30.57ID:4wth7cze
ありがとうございます
今過渡期なんですね
Windows Server2012R2とかまだ使っているので
coreはまだ早い気がしました。
今過渡期なんですね
Windows Server2012R2とかまだ使っているので
coreはまだ早い気がしました。
2021/03/22(月) 14:44:54.86ID:SMRpwF7a
PowerShellによるWindowsサーバ管理術
https://www.sbcr.jp/product/4797350180/
https://www.sbcr.jp/product/4797350180/
2021/03/23(火) 08:58:24.17ID:8+XYsK7R
いまだに関数の書き方が覚束ない
制約みたいなやつ
制約みたいなやつ
2021/03/23(火) 09:22:40.57ID:JJxzU/30
基本知識はPowerShell7系とWindows PowerShell(Ver5.1)は一緒だから若干古い書籍でも役に立つ
PowerShell6以降の機能は別で勉強すればいい
それにPowerShell7で5系との互換性はかなり良いから上記資料で役に立ちそう
過渡期でも勉強しといて損は無い
PowerShell6以降の機能は別で勉強すればいい
それにPowerShell7で5系との互換性はかなり良いから上記資料で役に立ちそう
過渡期でも勉強しといて損は無い
2021/03/23(火) 13:24:21.91ID:5uqNZIW5
>>34
他人の作ってくれた関数をコピペして、少しずつ変えながら色々試せばいい
他人の作ってくれた関数をコピペして、少しずつ変えながら色々試せばいい
2021/03/24(水) 19:11:26.80ID:uucEMUEW
Get-ChildItemで得た音声ファイルのオブジェクトに
Get-ChildItemが返したオブジェクト
├Name(ファイル名)
├FullName(フルパス名)
:
└Audio(追加の音声プロパティオブジェクト)
├Channels(2とか6とか)
├SampleRate(44100とか96000とか)
:
って感じで音声プロパティを追加して
Get-ChildItem audio.flac | Add-AudioProp | Format-Table -Property Name や
(Get-ChildItem audio.flac | Add-AudioProp).Audio | Format-Table -Property SampleRate,Channels
なんかはうまく行くんだけど
Get-ChildItem audio.flac | Add-AudioProp | Format-Table -Property Name,SampleRate
みたいにオブジェクトをまたがる表示ができない。どうすりゃいいん(´・ω・`)
追加の音声プロパティをName,FullNameなんかとベタに並べるしかないんですかね
Get-ChildItemが返したオブジェクト
├Name(ファイル名)
├FullName(フルパス名)
:
└Audio(追加の音声プロパティオブジェクト)
├Channels(2とか6とか)
├SampleRate(44100とか96000とか)
:
って感じで音声プロパティを追加して
Get-ChildItem audio.flac | Add-AudioProp | Format-Table -Property Name や
(Get-ChildItem audio.flac | Add-AudioProp).Audio | Format-Table -Property SampleRate,Channels
なんかはうまく行くんだけど
Get-ChildItem audio.flac | Add-AudioProp | Format-Table -Property Name,SampleRate
みたいにオブジェクトをまたがる表示ができない。どうすりゃいいん(´・ω・`)
追加の音声プロパティをName,FullNameなんかとベタに並べるしかないんですかね
2021/03/24(水) 21:35:32.59ID:ilsWDePV
Get-ChildItem audio.flac | Add-AudioProp | Format-Table -Property Name,@{n="SampleRate";e={$_.Audio.SampleRate}}
2021/03/25(木) 02:25:42.71ID:4SLhQZZk
>>38
バッチリです!ヘルプにある
> 集計プロパティを作成するには、ハッシュ テーブルを使用します。有効なキーは次のとおりです。
ってこれの事だったのかぁ。nとかeってNameやExpressionの頭文字ですよね。頭1文字でもいいのか…
力技で一オブジェクトに集めるパイプ関数挟んでしのいでたけど取り外す事ができました
バッチリです!ヘルプにある
> 集計プロパティを作成するには、ハッシュ テーブルを使用します。有効なキーは次のとおりです。
ってこれの事だったのかぁ。nとかeってNameやExpressionの頭文字ですよね。頭1文字でもいいのか…
力技で一オブジェクトに集めるパイプ関数挟んでしのいでたけど取り外す事ができました
2021/03/25(木) 08:55:03.92ID:xal9z6Jt
About calculated properties
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_calculated_properties
The hashtable keys need not be spelled out as long as the specified name prefix is unambiguous.
For example, n can be used in lieu of Name and e can be used in lieu of Expression.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_calculated_properties
The hashtable keys need not be spelled out as long as the specified name prefix is unambiguous.
For example, n can be used in lieu of Name and e can be used in lieu of Expression.
2021/03/25(木) 09:34:11.49ID:Ci3DTkl1
2021/03/25(木) 18:33:30.59ID:4SLhQZZk
>>41
Audio.SampleRate ←値が空。"Audio.SampleRate"って名前のプロパティ探そうとして失敗か
Audio[SampleRate]やAudio["SampleRate"] ←値どころか項目名すら表に出てこない
$_下にないプロパティはハッシュテーブルで名前(任意のラベル名)と値を定義しないとダメっぽい
Audio.SampleRate ←値が空。"Audio.SampleRate"って名前のプロパティ探そうとして失敗か
Audio[SampleRate]やAudio["SampleRate"] ←値どころか項目名すら表に出てこない
$_下にないプロパティはハッシュテーブルで名前(任意のラベル名)と値を定義しないとダメっぽい
2021/03/25(木) 19:19:25.64ID:14yHEEO8
へー
2021/03/26(金) 17:33:31.93ID:4XawFn4z
外部コマンドの標準入力にバイナリファイル渡したいけどPowerShell直接はムリ?
2021/03/26(金) 20:10:55.77ID:yyPdQtcN
標準入力を受ける側が対応してればできるんじゃね
2021/03/26(金) 20:24:11.39ID:4XawFn4z
コマンドは対応してるけどPowerShellが受け付けてくれない
PowerShell> sox --info - < .\audio.flac
演算子 '<' は、今後の使用のために予約されています。
PowerShell> Invoke-Expression "sox --info - < .\audio.flac"
Invoke-Expression : 演算子 '<' は、今後の使用のために予約されています。
PowerShell> Get-Content .\audio.flac | sox --info -
(返ってこない。メモリ消費が物凄い事に。Ctrl+Cでは終われる。)
PowerShell> cmd /c sox --info - < .\audio.flac
演算子 '<' は、今後の使用のために予約されています。
PowerShell> sox --info - `< .\audio.flac
(外部コマンドから見たら"<"と".\audio.flac"の引数2つで標準入力にならない)
PowerShell> cmd /c sox --info - `< .\audio.flac
PowerShell> cmd /c "sox --info - < .\audio.flac"
→OK
PowerShell> sox --info - < .\audio.flac
演算子 '<' は、今後の使用のために予約されています。
PowerShell> Invoke-Expression "sox --info - < .\audio.flac"
Invoke-Expression : 演算子 '<' は、今後の使用のために予約されています。
PowerShell> Get-Content .\audio.flac | sox --info -
(返ってこない。メモリ消費が物凄い事に。Ctrl+Cでは終われる。)
PowerShell> cmd /c sox --info - < .\audio.flac
演算子 '<' は、今後の使用のために予約されています。
PowerShell> sox --info - `< .\audio.flac
(外部コマンドから見たら"<"と".\audio.flac"の引数2つで標準入力にならない)
PowerShell> cmd /c sox --info - `< .\audio.flac
PowerShell> cmd /c "sox --info - < .\audio.flac"
→OK
2021/03/26(金) 20:43:07.66ID:CR/1QuGC
PowerShell関係なく、そもそも標準入出力ってバイナリデータ扱えるものなの?
2021/03/26(金) 20:45:38.66ID:MahXm1Ia
Start-Process -RedirectStandardInputでなんとかなんじゃね
2021/03/26(金) 21:15:57.38ID:MahXm1Ia
こんな感じか?試せる環境がないので分からん
Start-Process sox -ArgumentList "--info" -RedirectStandardInput ".\audio.flac"
Start-Process sox -ArgumentList "--info" -RedirectStandardInput ".\audio.flac"
2021/03/26(金) 21:18:29.13ID:SIEsHqNB
2021/03/26(金) 21:22:13.21ID:SIEsHqNB
2021/03/26(金) 21:27:33.53ID:dswi0/Vv
>>47
扱える
扱える
2021/03/26(金) 23:53:54.40ID:4XawFn4z
>>49
Start-Process sox -ArgumentList "--info","-" -RedirectStandardInput .\audio.flac
で実行できた。ただ、これだと別ウィンドウで実行されて(-Waitを付けても)すぐ消える
-NoNewWindow付けるとコンソール出力されて直接実行の目的は果たせた。ありがとう
ただ、別プロセスのせいか$capture = Start-Process .(ryで出力キャプチャできない
-RedirectStandardOutputでファイル出力はできるけど
出力キャプチャは今んとこcmd経由しか思いつかないな・・・
>>51
Get-Contentはファイル読んでPSオブジェクト作るからwavみたいな巨大ファイル喰わせると
消費メモリがとんでもない事になってよろしくないみたい。
command1 | comannd2でパイプで繋ぐのもそうなのかも(?)
PowerShell使い始めたばかりでまだ仕組みわかってないのでアレですが
Start-Process sox -ArgumentList "--info","-" -RedirectStandardInput .\audio.flac
で実行できた。ただ、これだと別ウィンドウで実行されて(-Waitを付けても)すぐ消える
-NoNewWindow付けるとコンソール出力されて直接実行の目的は果たせた。ありがとう
ただ、別プロセスのせいか$capture = Start-Process .(ryで出力キャプチャできない
-RedirectStandardOutputでファイル出力はできるけど
出力キャプチャは今んとこcmd経由しか思いつかないな・・・
>>51
Get-Contentはファイル読んでPSオブジェクト作るからwavみたいな巨大ファイル喰わせると
消費メモリがとんでもない事になってよろしくないみたい。
command1 | comannd2でパイプで繋ぐのもそうなのかも(?)
PowerShell使い始めたばかりでまだ仕組みわかってないのでアレですが
2021/03/27(土) 09:30:15.39ID:9NUR6gaS
パワーシェルとWindowsバッチってどう違うの?
2021/03/27(土) 09:34:24.56ID:cvT0SSdW
異なるスクリプト言語
2021/03/27(土) 10:40:57.10ID:TlGVFU3L
PowerShellはシェル
バッチはコマンドを連続して実行すること
PowerShell上でバッチを動かすことも可能
バッチはコマンドを連続して実行すること
PowerShell上でバッチを動かすことも可能
2021/03/27(土) 20:22:03.71ID:uSYmOJju
powershellは起動時のロードがクソ遅いからログインスクリプトとかで迂闊に使えない
vbsとバッチは相変わらず超速
vbsとバッチは相変わらず超速
58デフォルトの名無しさん
2021/03/27(土) 21:16:23.22ID:17oRwajB 1000台規模のネットブートシステムでスタートアップ・ログオンスクリプト共々PowerShellで組んでるけど遅いときなんて一度も無いな
PowerShellの起動が遅いと感じたのはWindows7の頃が最後だな
PowerShellの起動が遅いと感じたのはWindows7の頃が最後だな
2021/03/27(土) 21:51:02.28ID:XCgMDSTR
そりゃそんなんじゃ起動の遅さなんて気にならんだろ。
2021/03/27(土) 21:52:07.31ID:c8B2TB9l
遅い(ストレージがHDD)
2021/03/28(日) 09:17:08.07ID:bwt8R5Sf
>>53
PowerShell Teamのブログに今月こんなのが出た
PowerShell Team 2021 Investments
https://devblogs.microsoft.com/powershell/powershell-team-2021-investments/
この中に
Improve native command experience
One of the goals of PowerShell 7.1 was to improve the shell experience. This includes using native commands within PowerShell more intuitively like other shells.
って節があるのだけど、そこで挙げてる3項目の一つが
PowerShell currently treats all output from native commands as text. This means that binary output from commands is converted to text, resulting in data loss, even if the intent is to redirect that output to a file or another command that accepts the binary output.
バイナリ出力が扱えるようになればバイナリ入力もできるようになるだろう
もしかすると年内に実現するかもしれない
やっと他のシェルを経由しなくてもすむようになる
それにしても今頃こんなところに手を入れるなんて遅すぎるとしか言いようがない
PowerShell Teamのブログに今月こんなのが出た
PowerShell Team 2021 Investments
https://devblogs.microsoft.com/powershell/powershell-team-2021-investments/
この中に
Improve native command experience
One of the goals of PowerShell 7.1 was to improve the shell experience. This includes using native commands within PowerShell more intuitively like other shells.
って節があるのだけど、そこで挙げてる3項目の一つが
PowerShell currently treats all output from native commands as text. This means that binary output from commands is converted to text, resulting in data loss, even if the intent is to redirect that output to a file or another command that accepts the binary output.
バイナリ出力が扱えるようになればバイナリ入力もできるようになるだろう
もしかすると年内に実現するかもしれない
やっと他のシェルを経由しなくてもすむようになる
それにしても今頃こんなところに手を入れるなんて遅すぎるとしか言いようがない
2021/03/28(日) 11:25:17.75ID:6r1EOw6A
カレントディレクトリにあるスクリプトファイルを
フルパスでなくファイル名だけ指定しても実行できないのはどうしてでしょうか?
フルパスでなくファイル名だけ指定しても実行できないのはどうしてでしょうか?
2021/03/28(日) 11:35:58.09ID:WPyWLlG4
セキュリティ上の配慮だと初期バージョンの頃から明言されていた
2021/03/28(日) 11:58:30.02ID:G6KSiarP
linuxやって検索パスにカレントディレクトリ"."を入れてないと実行出来へんので違和感無し。
検索パスにカレントディレクトリを含めるのはセキュリティ上非推奨やしな。
検索パスにカレントディレクトリを含めるのはセキュリティ上非推奨やしな。
2021/03/28(日) 12:14:42.01ID:6r1EOw6A
ありがとう
なんとかマイクロソフトのページ検索できた
確かにセキュリティの機能としてそうなってるって書いてた
なんとかマイクロソフトのページ検索できた
確かにセキュリティの機能としてそうなってるって書いてた
2021/03/28(日) 12:24:21.92ID:qLGWMSxC
まぁフルパスやなくて相対パスでええしな。
2021/03/28(日) 12:29:47.73ID:wpKLokvI
2021/03/28(日) 14:06:49.10ID:NjmNZXxg
#!/usr/bin/env ruby
puts RUBY_VERSION #=> 2.6.6
Linux でも、こういう内容の、a.rb ファイルを作って、
a.rb と実行してもエラー。
そもそも、bash で入力補完もできないし
./a.rb なら実行できるし、
./a と打っても、入力補完も働く
シバンに、/usr/bin/ruby ではなく、env を使っているのは、
anyenv/rbenv で、複数のバージョンを切り替えているため、
/usr/bin/ruby は存在しない
puts RUBY_VERSION #=> 2.6.6
Linux でも、こういう内容の、a.rb ファイルを作って、
a.rb と実行してもエラー。
そもそも、bash で入力補完もできないし
./a.rb なら実行できるし、
./a と打っても、入力補完も働く
シバンに、/usr/bin/ruby ではなく、env を使っているのは、
anyenv/rbenv で、複数のバージョンを切り替えているため、
/usr/bin/ruby は存在しない
2021/03/28(日) 15:12:05.97ID:xIH5FjVn
PowerShellだろうがbashだろうがzshだろうがtcshだろうが
コマンドの検索パスに . が入っているかどうかだけの問題
入っていればカレントディレクトリの実行ファイルがパスなしで動く
PowerShellの場合でも$env:PATHに入れてやれば動く
入ってなくても動くcmd.exeとかcommand.comが特殊なだけ
コマンドの検索パスに . が入っているかどうかだけの問題
入っていればカレントディレクトリの実行ファイルがパスなしで動く
PowerShellの場合でも$env:PATHに入れてやれば動く
入ってなくても動くcmd.exeとかcommand.comが特殊なだけ
2021/03/29(月) 00:14:19.86ID:AC49a7XE
$ping_result=(Test-Connection -count 2 8.8.8.8)
$ping_result #@
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
DESKTOP-E1... 8.8.8.8 8.8.4.4 32 3
DESKTOP-E1... 8.8.8.8 8.8.4.4 32 3
$proc_result=(Get-Process)
$proc_result #A
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
547 32 19840 10308 2.72 11144 1 ApplicationFrameHost
123 8 1564 1552 3404 0 armsvc
@とAの後ろに、| select-objectを付けると
@は、TAB補完で IPV4Address、 IPV6Address だけが出てきます。
Aは、Handles〜ProcessNameまで全部出てきます。
Get-memberしても、列タイトルと名前が一致しません。
例えば、$ping_resultのTime(ms) はReplyTimesという名前で値が入ってます
ほかのコマンドでもちらちらこういう、「コマンドレット実行したときに表示されるタイトルと、実際に.プロパティ名で取る際の名前が違う」
というのがあります。こういう違いって何か明確な区分けがあるんでしょうか?よろしくお願いいたします。
$ping_result #@
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
DESKTOP-E1... 8.8.8.8 8.8.4.4 32 3
DESKTOP-E1... 8.8.8.8 8.8.4.4 32 3
$proc_result=(Get-Process)
$proc_result #A
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
547 32 19840 10308 2.72 11144 1 ApplicationFrameHost
123 8 1564 1552 3404 0 armsvc
@とAの後ろに、| select-objectを付けると
@は、TAB補完で IPV4Address、 IPV6Address だけが出てきます。
Aは、Handles〜ProcessNameまで全部出てきます。
Get-memberしても、列タイトルと名前が一致しません。
例えば、$ping_resultのTime(ms) はReplyTimesという名前で値が入ってます
ほかのコマンドでもちらちらこういう、「コマンドレット実行したときに表示されるタイトルと、実際に.プロパティ名で取る際の名前が違う」
というのがあります。こういう違いって何か明確な区分けがあるんでしょうか?よろしくお願いいたします。
2021/03/29(月) 14:41:37.92ID:+vuzzbeH
出力の仕様は書式設定ファイルで定義されている
ファイルの中では表示したいプロパティの名前を指定してもいいし、結果を計算するスクリプトブロックを指定してもいい
about_Format.ps1xml
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847831(v=wps.640)
ファイルの中では表示したいプロパティの名前を指定してもいいし、結果を計算するスクリプトブロックを指定してもいい
about_Format.ps1xml
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847831(v=wps.640)
2021/03/30(火) 23:15:43.59ID:AnfR1yyf
無限ループにして走らせておきたいスクリプトがあって
コマンドプロンプトの画面で実行させてるけど邪魔
見えないようにして、かつ終了もさせられるようにするにはどうしたらいい?
コマンドプロンプトの画面で実行させてるけど邪魔
見えないようにして、かつ終了もさせられるようにするにはどうしたらいい?
2021/03/31(水) 00:36:37.55ID:bnFDknJn
よからぬ事に使う目的にしか見えない
2021/03/31(水) 09:05:46.55ID:Y3PcTBvP
>>72
タスクで別ユーザで実行させとけばいいんじゃね
タスクで別ユーザで実行させとけばいいんじゃね
2021/03/31(水) 09:38:27.22ID:YEibHbKm
ウィンドウの位置とサイズを固定させる用途だから、ユーザが自分でないと
2021/03/31(水) 10:00:59.54ID:gA7tKZjY
仮想デスクトップ分ければ?
2021/03/31(水) 10:10:11.65ID:YEibHbKm
仮想デスクトップでばっちり
2021/03/31(水) 15:09:07.56ID:GYCr8oLd
タスクトレイに常駐させるのがスマートだけど
それのイベント拾う非表示のウィンドウが必要なんだよな
作り方は他の言語と同じだから全省略するね
それのイベント拾う非表示のウィンドウが必要なんだよな
作り方は他の言語と同じだから全省略するね
2021/03/31(水) 15:21:44.88ID:AtIsL56M
pwsh --helpで出てくる公知なことを隠す必要なんてないと思うが…
スクリプトの実行ポリシーはガッチガチだし、ドキュメントどころか--helpすら読まない奴はスクリプトキディにもなれんだろうから安心
スクリプトの実行ポリシーはガッチガチだし、ドキュメントどころか--helpすら読まない奴はスクリプトキディにもなれんだろうから安心
2021/03/31(水) 23:05:55.25ID:M9w8Znx+
[System.DateTime]::Now.kind
@これを読むとすると
system.date.timeクラスの、nowメソッドのkindプロパティでいいでしょうか。
違ってたら読み方?教えてください
Aこういうのってどっかに一覧があるんでしょうか
Bこういうのを使うとPowershellらしい、新しい書き方になると思ってるんですが
実際の所はどうなんでしょうか?使う人のほうが少ないんしょうか。
例えば、[System.DateTime]::Nowであれば、Get-Date と同じものなので、
わざわざこういう書き方をしないで、コマンドレットの読みやすい表記を使う人のほうが多いんでしょうか
@これを読むとすると
system.date.timeクラスの、nowメソッドのkindプロパティでいいでしょうか。
違ってたら読み方?教えてください
Aこういうのってどっかに一覧があるんでしょうか
Bこういうのを使うとPowershellらしい、新しい書き方になると思ってるんですが
実際の所はどうなんでしょうか?使う人のほうが少ないんしょうか。
例えば、[System.DateTime]::Nowであれば、Get-Date と同じものなので、
わざわざこういう書き方をしないで、コマンドレットの読みやすい表記を使う人のほうが多いんでしょうか
2021/03/31(水) 23:43:46.86ID:mCZD0Ait
>>80
System名前空間のDateTime構造体の静的Nowプロパティが返す(System.DateTime型の)オブジェクトのKindプロパティかな
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime
System名前空間のDateTime構造体の静的Nowプロパティが返す(System.DateTime型の)オブジェクトのKindプロパティかな
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime
2021/03/31(水) 23:59:39.51ID:XczoOgFc
構造体ってなんぞ?
2021/04/01(木) 00:23:39.07ID:PSFjtGJo
>>82
プロパティのみのクラスオブジェクトなんじゃね
プロパティのみのクラスオブジェクトなんじゃね
2021/04/01(木) 00:38:41.91ID:u/4v0CTW
なるほどなるほど
2021/04/01(木) 04:57:15.84ID:xXKhkzDq
>>82-84
構造体にもメソッドあるぞ
クラスは参照型、構造体は値型
詳しくはWebで ⇒ https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/
構造体にもメソッドあるぞ
クラスは参照型、構造体は値型
詳しくはWebで ⇒ https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/
86デフォルトの名無しさん
2021/04/01(木) 07:41:37.81ID:klwu+MWY powershellのタブ補完はディレクトリ末尾にバックスラッシュを付与するので、多くのWin32アプリが引数をうまく受け取れないってのは既知?
2021/04/01(木) 19:32:54.94ID:T6HNdWih
スラッシュならともかくバックスラッシュなら処理できるんじゃね
2021/04/01(木) 20:43:50.58ID:M+/UvE/I
ディレクトリの場合は末尾にバックスラッシュ補完してくれるほうがありがたいが、
アプリは引数のディレクトリ末尾にバックスラッシュあるとうまく受け取れないん?
アプリは引数のディレクトリ末尾にバックスラッシュあるとうまく受け取れないん?
2021/04/01(木) 20:45:21.44ID:SMpNE7HF
あってもなくても正しく動くように全員が実装している必要がある
2021/04/03(土) 02:27:37.45ID:KxHmdFnt
職場でPowerShell書いたらバッチでいいと言われたよ
2021/04/03(土) 05:39:47.61ID:1anAZoL9
設定しないと動かないからな
92デフォルトの名無しさん
2021/04/03(土) 08:07:25.49ID:EzmFJzRe 新しく作るスクリプトに関してはもうバッチ使わないで欲しいよな
2021/04/03(土) 08:10:54.91ID:GvC+rDGr
標準ではps1の実行権限ついてないから配布する場合はちょっと面倒なんだよね
2021/04/03(土) 09:26:04.03ID:inQlliUt
他人に使ってもらう必要がある奴はバッチにPowerShellを埋め込んで配布してる
https://www.pg-fl.jp/program/tips/ps1bat2.htm
https://www.pg-fl.jp/program/tips/ps1bat2.htm
2021/04/03(土) 10:15:30.26ID:1anAZoL9
ウィルスのような手口
2021/04/03(土) 10:55:18.98ID:sC0R2LUF
バッチだと悪さができないとでも?w
2021/04/03(土) 11:16:34.59ID:zA7glofo
1行batとの2ファイル構成が楽でいい
先人はよくもbatなんかを使い続けてきたものよな
先人はよくもbatなんかを使い続けてきたものよな
2021/04/03(土) 12:16:39.84ID:GvC+rDGr
>>94
その方法管理者権限必要だろ
その方法管理者権限必要だろ
2021/04/03(土) 12:35:34.20ID:1anAZoL9
インストールマニュアルとセットにして、正攻法で使って貰うのが一番だな
100デフォルトの名無しさん
2021/04/03(土) 13:31:57.32ID:vSOTAguS >>99
ガチガチに管理されたPCには無理な方法
ガチガチに管理されたPCには無理な方法
101デフォルトの名無しさん
2021/04/03(土) 13:47:46.96ID:1anAZoL9 ネット経由で持ってきたファイルだと、batファイルも実行不可能なのな
よくできてる
よくできてる
102デフォルトの名無しさん
2021/04/03(土) 13:55:06.60ID:PDe42KrN むしろガチガチに管理してくれれば個別にスクリプト実行なんてしなくて済むのに
103デフォルトの名無しさん
2021/04/03(土) 14:11:40.41ID:Bi+zSKdB batで済む事はbatが無難
済まない事はps1よりもexeが無難
済まない事はps1よりもexeが無難
104デフォルトの名無しさん
2021/04/03(土) 14:26:34.09ID:vSOTAguS >>101
ZoneIDのセキュリティブロックのことなら、イントラネットや信頼されたサイトだと問題ない
ZoneIDのセキュリティブロックのことなら、イントラネットや信頼されたサイトだと問題ない
105デフォルトの名無しさん
2021/04/03(土) 14:32:21.88ID:1anAZoL9 自分の別のPCからteamsのファイル共有で持ってきただけなんだけどね
106デフォルトの名無しさん
2021/04/03(土) 15:18:17.29ID:sC0R2LUF >>98
ExecutionPolicy の話?
なら、-Command 使ってるから要らんよ
他にもバイパスする方法は色々あるし
https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/
ExecutionPolicy の話?
なら、-Command 使ってるから要らんよ
他にもバイパスする方法は色々あるし
https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/
107デフォルトの名無しさん
2021/04/03(土) 20:22:37.90ID:1+c+Mqlb -Scope CurrentUser なら権限いらないんじゃね
108デフォルトの名無しさん
2021/04/03(土) 21:42:59.31ID:pdE0Ehe0 PwerShell はファイル行数を取得しようとうっかり wc -l ファイルパス を呼ぶと延々と戻ってこない
109デフォルトの名無しさん
2021/04/04(日) 14:18:40.58ID:wP1wKXuq > Get-Command wc
Get-Command : 用語 'wc' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されま
せん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく
ださい。
Get-Command : 用語 'wc' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されま
せん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく
ださい。
110デフォルトの名無しさん
2021/04/04(日) 14:52:39.08ID:GCV7dd01 >>108
即座にエラー出るけどな
即座にエラー出るけどな
111デフォルトの名無しさん
2021/04/04(日) 15:36:10.86ID:/BDkV6c4 >>109,110
失礼。 書き間違えた。wc はGit for Windowsに付属のwc.exeのこと。
正しくは以下のとおり。
cat ファイルパス | wc -l
catが遅いのかパイプが遅いのか両方なのか。
失礼。 書き間違えた。wc はGit for Windowsに付属のwc.exeのこと。
正しくは以下のとおり。
cat ファイルパス | wc -l
catが遅いのかパイプが遅いのか両方なのか。
112デフォルトの名無しさん
2021/04/04(日) 15:41:20.32ID:BHN4NYpU cygwinやmsysだとか、c:直下に入りたがるintel系のコンパイラとか、あちこちにパス通してると遅くなった気がする
ハッシュとかしてないんだろうか?する方法あったら知りたい
ハッシュとかしてないんだろうか?する方法あったら知りたい
113デフォルトの名無しさん
2021/04/04(日) 15:43:52.16ID:BHN4NYpU とりあえずパスの先の方に移してみたら、win/unix-likeで同名コマンド結構あるので衝突気にしないならだが
114デフォルトの名無しさん
2021/04/04(日) 15:45:18.85ID:/BDkV6c4 >>112
cat はcat.exeじゃなくてGet-Contentのaliasでした
wc -l ファイルパス は普通に速いからwc.exeの問題でもない
よって Get-Contentまたはパイプの問題ってことになりそう
cat はcat.exeじゃなくてGet-Contentのaliasでした
wc -l ファイルパス は普通に速いからwc.exeの問題でもない
よって Get-Contentまたはパイプの問題ってことになりそう
115デフォルトの名無しさん
2021/04/04(日) 15:53:23.09ID:/BDkV6c4 Get-Contentのcatだけじゃなくて cat.exe も遅いのか判断しようにもリダイレクトやパイプが関係してきて計時できない
116デフォルトの名無しさん
2021/04/04(日) 15:58:56.72ID:2OR59bwQ concatenateの略だということはもう忘れられている
117デフォルトの名無しさん
2021/04/04(日) 16:00:48.51ID:BHN4NYpU >>114
gcは何も言わなければStringのObject[]を返すと思うので、ストリームを期待しているだろうwcの移植に渡すのは気持ち悪い感じがするぞ(そのwc.exeを持ってないので推測だが
-bytestreamやら-rawやら色々オプションあるので、適切なのを探そう
パイプのバッファリングもstdbufに頼るlinuxよりは柔軟なので、もし駄目ならそっち方面調べてみて
gcは何も言わなければStringのObject[]を返すと思うので、ストリームを期待しているだろうwcの移植に渡すのは気持ち悪い感じがするぞ(そのwc.exeを持ってないので推測だが
-bytestreamやら-rawやら色々オプションあるので、適切なのを探そう
パイプのバッファリングもstdbufに頼るlinuxよりは柔軟なので、もし駄目ならそっち方面調べてみて
118デフォルトの名無しさん
2021/04/04(日) 16:07:02.09ID:BHN4NYpU 面倒でもあるけどなー
119デフォルトの名無しさん
2021/04/04(日) 16:22:26.07ID:oGhQpAP5 catは猫被ってるからな
(cat .profile)[-1]
(cat .profile)[-1]
120デフォルトの名無しさん
2021/04/04(日) 17:39:37.67ID:2IYRpr9r >>112
ハッシュするって何?
ハッシュするって何?
121デフォルトの名無しさん
2021/04/04(日) 18:05:16.10ID:S6//fvIQ >>120
一部のシェルではコマンドとコマンドパスの対応をハッシュテーブルで管理して高速化を図ってるものがある
なのでサーチパスを追加したりコマンドを追加したらrehashコマンドでハッシュテーブルを再構築する必要がある
って話じゃね?
一部のシェルではコマンドとコマンドパスの対応をハッシュテーブルで管理して高速化を図ってるものがある
なのでサーチパスを追加したりコマンドを追加したらrehashコマンドでハッシュテーブルを再構築する必要がある
って話じゃね?
122デフォルトの名無しさん
2021/04/04(日) 18:08:31.30ID:Oo+bypI+ ほほぅ。
123デフォルトの名無しさん
2021/04/04(日) 19:21:56.56ID:0E2xLu47 うちは6885行のtxtでGet-Contentもcat.exeも体感差はないな。しかしPSのパイプは遅い
PS> foreach ($i in (1..5)) {(Measure-Command { Get-Content hoge.txt | wc -l }).TotalMilliseconds}
2959.9704
3016.5222
3007.6643
3010.2928
3009.264
PS> foreach ($i in (1..5)) {(Measure-Command { cat.exe hoge.txt | wc -l }).TotalMilliseconds}
2908.5588
2900.6436
2905.2317
2962.6119
2895.1269
PS> foreach ($i in (1..5)) {(Measure-Command { wc -l hoge.txt }).TotalMilliseconds}
62.3373
61.1564
78.0376
62.6787
61.2903
PS> foreach ($i in (1..5)) {(Measure-Command { Get-Content hoge.txt | wc -l }).TotalMilliseconds}
2959.9704
3016.5222
3007.6643
3010.2928
3009.264
PS> foreach ($i in (1..5)) {(Measure-Command { cat.exe hoge.txt | wc -l }).TotalMilliseconds}
2908.5588
2900.6436
2905.2317
2962.6119
2895.1269
PS> foreach ($i in (1..5)) {(Measure-Command { wc -l hoge.txt }).TotalMilliseconds}
62.3373
61.1564
78.0376
62.6787
61.2903
124デフォルトの名無しさん
2021/04/04(日) 19:22:33.43ID:0E2xLu47 bash> time (cat hoge.txt | wc -l)
6885
real 0m0.047s
user 0m0.060s
sys 0m0.030s
bash> time wc -l hoge.txt
6885 hoge.txt
real 0m0.016s
user 0m0.030s
sys 0m0.031s
6885
real 0m0.047s
user 0m0.060s
sys 0m0.030s
bash> time wc -l hoge.txt
6885 hoge.txt
real 0m0.016s
user 0m0.030s
sys 0m0.031s
125デフォルトの名無しさん
2021/04/04(日) 20:38:15.51ID:DK2CM63v そもそもそのwc.exeってファイル引数とか取ってくれないの?
126デフォルトの名無しさん
2021/04/04(日) 20:48:48.02ID:wHZAJdLa PowerShellでファイルの行数を知りたいなら
Get-Content ファイルパス | Measure-Object -Line
Measure-Object
https://docs.microsoft.com/ja-jp/previous-versions/dd315251(v=technet.10)
-Line
入力オブジェクトの行数をカウントします。
Get-Content ファイルパス | Measure-Object -Line
Measure-Object
https://docs.microsoft.com/ja-jp/previous-versions/dd315251(v=technet.10)
-Line
入力オブジェクトの行数をカウントします。
127デフォルトの名無しさん
2021/04/04(日) 20:54:21.66ID:7FHk/GbQ128デフォルトの名無しさん
2021/04/04(日) 20:57:30.83ID:7FHk/GbQ あと一行毎に読み込んで処理するような作業でなければ、-readcount を大きく取れば比例して速くなるかと
129デフォルトの名無しさん
2021/04/04(日) 21:53:57.59ID:BHN4NYpU 完全に同じ物かは分からんが、一般的なwcコマンドはファイル引数取るね
わざわざgcでメモリに読み込んで渡すという奇怪なことはしなくていいと思う
行じゃなくて単語を数えるなら-Delimiterでよしなに分割してCount 属性見るとか
ただ、生gcで全部メモリに載せて属性見るのはスケーラブルでない事に注意
わざわざgcでメモリに読み込んで渡すという奇怪なことはしなくていいと思う
行じゃなくて単語を数えるなら-Delimiterでよしなに分割してCount 属性見るとか
ただ、生gcで全部メモリに載せて属性見るのはスケーラブルでない事に注意
130デフォルトの名無しさん
2021/04/04(日) 22:07:08.65ID:BHN4NYpU -Delimiterに空白扱いしたい文字を渡すだけではちゃんと連続スペースを圧縮してくれるかとか怪しいので、やめといたほうがいいか
せっかくwc.exeがあるんだから任せるのが無難
せっかくwc.exeがあるんだから任せるのが無難
131デフォルトの名無しさん
2021/04/07(水) 05:39:22.19ID:vrmwo0xd オワコン利用者が宗教がかってくるのはどんな分野でも似た感じだね
132デフォルトの名無しさん
2021/04/07(水) 12:11:53.76ID:qt/+ncLt なんでや、perl関係ないやろ
133デフォルトの名無しさん
2021/04/07(水) 21:20:44.96ID:MHznIgE8 HTMLファイルを[xml]に変換して $obj.html.bodyとか参照したいんですが、
↓のサイトで紹介されてる方法
https://win.just4fun.biz/?PowerShell/HTMLのtableタグをスクレイピング
$obj = [xml](Get-Content ファイル名)
この方法ではタグが対応してないとエラーが出てしまいます。素のHTMLなので当然なのですが。
タグが対応してないHTML前提で何か良い方法ありますか。
↓のサイトで紹介されてる方法
https://win.just4fun.biz/?PowerShell/HTMLのtableタグをスクレイピング
$obj = [xml](Get-Content ファイル名)
この方法ではタグが対応してないとエラーが出てしまいます。素のHTMLなので当然なのですが。
タグが対応してないHTML前提で何か良い方法ありますか。
134デフォルトの名無しさん
2021/04/07(水) 23:40:53.08ID:Y4NtoFD8 Powershellで時間だけの計算の方法を教えてください。
$s=((New-TimeSpan -Hours 50 -Minutes 35) + (New-TimeSpan -Hours 1 -Minutes 25)).TotalSeconds
$ts =[timespan]::FromSeconds($s)
("{0:hh\:mm\:ss}" -f $ts)
ググった結果ここまではいきついたのですが、24時間を超えると、桁が日に上がってしまいます。
24時間を超えた場合でも、25:00や、123:35のようにする方法を教えてください。
また、もう少し楽な書き方Excelライクに、10:15 + 20:45 = 31:00、みたいな楽な書き方があったら教えて下さい。
$s=((New-TimeSpan -Hours 50 -Minutes 35) + (New-TimeSpan -Hours 1 -Minutes 25)).TotalSeconds
$ts =[timespan]::FromSeconds($s)
("{0:hh\:mm\:ss}" -f $ts)
ググった結果ここまではいきついたのですが、24時間を超えると、桁が日に上がってしまいます。
24時間を超えた場合でも、25:00や、123:35のようにする方法を教えてください。
また、もう少し楽な書き方Excelライクに、10:15 + 20:45 = 31:00、みたいな楽な書き方があったら教えて下さい。
135デフォルトの名無しさん
2021/04/08(木) 04:25:58.89ID:kPGnX96o >>129
7z -e -so 2021-04-01.log.zip | wc -l
みたいな事もやりたいのかも。わざわざパイプにしてるって事は
それにしてもPowerShellは数字で始まるコマンドはそのままじゃダメなのか
&7zだとイケるけど…癖のあるシェルですな
7z -e -so 2021-04-01.log.zip | wc -l
みたいな事もやりたいのかも。わざわざパイプにしてるって事は
それにしてもPowerShellは数字で始まるコマンドはそのままじゃダメなのか
&7zだとイケるけど…癖のあるシェルですな
136デフォルトの名無しさん
2021/04/11(日) 22:42:10.00ID:2GAqbccY137デフォルトの名無しさん
2021/04/11(日) 22:52:32.66ID:2GAqbccY $ts = [timespan]'10:15' + [timespan]'20:45'
'{0:00}:{1:00}' -f $ts.TotalHours, $ts.Minutes
こんな感じ
'{0:00}:{1:00}' -f $ts.TotalHours, $ts.Minutes
こんな感じ
138デフォルトの名無しさん
2021/04/12(月) 21:18:29.84ID:6c3X7Cef139デフォルトの名無しさん
2021/04/12(月) 22:12:38.04ID:zW+k7vD0 質問したいんだけど、だれか教えて下さい。
外部アプリによるリネームの追跡をしたいんです。
リネームをする外部アプリで、リネームされたファイル名を拾いたいんです。
詳細
https://qiita.com/mtujikawa/questions/a0b4b36bc91585388cf2
だれか教えて下さい。
外部アプリによるリネームの追跡をしたいんです。
リネームをする外部アプリで、リネームされたファイル名を拾いたいんです。
詳細
https://qiita.com/mtujikawa/questions/a0b4b36bc91585388cf2
だれか教えて下さい。
140デフォルトの名無しさん
2021/04/12(月) 23:31:54.87ID:rYIhIPBW141デフォルトの名無しさん
2021/04/13(火) 17:45:40.70ID:fWoCeTea vbs速いって言うけどUTF8扱うようになる(ADODBでゴニョゴニョ)と
powershellが逆転するね
powershellが逆転するね
142デフォルトの名無しさん
2021/04/13(火) 17:58:30.89ID:u1AIe1VJ >>141
そうなんですか
そうなんですか
143デフォルトの名無しさん
2021/04/13(火) 19:01:37.43ID:HcUSKQeT $ts = [timespan]'0:15' + [timespan]'0:40' ; '{0:00}:{1:00}' -f $ts.TotalHours, $ts.Minutes
01:55
01:55
144デフォルトの名無しさん
2021/04/18(日) 15:36:47.84ID:d2aF4PUW 数値を強制的に2桁にする方法ですが、
3桁以上は上位2桁、1桁の場合は右詰めで0追加
とするためにはどうすればいいでしょうか?
整数以外の入力は考えなくて大丈夫です
(例)
12345 → 12
67 → 67
8 → 80
3桁以上は上位2桁、1桁の場合は右詰めで0追加
とするためにはどうすればいいでしょうか?
整数以外の入力は考えなくて大丈夫です
(例)
12345 → 12
67 → 67
8 → 80
145デフォルトの名無しさん
2021/04/18(日) 16:03:54.38ID:NvNv7S6I if文で分岐して10をかけたり割ったりするだけじゃだめなんですか?
146デフォルトの名無しさん
2021/04/18(日) 16:34:37.11ID:Y0OFPTQB 12345,67,8|%{[math]::floor($_/[math]::pow(10,[math]::floor([math]::log10($_))-1))}
147デフォルトの名無しさん
2021/04/18(日) 17:19:19.04ID:yV0lWVbT すごいのう
148デフォルトの名無しさん
2021/04/18(日) 17:26:13.82ID:okYCh92Q 無条件に最後に0を付けて左から2桁取ればいいのでは
149デフォルトの名無しさん
2021/04/18(日) 17:57:57.50ID:ZsDsAuud そんなんで表示されても判らんけどな
150デフォルトの名無しさん
2021/04/18(日) 20:02:19.21ID:NvNv7S6I >>148
これだな
これだな
151デフォルトの名無しさん
2021/04/18(日) 21:04:21.53ID:Y0OFPTQB その方が簡単だな。146は数値計算で済ませる思いつき
152デフォルトの名無しさん
2021/04/18(日) 21:53:28.24ID:a2J8UULJ >>149
分かるだろ
分かるだろ
153デフォルトの名無しさん
2021/04/18(日) 21:59:30.04ID:qI95yZS9 #/bin/sh
result=21
result2=3.1415
echo "$result * 10" | bc | cut -c 1-2 # 実行結果:21
echo "scale=5; $result2 * 10" | bc | cut -c 1-2 # 実行結果:31
result=21
result2=3.1415
echo "$result * 10" | bc | cut -c 1-2 # 実行結果:21
echo "scale=5; $result2 * 10" | bc | cut -c 1-2 # 実行結果:31
154デフォルトの名無しさん
2021/04/19(月) 08:23:13.80ID:tyk9bMXM 中古シェルだとたかが数値計算すらbcなんてコマンドをわざわざ使わなきゃいけないのか
しかも結果が文字列ってアホすぎ
しかも結果が文字列ってアホすぎ
155デフォルトの名無しさん
2021/04/19(月) 08:49:51.52ID:Igt3l5xr bashって外部コマンド使わずに純粋にシェルの機能だけだとまともな事出来ないの?
156デフォルトの名無しさん
2021/04/19(月) 15:00:37.86ID:5FdprbjY 12345,67,8|% {($_ * 10).ToString().SubString(0,2).ToInt32($null)}
157デフォルトの名無しさん
2021/04/19(月) 15:52:01.50ID:HBn8astV 分かりやすい
158デフォルトの名無しさん
2021/04/19(月) 17:18:39.52ID:J8N2amqC テキストファイルを読み込んで置換したりしているのですが、改行コードがマッチしません
function test($file){
$content = Get-Content -Encoding UTF8 $file
$content = $content -replace "`n", "HOGE"
$content
}
これで改行をHOGEにしようとしてもできません
`n を `r`n や \n や \r\n にしてもだめです(テキストエディタで見るとエンコードはUTF8、改行はCR+LFとなっています)
タブ文字は `t でできています
どのような理由が考えられるでしょうか?
function test($file){
$content = Get-Content -Encoding UTF8 $file
$content = $content -replace "`n", "HOGE"
$content
}
これで改行をHOGEにしようとしてもできません
`n を `r`n や \n や \r\n にしてもだめです(テキストエディタで見るとエンコードはUTF8、改行はCR+LFとなっています)
タブ文字は `t でできています
どのような理由が考えられるでしょうか?
159デフォルトの名無しさん
2021/04/19(月) 17:22:33.20ID:UiFLtBUU 改行コードと文字コードは、もう一度地球をやり直すしか
160デフォルトの名無しさん
2021/04/19(月) 17:32:10.70ID:J8N2amqC ちなみに同じテキストファイルは
秀丸エディタだと普通に \n で検索、置換ができています
秀丸エディタだと普通に \n で検索、置換ができています
161デフォルトの名無しさん
2021/04/19(月) 18:06:13.50ID:yrdOfXex >>155
この程度はbashでできるけど外部コマンドの橋渡しが基本。プログラム言語じゃないしな
for i in 12345 67 8; do y=${i}0; y=${y:0:2}; echo $y; done
変数は$(())で数値計算できる
PowerShell
12345,67,8 | %{[int]([string]$_+0).substring(0,2)}
156は古いPowerShellだとエラーになる([System.String]にToInt32がない)
この程度はbashでできるけど外部コマンドの橋渡しが基本。プログラム言語じゃないしな
for i in 12345 67 8; do y=${i}0; y=${y:0:2}; echo $y; done
変数は$(())で数値計算できる
PowerShell
12345,67,8 | %{[int]([string]$_+0).substring(0,2)}
156は古いPowerShellだとエラーになる([System.String]にToInt32がない)
162デフォルトの名無しさん
2021/04/19(月) 18:32:19.33ID:nuzEjzy+ >>158
$content = Get-Content $file -Raw -Encoding UTF8
$content = Get-Content $file -Raw -Encoding UTF8
163デフォルトの名無しさん
2021/04/19(月) 18:34:53.66ID:nsBabrZy ワロタ
164デフォルトの名無しさん
2021/04/19(月) 18:47:03.91ID:qG+FkDTL >>158
> どのような理由が考えられるでしょうか?
Get-Contentは改行で区切られた行を配列にして返す
なので返された内容には改行は無いよ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12183750652
> どのような理由が考えられるでしょうか?
Get-Contentは改行で区切られた行を配列にして返す
なので返された内容には改行は無いよ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12183750652
165デフォルトの名無しさん
2021/04/19(月) 18:54:06.68ID:PAGvXSVw >>144は、結果の数値に応じて場合分けするのに
最初の2桁を使いたいからその方法を聞いてるの?
最初の2桁を使いたいからその方法を聞いてるの?
166デフォルトの名無しさん
2021/04/19(月) 19:31:30.77ID:d6EDPzDg 148が言ってるみたいに文字列で処理した方が簡単かなぁ
PS C:\> $x = 1..5 |% { Get-Random -min 1 -max 20 }
PS C:\> $x
4
10
6
17
12
PS C:\> $x |% { -join ('{0}0' -f $_)[0..1] }
40
10
60
17
12
PS C:\> $x = 1..5 |% { Get-Random -min 1 -max 20 }
PS C:\> $x
4
10
6
17
12
PS C:\> $x |% { -join ('{0}0' -f $_)[0..1] }
40
10
60
17
12
167デフォルトの名無しさん
2021/04/19(月) 19:31:51.71ID:J8N2amqC >>162 でできました!
168デフォルトの名無しさん
2021/04/22(木) 12:55:52.92ID:dQFy3Puj bash/linux使っててpwsh初めましただけど
env:とかalias:とか疑似ファイルシステムみたいに潜れるの楽しい
-からの補完でロングオプション(パラメータ?)出てヘルプすら見ずとも取り敢えず動くのが素敵
もちろんオンラインヘルプもman以上に充実で素晴らしい
困った方も挙げとく
折角両方のコマンド使えるのでcatだけ本物に置き換えてる、pwshのgcとwinのtypeはそのまま
ただcdはbashビルトインで実体が無いので困った
子bashでglobal宣言しても$env:CDPATHに反映されてない?
何かワークアラウンドはないでしょうか?ヘビーユーザなので寂しい
勉強も兼ねてcdをpwshで書くのもいいかもしれないけど
env:とかalias:とか疑似ファイルシステムみたいに潜れるの楽しい
-からの補完でロングオプション(パラメータ?)出てヘルプすら見ずとも取り敢えず動くのが素敵
もちろんオンラインヘルプもman以上に充実で素晴らしい
困った方も挙げとく
折角両方のコマンド使えるのでcatだけ本物に置き換えてる、pwshのgcとwinのtypeはそのまま
ただcdはbashビルトインで実体が無いので困った
子bashでglobal宣言しても$env:CDPATHに反映されてない?
何かワークアラウンドはないでしょうか?ヘビーユーザなので寂しい
勉強も兼ねてcdをpwshで書くのもいいかもしれないけど
169デフォルトの名無しさん
2021/04/22(木) 12:59:06.25ID:dQFy3Puj 行/列(オブジェクト/プロパティ)をピボットテーブルみたいにグリグリ出来るのも楽しいね
そういうインタラクティブデータ分析はpython/pandasでやってたけど、pwshの方が楽かもしれない
そういうインタラクティブデータ分析はpython/pandasでやってたけど、pwshの方が楽かもしれない
170デフォルトの名無しさん
2021/04/22(木) 13:13:23.93ID:fmuwQogZ 他の言語で書いたらかなりの分量になるところを、psだと異様に短くなる
というケースが楽しい
というケースが楽しい
171デフォルトの名無しさん
2021/04/22(木) 13:22:29.78ID:dQFy3Puj echoしなくていいとか、?、%、&(call operator)、$_とか使いたくなりますね
perl臭がしてくるけど
perl臭がしてくるけど
172デフォルトの名無しさん
2021/04/22(木) 13:30:39.34ID:dQFy3Puj かっちり書けばほぼC#なのもいいところ
前からネットでサンプルコードちらほら見かけてたけど、そういうのはエイリアス無し&キャメルケースの厳つい見た目なので敬遠してしまってた
小文字でも構わないし、標準エイリアス&短縮規約(Get-Verb)あるんだって入れるまで知らなかった
前からネットでサンプルコードちらほら見かけてたけど、そういうのはエイリアス無し&キャメルケースの厳つい見た目なので敬遠してしまってた
小文字でも構わないし、標準エイリアス&短縮規約(Get-Verb)あるんだって入れるまで知らなかった
173デフォルトの名無しさん
2021/04/23(金) 09:46:07.10ID:+Mo8SLKI pwsh慣れた後にbash勉強したら面倒なんだけどみんなどう思ってる?
174デフォルトの名無しさん
2021/04/23(金) 10:01:56.87ID:sYoV5rep175デフォルトの名無しさん
2021/04/23(金) 10:48:54.99ID:lAPyDVC2 >>173
bashから入ってPS勉強中の俺には
ログインシェルとしては面倒
スクリプトとしては便利
と思ってる。本気で使おうと思ってないから効率的な使い方知らんだけだと思うが、メンバ確認でgm叩くのが面倒lessがないのも辛い
この時点でかなり億劫
スクリプトはどーせvscode使うからあまり気にならないんだが…
bashから入ってPS勉強中の俺には
ログインシェルとしては面倒
スクリプトとしては便利
と思ってる。本気で使おうと思ってないから効率的な使い方知らんだけだと思うが、メンバ確認でgm叩くのが面倒lessがないのも辛い
この時点でかなり億劫
スクリプトはどーせvscode使うからあまり気にならないんだが…
176デフォルトの名無しさん
2021/04/23(金) 11:06:13.19ID:sgIhdz3d 何でもpsでやろう、という気にはならないかな
psが向いてる用途にぴったりはまると気持ちいい
psが向いてる用途にぴったりはまると気持ちいい
177デフォルトの名無しさん
2021/04/23(金) 12:01:02.99ID:tWGuVFO6 非表示オプションにしてもコンソールが一瞬表示される問題さえ解決すればそのまま納品物にできるんだがなあ
今はPS2EXEでEXEにして納品してる
今はPS2EXEでEXEにして納品してる
178デフォルトの名無しさん
2021/04/23(金) 13:14:07.27ID:qwQTUI3N >>175
lessはbashの一部ではなくてコマンドではあるけど気持ちは分かるかな
自分はlinux環境でもbatやfd-find、ripgrepに切り替えててwindowsでもchocolateyで導入してるんで、同じ環境になってきました
lessはbashの一部ではなくてコマンドではあるけど気持ちは分かるかな
自分はlinux環境でもbatやfd-find、ripgrepに切り替えててwindowsでもchocolateyで導入してるんで、同じ環境になってきました
179デフォルトの名無しさん
2021/04/23(金) 15:21:26.04ID:cVnO9LUt Powershell(でなくてもいいがwindowsで)で「tail -f」したい。。
180デフォルトの名無しさん
2021/04/23(金) 15:43:23.54ID:qwQTUI3N181デフォルトの名無しさん
2021/04/23(金) 15:49:10.77ID:qwQTUI3N あとはget-contentにwaitオプションつけるとか
baretailは大きなサイズのファイルでもサクサク開けるのでビュワーとしても使える
baretailは大きなサイズのファイルでもサクサク開けるのでビュワーとしても使える
182デフォルトの名無しさん
2021/04/23(金) 16:04:17.49ID:S2TaYi95 Unixツールのtail.exeを入れてるけど
183デフォルトの名無しさん
2021/04/23(金) 17:48:18.62ID:V+AIjWKb ちょっと昔まではバッチとの比較がほとんどだったのに
時代の流れを感じる
時代の流れを感じる
184デフォルトの名無しさん
2021/04/23(金) 18:49:11.49ID:dmQwGyWy Git for Windows入れたらtail.exeとかも使えるようになる
185デフォルトの名無しさん
2021/04/23(金) 21:13:11.15ID:X1KZalWz param()と書くだけで
自分で書いたスクリプトもちゃんとパラメータ補完してくれるの偉い
自分の書いたの程覚えられない()
先頭複数行コメントがget-helpできるのも便利そう、思うだけでやってないが
bash/readlineもコマンド補完に力入れてる方だけど、コマンド毎のデータは誰かが手打ちしなきゃならないし、ちょっと仕様が複雑すぎる
まあpwshもpsとcmdlet以外はそうだけど、#!/usr/bin/pwsh、param、startするだけのラッパ書けばよい
ところでwslの人はポータブルにps1書けるの?シバンを認識するかとか、認識にps1拡張子必要かとか
まだ配布できる完成度じゃないけど、折角ならポータブルなスクリプトを書きたい
自分で書いたスクリプトもちゃんとパラメータ補完してくれるの偉い
自分の書いたの程覚えられない()
先頭複数行コメントがget-helpできるのも便利そう、思うだけでやってないが
bash/readlineもコマンド補完に力入れてる方だけど、コマンド毎のデータは誰かが手打ちしなきゃならないし、ちょっと仕様が複雑すぎる
まあpwshもpsとcmdlet以外はそうだけど、#!/usr/bin/pwsh、param、startするだけのラッパ書けばよい
ところでwslの人はポータブルにps1書けるの?シバンを認識するかとか、認識にps1拡張子必要かとか
まだ配布できる完成度じゃないけど、折角ならポータブルなスクリプトを書きたい
186デフォルトの名無しさん
2021/04/24(土) 00:07:18.71ID:zsZadCrK187デフォルトの名無しさん
2021/04/24(土) 16:21:27.70ID:eHVgMjKX188デフォルトの名無しさん
2021/04/24(土) 16:42:22.65ID:w/nYR7g5 windowsの内臓に手を突っ込むようなのが向いてる
189デフォルトの名無しさん
2021/04/24(土) 17:03:59.31ID:BpMFGApW windowsにプリインストールされてる対話環境もあるスクリプト言語っていう意味では向いてる、のかな???
190デフォルトの名無しさん
2021/04/24(土) 19:56:10.43ID:t2qu3ovB 正直wikdows周りの事には使ってない唐突にcosとか呼べるので(i)pythonから移行した
オブジェクトを置き去りにするとテーブル表示になって、ピボットテーブルみたいにグリグリできるのでデータ分析にもオッケー、パイプで書けるのも素直
csv, json, xmlもそのまま読み書きできる
高度な関数や重い行列計算はさすがにOctaveとかに投げるが
学習コスト下げたい人はR, Python, Octaveで自己完結した方がいいかも
オブジェクトを置き去りにするとテーブル表示になって、ピボットテーブルみたいにグリグリできるのでデータ分析にもオッケー、パイプで書けるのも素直
csv, json, xmlもそのまま読み書きできる
高度な関数や重い行列計算はさすがにOctaveとかに投げるが
学習コスト下げたい人はR, Python, Octaveで自己完結した方がいいかも
191デフォルトの名無しさん
2021/04/24(土) 19:59:04.19ID:t2qu3ovB Out-GridView(ogv)が個人的にキラーcmdlet
あとシェルとしても使える()
あとシェルとしても使える()
192デフォルトの名無しさん
2021/04/24(土) 20:01:35.65ID:t2qu3ovB 偏った見方なのは承知してるけど、インタラクティブにエクセル職人的な事やりたいなら、現状で最適なソフトかなと
193デフォルトの名無しさん
2021/04/24(土) 20:12:31.38ID:w/nYR7g5 PC起動したら、起動時刻と前回立ち下げ時刻をサーバのエクセルに追記させる
みたいなことを、他の言語でやろうとしたら大変
みたいなことを、他の言語でやろうとしたら大変
194デフォルトの名無しさん
2021/04/24(土) 22:11:52.14ID:zsZadCrK >>191
たしかにogvはお手軽に結果一覧するには超便利ですね
たしかにogvはお手軽に結果一覧するには超便利ですね
195187
2021/04/24(土) 23:12:45.35ID:eHVgMjKX 皆さんありがとうございます
196デフォルトの名無しさん
2021/04/25(日) 05:08:51.91ID:Xjg3V2+s お知恵をお貸し頂きたく…。
Excnange Online に接続して Get で出力したんですが、
波括弧{}でくくられた情報が wrap しても out-file してもどうしても省略されます。
これを全部表示する方法をどなたかご存じでしょうか…。
Excnange Online に接続して Get で出力したんですが、
波括弧{}でくくられた情報が wrap しても out-file してもどうしても省略されます。
これを全部表示する方法をどなたかご存じでしょうか…。
197196
2021/04/25(日) 05:11:37.83ID:Xjg3V2+s 言葉足らずでした。
{192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,...}
みたいに途中で切れてしまうアレです…。
{192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,...}
みたいに途中で切れてしまうアレです…。
198デフォルトの名無しさん
2021/04/25(日) 05:32:42.88ID:2+KF94a+ Out-GridVewもいいけどfzfをPowerShellで使えるようにしたほうが一貫性があっていいと思うけど
199デフォルトの名無しさん
2021/04/25(日) 14:29:14.34ID:Jy5Y44+Q200デフォルトの名無しさん
2021/04/25(日) 18:02:45.39ID:Vn29MKgq >>197
exchange onlineを触ったことが無いのでお困りの内容が正確にはわかってないのですが、対象のコレクションに対してforeach-objectするのはうまくいかないんでしょうか?
cmdletを記載してくれればもう少し分かるかも
exchange onlineを触ったことが無いのでお困りの内容が正確にはわかってないのですが、対象のコレクションに対してforeach-objectするのはうまくいかないんでしょうか?
cmdletを記載してくれればもう少し分かるかも
201デフォルトの名無しさん
2021/04/25(日) 18:53:01.63ID:s++hWM3P テキストファイルの空白行を連番で
[1]
[2]
のように置換するにはどうするといいでしょうか???
[1]
[2]
のように置換するにはどうするといいでしょうか???
202デフォルトの名無しさん
2021/04/25(日) 19:15:47.03ID:byqvN0Ft >>201
$i=1
foreach ($l in Get-Content test.txt) {
if ($l.Length -eq 0){
Write-Output ("[" + $i.ToString() + "]")
$i=$i+1
}else{
$l
}
}
こういう感じでいかがでしょうか。
あんまりうまくないと思いますが・・・。
$i=1
foreach ($l in Get-Content test.txt) {
if ($l.Length -eq 0){
Write-Output ("[" + $i.ToString() + "]")
$i=$i+1
}else{
$l
}
}
こういう感じでいかがでしょうか。
あんまりうまくないと思いますが・・・。
203デフォルトの名無しさん
2021/04/25(日) 19:22:08.51ID:/7sF+uPH >>201
下手だけどワンライナーだとこんな感じ
$i=0;Get-Content test.txt|ForEach-Object {if($_ -eq ""){$i++;"[$i]"}else{$_}}
下手だけどワンライナーだとこんな感じ
$i=0;Get-Content test.txt|ForEach-Object {if($_ -eq ""){$i++;"[$i]"}else{$_}}
204デフォルトの名無しさん
2021/04/25(日) 20:28:53.03ID:s++hWM3P なるほど
205デフォルトの名無しさん
2021/04/26(月) 01:03:37.54ID:BYmi+i0r >>196
Exchenge Online使ってないから入力や出力したい形式が分からないけど
$var | Out-File var.txt
だと表形式で長い値は省略されて
$var | Format-Table -Wrap | Out-File var.txt
だと省略されずに保存される
Exchenge Online使ってないから入力や出力したい形式が分からないけど
$var | Out-File var.txt
だと表形式で長い値は省略されて
$var | Format-Table -Wrap | Out-File var.txt
だと省略されずに保存される
206デフォルトの名無しさん
2021/04/26(月) 17:17:59.89ID:iZOPqzuA Get-Contetは何で標準入力を受け取らないんだろう?
wshはできたのにな
wshはできたのにな
207デフォルトの名無しさん
2021/04/26(月) 22:25:20.75ID:a3SG/c+a 開発側がそんな機能使ってないからだろう
208デフォルトの名無しさん
2021/04/26(月) 23:42:37.65ID:oRZNh3Qz >>206
イメージ湧かないんですが、どういった使い方を想定されてるんでしょう?
イメージ湧かないんですが、どういった使い方を想定されてるんでしょう?
209デフォルトの名無しさん
2021/04/26(月) 23:57:32.20ID:3GJ+33uE たし蟹
210デフォルトの名無しさん
2021/04/27(火) 00:21:38.16ID:UNWScvKY catみたいに標準入力の結果を吐いてほしいんじゃないの
PowerShellはシェルとしての使いやすさよりも直行性を重視してるところがあるので、単に設計思想の違いだろう
PowerShellはシェルとしての使いやすさよりも直行性を重視してるところがあるので、単に設計思想の違いだろう
211デフォルトの名無しさん
2021/04/27(火) 03:10:21.87ID:SJKbfdaZ 標準入力を受け取らない理由なんてないし、実際受け取るんだけども…
get-contentという名前から、何を入力として期待しているのか考えてみなよ
get-contentという名前から、何を入力として期待しているのか考えてみなよ
212デフォルトの名無しさん
2021/04/27(火) 06:30:59.80ID:Q96mKs6z PoweShellはWSLが普及したらオワコン化するってホント?
213デフォルトの名無しさん
2021/04/27(火) 08:35:24.00ID:5DBHgWrV >>211
「内容を取得せよ」という名前なんだからcatみたいに標準入力があれば標準入力の内容も出力してくれても別におかしくはないでしょ
PowerShellのget-contentに同様の機能があれば君も普通に使ってると思うぞ
とはいえ、あれば便利だからといって何でも入れたら神コマンド化するから、そこは直行性とのバランスで取捨選択した結果なんだろう
「内容を取得せよ」という名前なんだからcatみたいに標準入力があれば標準入力の内容も出力してくれても別におかしくはないでしょ
PowerShellのget-contentに同様の機能があれば君も普通に使ってると思うぞ
とはいえ、あれば便利だからといって何でも入れたら神コマンド化するから、そこは直行性とのバランスで取捨選択した結果なんだろう
214デフォルトの名無しさん
2021/04/27(火) 09:10:46.77ID:x4iH29Y2 その反応はアドバイスに対して論理が微妙じゃね
「『内容を取得せよ』という名前なんだから標準入力から受け取ったファイル名を元に内容を取り出す仕様でも別におかしくはないでしょ」っていうのもまんま成り立つよな
二通りの仕様が考えられるときにcatと同じじゃないのはおかしいというのは先入観に引きずられすぎ
ゼロベースで考えたらGet-Contentの今の仕様は妥当だと思う
Poweshellで標準入力を標準出力にパイプしたいときにcatじゃなきゃいけない理由ってあるの?
「『内容を取得せよ』という名前なんだから標準入力から受け取ったファイル名を元に内容を取り出す仕様でも別におかしくはないでしょ」っていうのもまんま成り立つよな
二通りの仕様が考えられるときにcatと同じじゃないのはおかしいというのは先入観に引きずられすぎ
ゼロベースで考えたらGet-Contentの今の仕様は妥当だと思う
Poweshellで標準入力を標準出力にパイプしたいときにcatじゃなきゃいけない理由ってあるの?
215デフォルトの名無しさん
2021/04/27(火) 10:03:00.94ID:5DBHgWrV catは echo abc | cat x.txt - y.txt で x.txt と文字列 "abc" と y.txt を順に結合できる
同じことをpwshでやろうとすると少し頭使うだろう
pwshにはエイリアスにlsとかあったりするのに、MSがget-contentを設計する際にcatを全く意識せずゼロベースで考えたというのはさすがに普通に考えてありえない
意思を持ってcatと同じにしなかったのだろうし、別にそれが間違っているとは思わない
同じことをpwshでやろうとすると少し頭使うだろう
pwshにはエイリアスにlsとかあったりするのに、MSがget-contentを設計する際にcatを全く意識せずゼロベースで考えたというのはさすがに普通に考えてありえない
意思を持ってcatと同じにしなかったのだろうし、別にそれが間違っているとは思わない
216デフォルトの名無しさん
2021/04/27(火) 11:22:55.90ID:VpxSAxjv あー、concatinateとして使いたいってことか
普通のcatもその使い方しないから全然気づけなかった
普通のcatもその使い方しないから全然気づけなかった
217デフォルトの名無しさん
2021/04/27(火) 12:44:35.43ID:a/NQjOQm なるほどね、208の質問にそう答えてくれてればスムーズに話が進んでたと思うよ
直行性という意味ではjoinなどの結合操作だね
書き方に悩むのはどっちに慣れてるかってことでしかないと思う
歴史的経緯でこんがらがった過去のシェル環境達を負の遺産ごと継承するよりも改めて再整理したいって話と、わかりやすいエイリアスを付けてあげたいってのもまた別の話
直行性という意味ではjoinなどの結合操作だね
書き方に悩むのはどっちに慣れてるかってことでしかないと思う
歴史的経緯でこんがらがった過去のシェル環境達を負の遺産ごと継承するよりも改めて再整理したいって話と、わかりやすいエイリアスを付けてあげたいってのもまた別の話
218デフォルトの名無しさん
2021/04/27(火) 13:21:29.99ID:LEUYIDaT wshはできるの意味がさっぱり分からん
219デフォルトの名無しさん
2021/04/27(火) 13:45:18.43ID:P9G7ihch >>166
単項の-join -splitあるなんて知らなかった…
単項の-join -splitあるなんて知らなかった…
220デフォルトの名無しさん
2021/04/27(火) 14:42:03.79ID:y9F4OEgN get-contentで検索文字列をテキストから取得し変数に入れているのですが、
*検索文字1*,*検索文字2*
と変数に入れると何も返ってこなくなります。検索文字列が一つだけなら問題なにのですが…
変数 = テキストファイル
get-content パス $変数
です。カンマをエスケープさせるのかアスタリスクをエスケープさせるのかこんがらがってきました…
知見を下さい…
*検索文字1*,*検索文字2*
と変数に入れると何も返ってこなくなります。検索文字列が一つだけなら問題なにのですが…
変数 = テキストファイル
get-content パス $変数
です。カンマをエスケープさせるのかアスタリスクをエスケープさせるのかこんがらがってきました…
知見を下さい…
221デフォルトの名無しさん
2021/04/27(火) 14:55:56.07ID:y9F4OEgN >>220
変数使う所はget-childitemでした。
変数使う所はget-childitemでした。
222デフォルトの名無しさん
2021/04/27(火) 15:14:13.72ID:y9F4OEgN223デフォルトの名無しさん
2021/04/27(火) 20:30:55.10ID:8D7txu9u テキストの中身をカンマじゃなくて改行で区切ればそんな苦労しなくて済むぞ
あと余計なお世話だけどGet-ChildItemが手打ちで動くことは確認した?
パラメーターがちょい怪しい気がするんだが…
あと余計なお世話だけどGet-ChildItemが手打ちで動くことは確認した?
パラメーターがちょい怪しい気がするんだが…
224デフォルトの名無しさん
2021/04/27(火) 20:51:05.42ID:P9G7ihch >>220
リテラルではカンマで渡してるから配列にしないとダメみたいね
test.txtの内容:
*.jpg,*.png
$r = gc test.txt
gci パス\* -Include ($r -split ",")
パスがカレントフォルダなら
gci ($r -split ",")
または
gci .\* -Include ($r -split ",")
または
gci * -Include ($r -split ",")
リテラルではカンマで渡してるから配列にしないとダメみたいね
test.txtの内容:
*.jpg,*.png
$r = gc test.txt
gci パス\* -Include ($r -split ",")
パスがカレントフォルダなら
gci ($r -split ",")
または
gci .\* -Include ($r -split ",")
または
gci * -Include ($r -split ",")
225デフォルトの名無しさん
2021/04/28(水) 09:11:25.07ID:BmPpt58I なんかテキストベースの志向してる人多くない?
テキストベースのデータは最低限配列化して扱うもんじゃないの?
テキストベースのデータは最低限配列化して扱うもんじゃないの?
226デフォルトの名無しさん
2021/04/28(水) 10:37:10.61ID:mkVGlKi3 PowerShellで配列を明示的に使うのはダサいしハマりやすいよ
パイプに任せた方がいい
パイプに任せた方がいい
227デフォルトの名無しさん
2021/04/28(水) 11:05:06.60ID:DwQIIr/C 他のシェルではテキストベースが普通というかむしろpwshが異端だしなぁ
手段を選ばなけりゃpwshでもInvoke-Expression使えるし
手段を選ばなけりゃpwshでもInvoke-Expression使えるし
228デフォルトの名無しさん
2021/04/28(水) 15:44:13.18ID:6n3amPUA229デフォルトの名無しさん
2021/04/29(木) 12:08:07.23ID:1cDcYESD 略称としてはpwshが今公式に推されている?
しかしposh呼びしているMSドキュメントも多い
拡張子的にはps
pshとか収まり良いけど既にあったりして紛らわしい系?
しかしposh呼びしているMSドキュメントも多い
拡張子的にはps
pshとか収まり良いけど既にあったりして紛らわしい系?
230デフォルトの名無しさん
2021/04/29(木) 12:47:36.17ID:Gvkp+FCp 推すとかじゃなくPowerShell6から実行ファイル名がpwshになった
コマンドとしてpwshが正式名称
コマンドとしてpwshが正式名称
231デフォルトの名無しさん
2021/04/29(木) 12:58:06.09ID:h5Kbt4/j pwshへのリネームはとんでもない破壊的変更なわけだけど、今後どうするんだろうね
powershellをpwshのエイリアスにしたらそれこそ阿鼻叫喚だろうからそれもなさそう
5は凍結して、そのうちWindowsにデフォルトでは入らなくてオプションで入れるようになるんだろうか
powershellをpwshのエイリアスにしたらそれこそ阿鼻叫喚だろうからそれもなさそう
5は凍結して、そのうちWindowsにデフォルトでは入らなくてオプションで入れるようになるんだろうか
232デフォルトの名無しさん
2021/04/29(木) 13:49:20.18ID:zjFXGfaT 実行ファイルの名前以前にwindows由来のモジュールが分離されてインポート必須になってるから、移行するんであればスクリプトの修正は必須ですね
233デフォルトの名無しさん
2021/04/29(木) 16:15:10.36ID:BF1GEXOZ 複数バージョンの同居認めてるからその辺は問題にならないと思う
つーかログオンスクリプトで既にガンガン使ってるから5が標準で消えたら死ぬ
つーかログオンスクリプトで既にガンガン使ってるから5が標準で消えたら死ぬ
234デフォルトの名無しさん
2021/04/29(木) 16:25:44.14ID:1cDcYESD 6はapt経由で7-preview入れたら塗りつぶされたけど、大体互換だからかな?
とりあえず俺は問題起きてないしよしとしよう
とりあえず俺は問題起きてないしよしとしよう
235デフォルトの名無しさん
2021/04/29(木) 16:35:06.74ID:LBeD0nWX 当面はIEとEdgeみたいに行くんじゃないかな
236デフォルトの名無しさん
2021/04/29(木) 21:07:38.49ID:XqZ5GoqI やっぱ、バッチだろ?
237デフォルトの名無しさん
2021/04/29(木) 21:34:01.87ID:tWFzcYm5 自分のスクリプト用はPowershell7
社内スクリプトやらはWindows Powershell(5系)
MSは互換性維持の為に古いものを限界まで残す所だから当面問題は無いと思う
ただPowershell7系はそろそろ安定して快適だしWindows標準で入れてくれて良いと思う
社内スクリプトやらはWindows Powershell(5系)
MSは互換性維持の為に古いものを限界まで残す所だから当面問題は無いと思う
ただPowershell7系はそろそろ安定して快適だしWindows標準で入れてくれて良いと思う
238デフォルトの名無しさん
2021/04/29(木) 23:43:33.70ID:BF1GEXOZ 7ってWindows7でも動くんだな
239デフォルトの名無しさん
2021/04/30(金) 02:48:31.39ID:YlfW6qtC 6→7では||とか&&とか?:とか演算子かなり増えたと思ったけど
6で実行すると将来の拡張に予約的なメッセージが出たはず
後方互換性はちゃっかり確保してるのね
6で実行すると将来の拡張に予約的なメッセージが出たはず
後方互換性はちゃっかり確保してるのね
240デフォルトの名無しさん
2021/04/30(金) 03:23:30.90ID:YlfW6qtC >>238
バックエンドの.NETが提供される限り、言語の部分に関してプラットフォームは関係ないからね
(俺は7持ってないから確認は出来ないが)
シス管機能に関わるプロバイダの部分は、VistaくらいからCim規格準拠(WMIとして)に力入れてるので、それも寄与してるかと
まだ公式リリースされてないが、 linuxでは特にUbuntuもCim準拠に力入れてる
近いうちにpwshのプラットフォーム間相互運用性の確保(pwshコードベースのメンテコスト)はかなり楽になるだろう
今はまだ統一的に見えるユーザーエクスペリエンスは、対応するAPIを繋ぎ合わせたアドホック実装されてる
アドホック実装が減ればコードベースが削減されるわけで、伝統シェルに劣るとされるファイルサイズデカい問題も解消されると期待している
バックエンドの.NETが提供される限り、言語の部分に関してプラットフォームは関係ないからね
(俺は7持ってないから確認は出来ないが)
シス管機能に関わるプロバイダの部分は、VistaくらいからCim規格準拠(WMIとして)に力入れてるので、それも寄与してるかと
まだ公式リリースされてないが、 linuxでは特にUbuntuもCim準拠に力入れてる
近いうちにpwshのプラットフォーム間相互運用性の確保(pwshコードベースのメンテコスト)はかなり楽になるだろう
今はまだ統一的に見えるユーザーエクスペリエンスは、対応するAPIを繋ぎ合わせたアドホック実装されてる
アドホック実装が減ればコードベースが削減されるわけで、伝統シェルに劣るとされるファイルサイズデカい問題も解消されると期待している
241デフォルトの名無しさん
2021/04/30(金) 04:34:13.88ID:wKh1zPtl >>229
そこらの経緯はこの記事にまとまってるよ
PowerShell 6.0からPowerShellのプログラム名がpwshに変わります
https://blog.shibata.tech/entry/2017/10/19/073001
元々、略称はposh呼びが多かったみたい(容易に発音可能だし)
pshはPerl Shellと被るので避けたそうだ
そこらの経緯はこの記事にまとまってるよ
PowerShell 6.0からPowerShellのプログラム名がpwshに変わります
https://blog.shibata.tech/entry/2017/10/19/073001
元々、略称はposh呼びが多かったみたい(容易に発音可能だし)
pshはPerl Shellと被るので避けたそうだ
242デフォルトの名無しさん
2021/04/30(金) 04:37:38.21ID:wKh1zPtl マルチプラットフォーム化の為に作り替えて、
違う系統であることが明確になるよう、名前も変えてたね
(.NETと同じく過渡的な措置だったのだろうけど)
Windows PowerShell(5系以前) → PowerShell Core(6系) → PowerShell(7系以降)
違う系統であることが明確になるよう、名前も変えてたね
(.NETと同じく過渡的な措置だったのだろうけど)
Windows PowerShell(5系以前) → PowerShell Core(6系) → PowerShell(7系以降)
243デフォルトの名無しさん
2021/04/30(金) 09:49:22.19ID:jI6ILm2+ PowerShell core(6系)の時はWindowsの内部操作系(IP確認やら)はホントまともに動かなかった
それがPowerShell7になったら殆ど動く様になった時は感動したわ、Out-GridViewも復活したし
それがPowerShell7になったら殆ど動く様になった時は感動したわ、Out-GridViewも復活したし
244デフォルトの名無しさん
2021/04/30(金) 11:12:11.62ID:vAph35tm 略称を作る時に母音を飛ばすのは普通なので、poshよりはpwshの方がまとも
posh1が上品とかの意味を持つ既存の英単語だから、わざとそう呼んだ
posh2として軽蔑する時に発する音、という意味もあるのでなおさら
posh1が上品とかの意味を持つ既存の英単語だから、わざとそう呼んだ
posh2として軽蔑する時に発する音、という意味もあるのでなおさら
245デフォルトの名無しさん
2021/04/30(金) 11:38:19.70ID:wi8S/EBa >>243
言語の移植はそれほど難しくないけど環境依存のコードを含むコマンドレットとかは地道にやるしかないからIP確認とかが遅れるのはしゃーない
言語の移植はそれほど難しくないけど環境依存のコードを含むコマンドレットとかは地道にやるしかないからIP確認とかが遅れるのはしゃーない
246デフォルトの名無しさん
2021/04/30(金) 15:57:16.65ID:YlfW6qtC 名前にdefine使って、偶然7時点で将来に予約メッセージを受けた
まあこんな一般的な単語をユーザーが使うべきではないというのは置いといて…
まあこんな一般的な単語をユーザーが使うべきではないというのは置いといて…
247デフォルトの名無しさん
2021/04/30(金) 18:32:28.97ID:EP14bd4r わりと1の時点から将来的に使いそうなのは予約語に入ってたよ、classとか
248デフォルトの名無しさん
2021/04/30(金) 21:39:12.47ID:YlfW6qtC249デフォルトの名無しさん
2021/04/30(金) 21:42:27.17ID:YlfW6qtC 標準はちょっとverboseすぎるから、共通パラメータやメンバを無視して表示くらいの設定はしておきたい
250デフォルトの名無しさん
2021/04/30(金) 23:05:03.03ID:HzZKeJse GetTypeとか存在すると分かりきってて、定義も自明なのはする必要ないね
高度なメタプログラミングしてたら別だけれども
高度なメタプログラミングしてたら別だけれども
251デフォルトの名無しさん
2021/05/13(木) 00:10:17.01ID:JmJXN960 PowerShell7のGet-ClipboardにFormatパラメータ的なものないの?
PowerShell5ではそれを指定してクリップボード内の画像だったりを取得できたと思うが
PowerShell5ではそれを指定してクリップボード内の画像だったりを取得できたと思うが
252デフォルトの名無しさん
2021/05/13(木) 08:30:28.50ID:D1RFiq2C253デフォルトの名無しさん
2021/05/13(木) 08:47:27.44ID:GPaJZvxF >>251
クロスプラットフォーム化でテキスト以外のサポートはなくなった
画像とか取得したければ、面倒だけど自前でSystem.Windows.Forms.Clipboard使ってやるしかないね
こういうやつ↓
https://qiita.com/saggie/items/44cb8b317fe0effa5891
クロスプラットフォーム化でテキスト以外のサポートはなくなった
画像とか取得したければ、面倒だけど自前でSystem.Windows.Forms.Clipboard使ってやるしかないね
こういうやつ↓
https://qiita.com/saggie/items/44cb8b317fe0effa5891
254デフォルトの名無しさん
2021/05/13(木) 13:12:28.84ID:RarJcXhy255デフォルトの名無しさん
2021/05/13(木) 20:36:41.84ID:6FdqfrSd256デフォルトの名無しさん
2021/05/13(木) 22:30:23.52ID:gFpazqk/ マチルプラットフォーム化すると各プラットフォームの最小公倍数の機能になっちゃうからね
257デフォルトの名無しさん
2021/05/13(木) 23:15:59.38ID:QRC6YBG4 なら高機能化しているな
258デフォルトの名無しさん
2021/05/14(金) 19:43:20.62ID:0BboAQlT Windows PowerShellとか処理は遅いし使えない機能は多いわ文字コードはSJISがデフォルトだったりとか仕様も古くて微妙だしな
一部機能は使えなくてもPowerShell7はかなり進化してるわ
一部機能は使えなくてもPowerShell7はかなり進化してるわ
259デフォルトの名無しさん
2021/05/14(金) 20:03:04.00ID:SDgEiaJx それでもWindows PowerShellが好き
260デフォルトの名無しさん
2021/05/19(水) 03:38:40.25ID:ZyjXFBY0 winのクリップボードはやけに高機能だよな
田+vで履歴、それを再編集、ピン留め等
gui環境ならコマンドヒストリの代わりにもなる、というかより便利
rtfはターミナル民的には興味ないけど、pwsh がコマンドライン上でサポートしなくても、ターミナルアプリの設定あたりで補えるのでは
(wtの設定にはある)
田+vで履歴、それを再編集、ピン留め等
gui環境ならコマンドヒストリの代わりにもなる、というかより便利
rtfはターミナル民的には興味ないけど、pwsh がコマンドライン上でサポートしなくても、ターミナルアプリの設定あたりで補えるのでは
(wtの設定にはある)
261デフォルトの名無しさん
2021/05/19(水) 03:42:31.56ID:ZyjXFBY0 プレーンテキストといえど、所詮リッチテキストはマークアップされたプレーンテキストなのだから、適当にエスケープするように*-clipboard cmdletsをラップしてしまえば良いのでは
思い付きなんで上手くいくかはわからんが
思い付きなんで上手くいくかはわからんが
262デフォルトの名無しさん
2021/05/24(月) 18:38:56.02ID:BIWUkQ+d TCP IPをPowerShellでさわったことある人いたらクライアントで受信する方法について教えてほしい
何から手を付けたらいいかわからん
何から手を付けたらいいかわからん
263デフォルトの名無しさん
2021/05/24(月) 18:53:53.78ID:cJIXfLgE >>262
まずは何をしたいのか書くところからかな
TCP/IP上に独自プロコトルでデータやり取りしたいとか言うならPowerShellよりC#とかの方が楽かもしれないからPowerShellでやりたい理由も書いてくれるといいかも
まずは何をしたいのか書くところからかな
TCP/IP上に独自プロコトルでデータやり取りしたいとか言うならPowerShellよりC#とかの方が楽かもしれないからPowerShellでやりたい理由も書いてくれるといいかも
264デフォルトの名無しさん
2021/05/24(月) 19:40:52.20ID:CXmqjMeO Powershellでやる場合はC#と同じく.NET FrameworkのSystem.Net.Socketsを使うことになるだろうから
他の言語でのやり方を知ってるなら下ののC#(.NET)の箇所を参考にすればいいのでは
https://www.ne.jp/asahi/hishidama/home/tech/lang/socket.html
他の言語でのやり方を知ってるなら下ののC#(.NET)の箇所を参考にすればいいのでは
https://www.ne.jp/asahi/hishidama/home/tech/lang/socket.html
265デフォルトの名無しさん
2021/05/24(月) 20:40:25.85ID:ux+C+2yc まずは、やりたい事を説明出来るレベルにまではなってからじゃないと無理ゲーじゃね?
266デフォルトの名無しさん
2021/05/24(月) 20:41:05.87ID:ux+C+2yc ワシの日本語なんか変だな。
人の事言えんかったわw
人の事言えんかったわw
267デフォルトの名無しさん
2021/05/24(月) 20:48:57.94ID:w2G2xBi9 今帰宅した262です。
>>263
やりたいことは限りなくデフォルトのwindowsで動くTCP IPのクライアントを作ること。
お客さんに納品する機械がTCP IPでしか操作できないらしいので出来るだけ環境構築やインストール作業の必要ないクライアントを作る必要があったからなんだ。
>>264のレス見たらなんとなくわかった気がする。今の問題としては、適当に作ったサーバーに送信したものを返させてテストしてるけど数字しか帰ってこなくて困っていた。
とりま今あるスクリプト晒します。
$socket = New-Object System.Net.Sockets.TcpClient("127.0.0.1",40001)
$stream = $socket.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.AutoFlush = $TRUE
$buffer = New-Object System.Byte[] 1024
while ($TRUE) {
$data = Read-Host("command?>>> ")
if ($data -eq "q") {
break
}elseif ($data) {
$writer.WriteLine($data) | Out-Null
$rawresponse = $reader.Read($buffer,0,1024)
Write-Output $rawresponse.GetType()
$response = [System.Text.Encoding]::Default.GetString($rawresponse)
Write-Output $response
}
}
$socket.Close()
>>263
やりたいことは限りなくデフォルトのwindowsで動くTCP IPのクライアントを作ること。
お客さんに納品する機械がTCP IPでしか操作できないらしいので出来るだけ環境構築やインストール作業の必要ないクライアントを作る必要があったからなんだ。
>>264のレス見たらなんとなくわかった気がする。今の問題としては、適当に作ったサーバーに送信したものを返させてテストしてるけど数字しか帰ってこなくて困っていた。
とりま今あるスクリプト晒します。
$socket = New-Object System.Net.Sockets.TcpClient("127.0.0.1",40001)
$stream = $socket.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.AutoFlush = $TRUE
$buffer = New-Object System.Byte[] 1024
while ($TRUE) {
$data = Read-Host("command?>>> ")
if ($data -eq "q") {
break
}elseif ($data) {
$writer.WriteLine($data) | Out-Null
$rawresponse = $reader.Read($buffer,0,1024)
Write-Output $rawresponse.GetType()
$response = [System.Text.Encoding]::Default.GetString($rawresponse)
Write-Output $response
}
}
$socket.Close()
268デフォルトの名無しさん
2021/05/24(月) 21:18:25.42ID:cJIXfLgE >>267
> 数字しか帰ってこなくて困っていた。
> $rawresponse = $reader.Read($buffer,0,1024)
そりゃReadメソッドの戻り値は数値(読み取った文字数)だから当たり前かと
PowerShell は文字列と数値を適宜変換しちゃったりするからC#やC++が使えるならそっちの方がデバッグが楽だと思う
> 数字しか帰ってこなくて困っていた。
> $rawresponse = $reader.Read($buffer,0,1024)
そりゃReadメソッドの戻り値は数値(読み取った文字数)だから当たり前かと
PowerShell は文字列と数値を適宜変換しちゃったりするからC#やC++が使えるならそっちの方がデバッグが楽だと思う
269デフォルトの名無しさん
2021/05/24(月) 21:35:34.82ID:w2G2xBi9270デフォルトの名無しさん
2021/05/24(月) 22:01:00.03ID:uBa1LY8b Ruby on Rails のテストでは、
HTTP のREST API なら、curl, Postman。
VSCode の拡張機能なら、REST Client, Thunder Client
REST Client では、コマンドパレットのGenerate Code Snippet で、
Ruby, PowerShell など、各言語のコードに変換してくれる!
TCP と言うのは、あまりに原始的過ぎて、よく分からない。
curlで出来るかも知れない
新し目のWindows 10 には、curl.exe も入った。
コマンドプロンプトで、where curl と入力すると、
C:\Windows\System32\curl.exe
なお、PowerShell内でcurlを使うのには注意が必要。
デフォルトで「Invoke-WebRequest」コマンドのエイリアスとして、curlが設定されている。
このため、PowerShell内でcurlコマンドを使うには、
フルパスを指定するか、curl.exeと指定する必要がある
Linux のcurlと区別するため、
漏れは、Invoke-WebRequest は、curlモドキ・なんちゃってcurlなどと呼んでいる
HTTP のREST API なら、curl, Postman。
VSCode の拡張機能なら、REST Client, Thunder Client
REST Client では、コマンドパレットのGenerate Code Snippet で、
Ruby, PowerShell など、各言語のコードに変換してくれる!
TCP と言うのは、あまりに原始的過ぎて、よく分からない。
curlで出来るかも知れない
新し目のWindows 10 には、curl.exe も入った。
コマンドプロンプトで、where curl と入力すると、
C:\Windows\System32\curl.exe
なお、PowerShell内でcurlを使うのには注意が必要。
デフォルトで「Invoke-WebRequest」コマンドのエイリアスとして、curlが設定されている。
このため、PowerShell内でcurlコマンドを使うには、
フルパスを指定するか、curl.exeと指定する必要がある
Linux のcurlと区別するため、
漏れは、Invoke-WebRequest は、curlモドキ・なんちゃってcurlなどと呼んでいる
271デフォルトの名無しさん
2021/05/24(月) 22:03:00.09ID:CXmqjMeO C#で書いてAdd-Typeで貼り付ければpowershellとして納品できるよ
下手にC#のコードをpowershellで書き直してもややこしくなるだけと俺は思う
C#のusingとか便利な機能はpowershellじゃ使えないし
下手にC#のコードをpowershellで書き直してもややこしくなるだけと俺は思う
C#のusingとか便利な機能はpowershellじゃ使えないし
272デフォルトの名無しさん
2021/05/24(月) 22:06:04.28ID:JeDrA5YU273270
2021/05/24(月) 22:12:06.08ID:uBa1LY8b 例えば、HTTP のREST API で、VSCode の拡張機能・REST Client で、
コマンドパレットのGenerate Code Snippet から、
PowerShell のInvoke-WebRequest に変換すると、
POST http://localhost:8888/ HTTP/1.1
content-type: application/json
[[0,0],[10,20],[10,10]]
変換後は、
$headers=@{}
$headers.Add("user-agent", "vscode-restclient")
$headers.Add("content-type", "application/json")
$response = Invoke-WebRequest -Uri 'http://localhost:8888/'
-Method POST -Headers $headers -ContentType 'application/json'
-Body '[[0,0],[10,20],[10,10]]'
コマンドパレットのGenerate Code Snippet から、
PowerShell のInvoke-WebRequest に変換すると、
POST http://localhost:8888/ HTTP/1.1
content-type: application/json
[[0,0],[10,20],[10,10]]
変換後は、
$headers=@{}
$headers.Add("user-agent", "vscode-restclient")
$headers.Add("content-type", "application/json")
$response = Invoke-WebRequest -Uri 'http://localhost:8888/'
-Method POST -Headers $headers -ContentType 'application/json'
-Body '[[0,0],[10,20],[10,10]]'
274デフォルトの名無しさん
2021/05/24(月) 22:44:21.48ID:w2G2xBi9275デフォルトの名無しさん
2021/05/25(火) 00:37:08.72ID:BrdQ0eWW 俺ならGo使うかな
276デフォルトの名無しさん
2021/05/25(火) 01:23:28.04ID:HjVIkAeM >>274
rawresponseじゃなくてbufferをencodingしてあげればいいところまでできてるんだから、このままpowershellでいいんでない?
rawresponseじゃなくてbufferをencodingしてあげればいいところまでできてるんだから、このままpowershellでいいんでない?
277デフォルトの名無しさん
2021/05/25(火) 08:42:47.61ID:ENuLboQX278デフォルトの名無しさん
2021/05/25(火) 09:15:13.27ID:aFPnVfgm readlineしたら解決しました。CUIだめって言われたらC#に手を出そうと思いますありがとうございました
279デフォルトの名無しさん
2021/05/26(水) 22:31:01.46ID:MX2vxe2/ xargs -I @に変わるものって何かあります?
280デフォルトの名無しさん
2021/05/26(水) 23:15:56.00ID:MX2vxe2/ 自己解決しました
$_にすでに代入されてました
$_にすでに代入されてました
281デフォルトの名無しさん
2021/05/31(月) 00:53:31.89ID:jC76eDpN サーバーのログファイルが24時越えの時刻形式で出力してくるんだけど
これをDateTime型に変換するもっとスマートな方法ありませんか?
$Date = "20210531285930"
# 24時超えなのでDateTime型に変換できない
[DateTime]::ParseExact($Date,"yyyyMMddHHmmss",$null)
# HH部分を-24でDateTime型に変換してからAddDays
[DateTime]::ParseExact(($Date.Insert(8,"{0:D2}" -f ($Date.Substring(8,2) -24))).Remove(10,2),"yyyyMMddHHmmss",$null).AddDays(1)
# 各部を切り出して-24でDateTime型に変換してからAddDays
([DateTime]($Date.SubString(0,4) + "/" + $Date.SubString(4,2) + "/" + $Date.SubString(6,2) + " {0:D2}" -f ($Date.SubString(8,2) -24) + ":" + $Date.SubString(10,2))).AddDays(1)
これをDateTime型に変換するもっとスマートな方法ありませんか?
$Date = "20210531285930"
# 24時超えなのでDateTime型に変換できない
[DateTime]::ParseExact($Date,"yyyyMMddHHmmss",$null)
# HH部分を-24でDateTime型に変換してからAddDays
[DateTime]::ParseExact(($Date.Insert(8,"{0:D2}" -f ($Date.Substring(8,2) -24))).Remove(10,2),"yyyyMMddHHmmss",$null).AddDays(1)
# 各部を切り出して-24でDateTime型に変換してからAddDays
([DateTime]($Date.SubString(0,4) + "/" + $Date.SubString(4,2) + "/" + $Date.SubString(6,2) + " {0:D2}" -f ($Date.SubString(8,2) -24) + ":" + $Date.SubString(10,2))).AddDays(1)
282デフォルトの名無しさん
2021/05/31(月) 00:57:08.36ID:jC76eDpN 一番下のやつ秒2桁が抜けてた・・
283デフォルトの名無しさん
2021/05/31(月) 04:45:30.44ID:c+QWTXgx ごく普通のやり方しか思いつかんかった
if ('20210531285931' -match '(\d{8})(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$h = $null
$date = $date.AddDays([math]::DivRem($Matches[2], 24, [ref]$h))
$date += [TimeSpan]::new($h, $Matches[3], $Matches[4])
$date.ToString('yyyyMMddhhmmss')
}
if ('20210531285931' -match '(\d{8})(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$h = $null
$date = $date.AddDays([math]::DivRem($Matches[2], 24, [ref]$h))
$date += [TimeSpan]::new($h, $Matches[3], $Matches[4])
$date.ToString('yyyyMMddhhmmss')
}
284デフォルトの名無しさん
2021/05/31(月) 07:24:21.11ID:M6x27Cpl >>281
24からいくつまで考慮すればいいですか?
24からいくつまで考慮すればいいですか?
285デフォルトの名無しさん
2021/05/31(月) 09:41:49.56ID:etoumxTf 0〜23時は、そのまま
24〜47時は、24 を引いて、0〜23 にして、1日足す
24〜47時は、24 を引いて、0〜23 にして、1日足す
286デフォルトの名無しさん
2021/05/31(月) 09:54:44.55ID:FG6+Y3f8 Javaだと勝手に繰り上げてむしろ頼んでねーよと思ったけどシェルスクリプトであるPSにはLenientな日付解釈が見当たらないな
ままならないね
ままならないね
287デフォルトの名無しさん
2021/05/31(月) 11:40:17.32ID:96kHy/rj 整数の24で割って割った値を日付に加算、余りを時間にすればいいんじゃね
288デフォルトの名無しさん
2021/05/31(月) 16:07:40.72ID:HhBT8tJD >>287
コード化するとこんな感じスかねぇ
$Date = "20210531285930"
if ($Date -match '(\d{8})(\d\d)(\d{4})') {
[DateTime]::ParseExact(
$matches[1] + "{0:00}" -f ($matches[2] % 24) + $Matches[3],
"yyyyMMddHHmmss",$null).AddDays([Math]::Truncate($matches[2] / 24))
}
結果
2021年6月1日 4:59:30
コード化するとこんな感じスかねぇ
$Date = "20210531285930"
if ($Date -match '(\d{8})(\d\d)(\d{4})') {
[DateTime]::ParseExact(
$matches[1] + "{0:00}" -f ($matches[2] % 24) + $Matches[3],
"yyyyMMddHHmmss",$null).AddDays([Math]::Truncate($matches[2] / 24))
}
結果
2021年6月1日 4:59:30
289デフォルトの名無しさん
2021/05/31(月) 17:54:07.74ID:Ji9/Q1Oe 短くできたw
if ('20210531285930' -match '(¥d{8})(¥d¥d)(¥d¥d)(¥d¥d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$date = $date.AddSeconds(3600 * $Matches[2] + 60 * $Matches[3] + $Matches[4])
}
if ('20210531285930' -match '(¥d{8})(¥d¥d)(¥d¥d)(¥d¥d)') {
$date = [datetime]::ParseExact($Matches[1],'yyyyMMdd', $null)
$date = $date.AddSeconds(3600 * $Matches[2] + 60 * $Matches[3] + $Matches[4])
}
291sage
2021/05/31(月) 22:04:33.58ID:u2buNtAx 普通にtimespanを足せば良いのでは
if ('20210531285930' -match '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::new($Matches[1],$Matches[2],$Matches[3]) + [timespan]::new($Matches[4],$Matches[5],$Matches[6])
}
if ('20210531285930' -match '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)') {
$date = [datetime]::new($Matches[1],$Matches[2],$Matches[3]) + [timespan]::new($Matches[4],$Matches[5],$Matches[6])
}
292デフォルトの名無しさん
2021/05/31(月) 22:21:34.37ID:Xrj+zWn5 それで良さそう
293デフォルトの名無しさん
2021/05/31(月) 22:56:32.02ID:Jlz0F1qQ なんや?!
みんな天才か〜?
みんな天才か〜?
295デフォルトの名無しさん
2021/06/01(火) 14:33:19.17ID:XU9T32gU うむ。.netのクラスとか俺ほとんど知らんしなw
296デフォルトの名無しさん
2021/06/01(火) 22:23:28.52ID:9NYpA/Ih Powershellって無くなるって本当ですか?
ある人が言うには、マイクロソフトが公式で
「Powershellは無くして、Bashに統合するって言ってるからPowershellなんて使えても意味ないよ」<ほぼ原文
という事らしいです。
@そのものズバリの公式案内って出てますか?
A「xxを拡大解釈して、↑のような話と勘違いしてるのではないか」というのがあったら教えてください。
ある人が言うには、マイクロソフトが公式で
「Powershellは無くして、Bashに統合するって言ってるからPowershellなんて使えても意味ないよ」<ほぼ原文
という事らしいです。
@そのものズバリの公式案内って出てますか?
A「xxを拡大解釈して、↑のような話と勘違いしてるのではないか」というのがあったら教えてください。
297デフォルトの名無しさん
2021/06/01(火) 22:39:23.71ID:4GbGJr6m 無くすとしても10年くらいかかりそう
298デフォルトの名無しさん
2021/06/01(火) 23:08:56.48ID:j5BVtDLr powershell 5.1じゃなくて.Net Coreベースのpowershell 7を学習しようとかじゃなくて、まるっきりbashに置き換わるってなると妄想レベルとしか
299デフォルトの名無しさん
2021/06/01(火) 23:19:45.60ID:zB/DdO2P マイクロソフト公式がそう言ってるならその発言ソースをググって見つければいい
公式→ある人→296→いまここ
なので、しょうもない伝言ゲームだろうね
公式→ある人→296→いまここ
なので、しょうもない伝言ゲームだろうね
300デフォルトの名無しさん
2021/06/02(水) 00:33:14.18ID:eotjJV13 そんな発言があれば間違いなくニュースになってる
301デフォルトの名無しさん
2021/06/02(水) 01:29:05.02ID:bSFCodu+ まあ無くなるかはともかく、pscoreでちょっと怪しくなってきたよね
pscoreが今後Windowsにバンドルされることは恐らくないだろうから、PowerShellはWindowsOSの一部から単なるアプリの一つへとある意味格下げされたわけだ
それについてはMSも公式に明言している(https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle?view=powershell-7.1)
そしてps5の方は既に完全にメンテナンスモード入りしており、今後の進化は無いし、いずれはWindowsにバンドルされなくなるだろう
PowerShellはWindowsプラットフォームにおいて特別な存在ではなくなりつつあり、bashと同じ土俵に降りるんだよ
pscoreが今後Windowsにバンドルされることは恐らくないだろうから、PowerShellはWindowsOSの一部から単なるアプリの一つへとある意味格下げされたわけだ
それについてはMSも公式に明言している(https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle?view=powershell-7.1)
そしてps5の方は既に完全にメンテナンスモード入りしており、今後の進化は無いし、いずれはWindowsにバンドルされなくなるだろう
PowerShellはWindowsプラットフォームにおいて特別な存在ではなくなりつつあり、bashと同じ土俵に降りるんだよ
302デフォルトの名無しさん
2021/06/02(水) 01:51:03.87ID:2CEtavTf 正直bash標準はイヤだな
PowerShellと比較して仕様が古臭過ぎる
PowerShellと比較して仕様が古臭過ぎる
303デフォルトの名無しさん
2021/06/02(水) 07:37:21.92ID:GaFo88h4 bashでwindowsの中身いじるのができなかったからpowershell作る必要があった訳で
304デフォルトの名無しさん
2021/06/02(水) 08:00:00.07ID:QekliMfV >>301
.NET 5か6がOSリリースに組み込まれるようになれば一緒に置き換わるでしょ
インタラクティブなシェル機能だけが重要でbashというかreadlineが使いたいなら使えばよいけど、.NETをbashから使える仕組みってできてるんだっけ?
.NET 5か6がOSリリースに組み込まれるようになれば一緒に置き換わるでしょ
インタラクティブなシェル機能だけが重要でbashというかreadlineが使いたいなら使えばよいけど、.NETをbashから使える仕組みってできてるんだっけ?
305デフォルトの名無しさん
2021/06/02(水) 08:48:27.00ID:UfLjqhXv bashとかを置き換えるつもりだと思ってたんだけど…
もうちょい野心持っていいのよ?
wsl使ってるけど$profileとか共有できてすごく便利なんだけど
bashもよく使うが、補完が各コマンドにハードコード対応してる仕組みなので、GNU Readlineが生きてないなと
PSReadline/pwshみたいにユーザースクリプトにParam記述できる仕様じゃないとインタラクティブシェルとして将来性が無いと思う
逆に言えば、コメントに#Param記述して読んで補完くれるbsh系があれば便利ね
コメントなら互換性も問題ないでしょ
もうちょい野心持っていいのよ?
wsl使ってるけど$profileとか共有できてすごく便利なんだけど
bashもよく使うが、補完が各コマンドにハードコード対応してる仕組みなので、GNU Readlineが生きてないなと
PSReadline/pwshみたいにユーザースクリプトにParam記述できる仕様じゃないとインタラクティブシェルとして将来性が無いと思う
逆に言えば、コメントに#Param記述して読んで補完くれるbsh系があれば便利ね
コメントなら互換性も問題ないでしょ
306デフォルトの名無しさん
2021/06/02(水) 08:52:13.04ID:UfLjqhXv wslスレ覗くとpwsh使ってる人結構多いように思える
まあ変なのいっぱい居てアレ過ぎるスレだが、蛇足
まあ変なのいっぱい居てアレ過ぎるスレだが、蛇足
307デフォルトの名無しさん
2021/06/02(水) 09:04:39.46ID:Q9QmX+x6 Windows Subsystem for Linux に関してよく寄せられる質問
https://docs.microsoft.com/ja-jp/windows/wsl/faq#powershell-----------------
PowerShell においてこれは何を意味しますか。
OSS プロジェクトでの作業中、PowerShell プロンプトから Bash を実行すると非常に役立つシナリオが多数あります。
Bash のサポートは補完的なものであり、Windows でのそのコマンド ラインの価値を高め、
PowerShell と PowerShell コミュニティでその他の一般的なテクノロジを利用できるようにします。
詳細については、PowerShell チームのブログ「Windows の Bash:それがすばらしい理由と PowerShell における意味」をお読みください
https://devblogs.microsoft.com/powershell/bash-for-windows-why-its-awesome-and-what-it-means-for-powershell/
https://docs.microsoft.com/ja-jp/windows/wsl/faq#powershell-----------------
PowerShell においてこれは何を意味しますか。
OSS プロジェクトでの作業中、PowerShell プロンプトから Bash を実行すると非常に役立つシナリオが多数あります。
Bash のサポートは補完的なものであり、Windows でのそのコマンド ラインの価値を高め、
PowerShell と PowerShell コミュニティでその他の一般的なテクノロジを利用できるようにします。
詳細については、PowerShell チームのブログ「Windows の Bash:それがすばらしい理由と PowerShell における意味」をお読みください
https://devblogs.microsoft.com/powershell/bash-for-windows-why-its-awesome-and-what-it-means-for-powershell/
308デフォルトの名無しさん
2021/06/02(水) 09:37:33.58ID:F5GxLFUH >>304
.NET5以降がWindowsにバンドルされることはないでしょ
ライフサイクルをWindowsに拘束されたくないから.NET Coreは完全なサイドバイサイドとSCDを実現したのに、そんなことをしたら台無し
.NETを使うならpwshというのはこれからもずっと変わらないだろうし、一貫したコマンドレットの体系でWindowsのサーバー管理ができるという強みもあるけど、後者については案外突然.NET非依存のWindows CLIとか出るかもよ
Azure CLIだってPythonで書かれてるんだし
.NET5以降がWindowsにバンドルされることはないでしょ
ライフサイクルをWindowsに拘束されたくないから.NET Coreは完全なサイドバイサイドとSCDを実現したのに、そんなことをしたら台無し
.NETを使うならpwshというのはこれからもずっと変わらないだろうし、一貫したコマンドレットの体系でWindowsのサーバー管理ができるという強みもあるけど、後者については案外突然.NET非依存のWindows CLIとか出るかもよ
Azure CLIだってPythonで書かれてるんだし
309デフォルトの名無しさん
2021/06/02(水) 09:53:48.83ID:IMALmVrS それもしかして、WSHというヤツでは?
まあ好きでもないし新しいのに置き換えてくれるのは歓迎だよ
$wsh = new-object -com w/cscript.shell
みたいにしてたまにメソッドこねこねするけど、COMオブジェクトのインターフェイス備えるなら今まで通り叩けるんじゃない
まあ好きでもないし新しいのに置き換えてくれるのは歓迎だよ
$wsh = new-object -com w/cscript.shell
みたいにしてたまにメソッドこねこねするけど、COMオブジェクトのインターフェイス備えるなら今まで通り叩けるんじゃない
310デフォルトの名無しさん
2021/06/02(水) 11:02:38.88ID:CFdyIdLe C#越しとかでローレベルAPI叩けたり大丈夫かこれって思ってたらやっぱ消えるのか・・・
311デフォルトの名無しさん
2021/06/02(水) 11:07:50.97ID:E0Lr8asm >>310
消えないよ
消えないよ
312デフォルトの名無しさん
2021/06/02(水) 11:15:29.60ID:UfLjqhXv .net coreの実装はいっぱいあるからバックエンドは心配ないんじゃない?
MS推奨の.net core, asp core, 使ったことないがMSから少し離れてもmonoとか他にも
.net core(linux)は50MBくらいにまとまってたかと
MS推奨の.net core, asp core, 使ったことないがMSから少し離れてもmonoとか他にも
.net core(linux)は50MBくらいにまとまってたかと
313デフォルトの名無しさん
2021/06/02(水) 11:35:59.36ID:UfLjqhXv >>308
winへの巨大なpythonランタイムのバンドルが許されるんなら、.net coreもバンドルしていいんじゃないかな(並存で)
.net coreはpythonライブラリとしても便利だし、今時数百MBくらいケチらないで両方入れて欲しい
スマホにすら.net core以上相当のXamarinやmono入ってるだろ(多分ストアから依存経由で)
winへの巨大なpythonランタイムのバンドルが許されるんなら、.net coreもバンドルしていいんじゃないかな(並存で)
.net coreはpythonライブラリとしても便利だし、今時数百MBくらいケチらないで両方入れて欲しい
スマホにすら.net core以上相当のXamarinやmono入ってるだろ(多分ストアから依存経由で)
314デフォルトの名無しさん
2021/06/02(水) 12:14:47.64ID:F5GxLFUH >>313
WindowsにバンドルされてしまうとMSはそれをWindowsの一部としてサポートしなければならなくなり、.NETのモダンライフサイクルポリシーと矛盾する
また、Windowsにバンドルされているバージョン以外はほとんど利用されなくなり、プラットフォームの進化が停滞する
もしpwshをWindowsにバンドルするならSCDにして.NETのライフサイクルから分離してしまうしかないだろうけど、
それはそれで.NETランタイムのバージョンがpwshにバンドルされているものに拘束されることになり、pwshエコシステムの外にある.NET資産との連携がしづらくなるだろうから難しいところだな
WindowsにバンドルされてしまうとMSはそれをWindowsの一部としてサポートしなければならなくなり、.NETのモダンライフサイクルポリシーと矛盾する
また、Windowsにバンドルされているバージョン以外はほとんど利用されなくなり、プラットフォームの進化が停滞する
もしpwshをWindowsにバンドルするならSCDにして.NETのライフサイクルから分離してしまうしかないだろうけど、
それはそれで.NETランタイムのバージョンがpwshにバンドルされているものに拘束されることになり、pwshエコシステムの外にある.NET資産との連携がしづらくなるだろうから難しいところだな
315デフォルトの名無しさん
2021/06/02(水) 12:36:23.07ID:rkuOfU34 winはサードパーティの物はバンドルしない方針じゃない?ルールになってるかはしらんが
まあ善き終身独裁者はMS社員なので、pythonがMSサポートになる可能性はあるかも?
最近サポート切れた2.7をバンドルし、ディストリ拡張に汎用してたlinuxは現に大変なことなってるし、止めといた方がいい
まあ善き終身独裁者はMS社員なので、pythonがMSサポートになる可能性はあるかも?
最近サポート切れた2.7をバンドルし、ディストリ拡張に汎用してたlinuxは現に大変なことなってるし、止めといた方がいい
316デフォルトの名無しさん
2021/06/02(水) 12:41:40.74ID:zHxHmDvh >>315
ゲイツはMSから退いてるぞ
ゲイツはMSから退いてるぞ
317デフォルトの名無しさん
2021/06/02(水) 12:47:09.90ID:UfLjqhXv python作者のことだろ、BDFL(benevolent dictator for life,だっけ)
30年以上歴史あるのに未だにバンバン破壊的変更加えてる姿勢は見習うべき
pwsh core使ってる層にロングタームサポート望んでる人はそんな多くないだろ
堅牢にやりたいならshやwsh、.net framework使え
30年以上歴史あるのに未だにバンバン破壊的変更加えてる姿勢は見習うべき
pwsh core使ってる層にロングタームサポート望んでる人はそんな多くないだろ
堅牢にやりたいならshやwsh、.net framework使え
318デフォルトの名無しさん
2021/06/02(水) 13:04:35.43ID:UfLjqhXv 見てきた
Version サポート終了
7.1 2022 年 2 月中旬 (予定)
7.0 2022 年 12 月 3 日 ☆LTS
意外と短かった、こんなもんでいい
python3はマイナーバージョンでも予告なしでAPI変わるけど誰も気にしてない
3.10にして外部ライブラリ入れたら標準ライブラリcollectionsでNotFound頻発してるけど、その場で名前書き変えて問題なし、ヨシ!
って感じだし
Version サポート終了
7.1 2022 年 2 月中旬 (予定)
7.0 2022 年 12 月 3 日 ☆LTS
意外と短かった、こんなもんでいい
python3はマイナーバージョンでも予告なしでAPI変わるけど誰も気にしてない
3.10にして外部ライブラリ入れたら標準ライブラリcollectionsでNotFound頻発してるけど、その場で名前書き変えて問題なし、ヨシ!
って感じだし
319デフォルトの名無しさん
2021/06/02(水) 13:11:04.61ID:CFdyIdLe .>誰も気にしてない
めっちゃ主語でかいなー
そんなわけないだろ
めっちゃ主語でかいなー
そんなわけないだろ
320デフォルトの名無しさん
2021/06/02(水) 13:16:47.25ID:UfLjqhXv ごめん、エンドユーザーじゃなくてライブラリユーザーレベルの話だね
まあ気にしてる作者は仮想環境で複数バージョンテストしてそのうち直すだろ
まあ気にしてる作者は仮想環境で複数バージョンテストしてそのうち直すだろ
321デフォルトの名無しさん
2021/06/02(水) 13:35:13.53ID:gM4d3FGp パッケージマネージャに対してversion≧3.3のような、未来バージョンも含めた指定をするのは普通じゃなかろうか
対象に含まれてるはずなのに対応してないってことはそういう事だろ
対象に含まれてるはずなのに対応してないってことはそういう事だろ
322デフォルトの名無しさん
2021/06/02(水) 14:38:34.65ID:UfLjqhXv >>314
そういうことかね
ところで.net(core含む)はwindowsコンポーネントではないけど、windows updateでリンクすることは可能なよう
Automatic patching on Windows operating system
All versions of .NET that are supported can be automatically patched via Microsoft Update. This enables organizations to manage all .NET updates in the same way.
ついでにpwshもランタイム分離版(sdkに付いてるdotnetサブコマンドで起動するやつ)を含めてしまえば、停滞も避けれると思うのだけれど
社内デプロイ想定のようだけど、その場合はWindow Updateはむしろ切っときたいというのは、ツッコミどころ?
https://dotnet.microsoft.com/platform/support/policy/dotnet-core
そういうことかね
ところで.net(core含む)はwindowsコンポーネントではないけど、windows updateでリンクすることは可能なよう
Automatic patching on Windows operating system
All versions of .NET that are supported can be automatically patched via Microsoft Update. This enables organizations to manage all .NET updates in the same way.
ついでにpwshもランタイム分離版(sdkに付いてるdotnetサブコマンドで起動するやつ)を含めてしまえば、停滞も避けれると思うのだけれど
社内デプロイ想定のようだけど、その場合はWindow Updateはむしろ切っときたいというのは、ツッコミどころ?
https://dotnet.microsoft.com/platform/support/policy/dotnet-core
323デフォルトの名無しさん
2021/06/02(水) 17:45:18.44ID:eotjJV13 .NET 5のバンドルがありえないならbashのバンドルはもっとありえないだろ
324デフォルトの名無しさん
2021/06/02(水) 18:10:19.15ID:F5GxLFUH WSLはオプションとして既にWindowsにバンドルされていて、Windowsの次期メジャーアップデートではデフォルトで有効化されてコマンド一発でBashが入るようになるよ
325デフォルトの名無しさん
2021/06/02(水) 18:11:19.60ID:t4iIkgqg bashはwindowsには向かないと思うよ…
既にcygwinや派生のmimgwがあるけど、前者は完全にunixっぽい箱庭だし
一応winに適応を試みてる後者も限られた外部コマンド以外は自力移植で苦労ばかり、変に合わせた分むしろunixに慣れたユーザに拒絶されそう
単にunixの資産を活用したいならwslという手段があるので、今更MSが参入するとも思えない
既にcygwinや派生のmimgwがあるけど、前者は完全にunixっぽい箱庭だし
一応winに適応を試みてる後者も限られた外部コマンド以外は自力移植で苦労ばかり、変に合わせた分むしろunixに慣れたユーザに拒絶されそう
単にunixの資産を活用したいならwslという手段があるので、今更MSが参入するとも思えない
326デフォルトの名無しさん
2021/06/02(水) 18:24:43.00ID:t4iIkgqg (b)sh資産を活用するって言ったって、ファイルシステムやコマンドの振る舞いを決め打ちして書かれた物ばっかりだろ
箱庭にするしかない
一応wslからNTFSにもアクセスできるけど、よりファイル属性の少ないext4想定でlnとか使うとおかしな事になるよ
gnuが対応要請に答えるとも思えんし
シンボリックリンク貼りたいならnew-itemを使おう
箱庭にするしかない
一応wslからNTFSにもアクセスできるけど、よりファイル属性の少ないext4想定でlnとか使うとおかしな事になるよ
gnuが対応要請に答えるとも思えんし
シンボリックリンク貼りたいならnew-itemを使おう
327デフォルトの名無しさん
2021/06/02(水) 18:43:46.15ID:UfLjqhXv 話が噛み合ってない感
328デフォルトの名無しさん
2021/06/02(水) 18:46:54.40ID:UfLjqhXv そもそもwin用シェルとしてbashがマトモに使えるなんて思ってる人なんて居ないだろう
それこそcygwin等の試み見れば明らかなわけで
それこそcygwin等の試み見れば明らかなわけで
329デフォルトの名無しさん
2021/06/02(水) 18:59:31.15ID:2HVZ8jbI あとは>>296の知り合いが何でこんな盲言を吐いたかだが
330デフォルトの名無しさん
2021/06/02(水) 19:03:10.35ID:3t5/Z9zL その知り合いのソースは何なんだ
331デフォルトの名無しさん
2021/06/02(水) 19:51:52.07ID:24d6Ptrc ウスターソース
332296
2021/06/02(水) 19:54:46.99ID:WrCWc0lw すいません、もうちっと前後関係書くべきでした、
私→転職者
ボス→ボス
無くなるさん→Powershell無くなるよさん
ボス「私さん、何がスクリプト言語的なものって扱える?」
私「bashと、Powershellはそこそこ使えます」「あと、おまけ程度ですがVBAも少々」
ボスLinuxとWindows両方いけるんだね」「Powershellは使える人少ないから、助かる!」
無くなるさん「Powershellは無くして、Bashに統合するって言ってるからPowershellなんて使えても意味ないよ」
っていう流れがありました事を、ご報告いたします。
今は7系勉強中です。
私→転職者
ボス→ボス
無くなるさん→Powershell無くなるよさん
ボス「私さん、何がスクリプト言語的なものって扱える?」
私「bashと、Powershellはそこそこ使えます」「あと、おまけ程度ですがVBAも少々」
ボスLinuxとWindows両方いけるんだね」「Powershellは使える人少ないから、助かる!」
無くなるさん「Powershellは無くして、Bashに統合するって言ってるからPowershellなんて使えても意味ないよ」
っていう流れがありました事を、ご報告いたします。
今は7系勉強中です。
333デフォルトの名無しさん
2021/06/02(水) 19:59:01.30ID:QekliMfV スクリプト前提の文脈なんで、なおさらスルーでよさげですね
ただのマウンターにしかみえないっす
ただのマウンターにしかみえないっす
334デフォルトの名無しさん
2021/06/02(水) 20:05:35.68ID:paXbiIpM ボスの発言の後でそれ言える勇気は凄いな
詳細thxだけど知り合いにバレないよう気を付けてね
詳細thxだけど知り合いにバレないよう気を付けてね
335デフォルトの名無しさん
2021/06/02(水) 20:16:35.85ID:bfx/xSx/ wslとか言ってる奴はプロセス制御とかどうする気なのか気になる
winネイティブ実装のbash(msys?)なら原理的には可能とおもうが…
*-Processがそれぞれどのコマンドにマッピングされてるのか気になる
winネイティブ実装のbash(msys?)なら原理的には可能とおもうが…
*-Processがそれぞれどのコマンドにマッピングされてるのか気になる
336デフォルトの名無しさん
2021/06/02(水) 21:09:20.70ID:hTaL5nRv 公式win版sh系移植が出るんなら、それはそれで裾野が広がるからいいと思う
ただし新規導入されるであろうcomオブジェクトやレジストリ弄りコマンドを、引数補完の弱いbashでやるのは勘弁してほしい
たぶん古き悪き対話式のwinコマンド叩く事になりそう
もしやるならzshで頼む
ただし新規導入されるであろうcomオブジェクトやレジストリ弄りコマンドを、引数補完の弱いbashでやるのは勘弁してほしい
たぶん古き悪き対話式のwinコマンド叩く事になりそう
もしやるならzshで頼む
337デフォルトの名無しさん
2021/06/02(水) 21:58:17.73ID:rILnhmEC シェルスクリプトなんて現システムで動けば十分なのに遠い未来になくなること心配しても意味ないような
338デフォルトの名無しさん
2021/06/02(水) 22:02:01.60ID:UfLjqhXv プロバイダを擬似ファイルシステムとしてマウントしすれば補完できないかな
プロパティやメソッドまでそうすべきかは悩むところ、やりすぎ?
同名の環境変数やコマンドをどうマップするか
unix系pwshは割り切って環境変数は倣ってる($env:プロバイダ以下に)
コマンドレットは命名規則上被らない
win標準エイリアスはwriteとかが被るけどこれも尊重
pwsh -nop
gal write # not found
(gcm write) # /usr/bin/write
らしい
マイナーコマンドなのでもちろんset-aliasしてるが
ポータブルなps1書く時には一般的な名前のwin標準エイリアスは避けた方がいいかもね
プロパティやメソッドまでそうすべきかは悩むところ、やりすぎ?
同名の環境変数やコマンドをどうマップするか
unix系pwshは割り切って環境変数は倣ってる($env:プロバイダ以下に)
コマンドレットは命名規則上被らない
win標準エイリアスはwriteとかが被るけどこれも尊重
pwsh -nop
gal write # not found
(gcm write) # /usr/bin/write
らしい
マイナーコマンドなのでもちろんset-aliasしてるが
ポータブルなps1書く時には一般的な名前のwin標準エイリアスは避けた方がいいかもね
339デフォルトの名無しさん
2021/06/02(水) 22:05:33.29ID:UfLjqhXv 話が逸れた…
まあ逆移植ではこうなってるという例として
まあ逆移植ではこうなってるという例として
340デフォルトの名無しさん
2021/06/02(水) 22:34:03.30ID:tWTDTS70 Write(-Output)はよく使うからwriteで済ましてしまうな
どうせ俺はPublish-Script/Moduleするようなレベルじゃないけど
どうせ俺はPublish-Script/Moduleするようなレベルじゃないけど
341デフォルトの名無しさん
2021/06/03(木) 02:06:10.68ID:Xmy19u29 パイプラインとリダイレクトの解釈フェーズが独立しているbshの文法では、疑似ファイル方式は難しいと思う
"> /dev/null"なんて使ってないスクリプトの方が稀に思うけど、winの変な"NUL"ファイルに適切に読み替えるには| Out-Fileと>file (またはコマンド置換)が可換である必要があるよね?
powershellでも合法なはずの"> NUL"は普通オープンに失敗するはず
だから自動変数を使った"> $null"、コマンドを使った" | Out-Null"と書けるように>と|を同格にしたわけで
shっぽい言語が使いたいなら、ぱっと見似てる新言語作ったほうが早い
"> /dev/null"なんて使ってないスクリプトの方が稀に思うけど、winの変な"NUL"ファイルに適切に読み替えるには| Out-Fileと>file (またはコマンド置換)が可換である必要があるよね?
powershellでも合法なはずの"> NUL"は普通オープンに失敗するはず
だから自動変数を使った"> $null"、コマンドを使った" | Out-Null"と書けるように>と|を同格にしたわけで
shっぽい言語が使いたいなら、ぱっと見似てる新言語作ったほうが早い
342デフォルトの名無しさん
2021/06/03(木) 02:17:23.64ID:Xmy19u29 winの変な仕様に適合する為にpowershellは柔軟な文法になった説
343デフォルトの名無しさん
2021/06/03(木) 08:24:01.46ID:xKlnG0sF >winの変な仕様
具体的に
具体的に
344デフォルトの名無しさん
2021/06/03(木) 09:17:38.99ID:CvOb6PLb >>335
プロセス制御って?
Windowsの他のプロセスを制御したいならWSLからWindowsのコマンドを呼べばいいし、
Linuxのプロセスなら当然UNIXの世界で管理するだろう
自分自身のプロセスを制御したいなら当然後者だわな
何が問題?
プロセス制御って?
Windowsの他のプロセスを制御したいならWSLからWindowsのコマンドを呼べばいいし、
Linuxのプロセスなら当然UNIXの世界で管理するだろう
自分自身のプロセスを制御したいなら当然後者だわな
何が問題?
345デフォルトの名無しさん
2021/06/03(木) 09:41:56.32ID:CA79M4bt UNIXの世界
346デフォルトの名無しさん
2021/06/04(金) 06:21:24.37ID:q/6JXt/b プロンプトからのffmpegの実行で引数として -metadata に指定する値に空白とエスケープシーケンスを含めたく
¥"abc`n def¥"
でできましたが、更に " を含めるにはどうすればいいでしょうか?
"" や `" は駄目でした
¥"abc`n def¥"
でできましたが、更に " を含めるにはどうすればいいでしょうか?
"" や `" は駄目でした
347デフォルトの名無しさん
2021/06/04(金) 08:07:53.84ID:d2fkafbJ >write-output "abc`n `"`"def `n`""
abc
""def""
ネイティブアプリ例
>gc ~/bin/args
#!/bin/sh
printf "%d args:" $#; printf " <%s>" "$@"
>args "abc`n `"`"def `n`""
1 args: <abc
""def"">
期待通りでは?
cmd用に書かれたものには、独自のパースをするものがあるので(悪名高いのはruby等)、もしかしたらそれでは?
abc
""def""
ネイティブアプリ例
>gc ~/bin/args
#!/bin/sh
printf "%d args:" $#; printf " <%s>" "$@"
>args "abc`n `"`"def `n`""
1 args: <abc
""def"">
期待通りでは?
cmd用に書かれたものには、独自のパースをするものがあるので(悪名高いのはruby等)、もしかしたらそれでは?
348デフォルトの名無しさん
2021/06/04(金) 08:16:32.83ID:d2fkafbJ もしかして、こういうことか
>args "`"abc`n def"`" sanitycheck
2 args: <"abc
def"> <sanitycheck>
>args "`"abc`n def"`" sanitycheck
2 args: <"abc
def"> <sanitycheck>
349デフォルトの名無しさん
2021/06/04(金) 08:25:48.17ID:d2fkafbJ ごめんレスを読み違えてたかも
エスケープシーケンスを渡したい、のなら、ffmpegのエスケープシーケンスを調べて渡すべき
上に挙げた例は「生の」空白と改行と"を、pwshのエスケープシーケンスを用いて渡す、という例
エスケープシーケンスを渡したい、のなら、ffmpegのエスケープシーケンスを調べて渡すべき
上に挙げた例は「生の」空白と改行と"を、pwshのエスケープシーケンスを用いて渡す、という例
350デフォルトの名無しさん
2021/06/04(金) 08:43:46.19ID:d2fkafbJ winでは所謂c風のargvを使わない、シェルのパースを無視し、コマンドラインを文字列として取得する事、が可能
>>343
コマンドラインの> NULをプログラム側でアドホックに認識して、出力を止める手法が横行した
展開前の環境変数名をエスパーしたりも
cmdで> NULが動く事が多いのもこれ
>>343
コマンドラインの> NULをプログラム側でアドホックに認識して、出力を止める手法が横行した
展開前の環境変数名をエスパーしたりも
cmdで> NULが動く事が多いのもこれ
351デフォルトの名無しさん
2021/06/04(金) 08:53:40.98ID:d2fkafbJ そして\はpwshのエスケープシーケンスではなく、winのエスケープシーケンスだ>>346
352デフォルトの名無しさん
2021/06/04(金) 09:45:00.85ID:d2fkafbJ \"bc\" 文字列 \ + bc\ = \bc\
a"ba" が文字列abaなのと同じ
a"ba"a" は閉じてない文字列
a"ba" が文字列abaなのと同じ
a"ba"a" は閉じてない文字列
353デフォルトの名無しさん
2021/06/04(金) 10:00:36.23ID:IHTmGKSa え、コマンドプロンプトのエスケープシーケンスと、それが解釈された後のPSのエスケープシーケンスを2重に考えて引数を渡しなさいよってオチじゃないの?
354デフォルトの名無しさん
2021/06/04(金) 10:18:52.38ID:d2fkafbJ cmdと直接の関係はないよ
とりあえず
"\abc改行文字 \"
という文字列をpwshは渡すはずだけど
環境も意図した書式も不明だし、フィードバック無しに詮索はやめとこう
とりあえず
"\abc改行文字 \"
という文字列をpwshは渡すはずだけど
環境も意図した書式も不明だし、フィードバック無しに詮索はやめとこう
355デフォルトの名無しさん
2021/06/04(金) 10:20:17.19ID:d2fkafbJ \abc改行 def\だねごめん
356デフォルトの名無しさん
2021/06/04(金) 10:38:55.66ID:WP3FEn4a cmd関係なくwindowsだと\はStartProcessコールのエスケープ文字だしな
システムコール自体やcmdに食われるの想定して、余分に付け足したりするプログラムが多いので複雑怪奇になる
そんなwindowsプロセスにも賢く渡す機能が7.2以降に付きそうだけど、これでまたアドホックな要素がまた一つ増える…
システムコール自体やcmdに食われるの想定して、余分に付け足したりするプログラムが多いので複雑怪奇になる
そんなwindowsプロセスにも賢く渡す機能が7.2以降に付きそうだけど、これでまたアドホックな要素がまた一つ増える…
357デフォルトの名無しさん
2021/06/04(金) 11:31:36.60ID:WP3FEn4a358デフォルトの名無しさん
2021/06/06(日) 16:31:42.58ID:MKTuQ6ZL わかりにくいなら配列$argsにまとめて渡したり' 'で括って_などをreplaceがいいかも
クオートが続くと''→'、""→"となるcmdっぽい例外は抹消してほしい
クオートされた文字列とされてない文字列は併置で連接されるけど、例外になってしまう
クオートが続くと''→'、""→"となるcmdっぽい例外は抹消してほしい
クオートされた文字列とされてない文字列は併置で連接されるけど、例外になってしまう
359デフォルトの名無しさん
2021/06/06(日) 16:38:11.80ID:MKTuQ6ZL 最後の引数に限るけど、--%で以降のパースを全て止めてしまうのも便利
単語分割もされない
単語分割もされない
360デフォルトの名無しさん
2021/06/06(日) 16:59:25.93ID:I2RNTewS 文字列メソッド使うのが一番頭使わなくて良い
361デフォルトの名無しさん
2021/06/06(日) 19:16:20.18ID:OPfMT94L362デフォルトの名無しさん
2021/06/11(金) 08:48:29.09ID:nMyRbz+O PowerCLIの話ってここでいいのかな
モジュールコマンドレットの引数ってとう調べればいいんだろ
モジュールコマンドレットの引数ってとう調べればいいんだろ
363デフォルトの名無しさん
2021/06/11(金) 17:03:16.40ID:iy4yRVw6 すんません自己解決です。
Module内のpsm1ファイルとかにありました。
Module内のpsm1ファイルとかにありました。
364デフォルトの名無しさん
2021/06/15(火) 11:09:45.95ID:vhbon9Jn スクリプト、シェル関数、フィルター、モジュール等々
コメントや引数からのヘルプ生成いいよね、(MSサイトのアヤシイ自動翻訳と比べれば)割と読める
ghできてびっくりした
コメントや引数からのヘルプ生成いいよね、(MSサイトのアヤシイ自動翻訳と比べれば)割と読める
ghできてびっくりした
365デフォルトの名無しさん
2021/06/15(火) 22:37:29.05ID:sMCwQ3p2 powershellなかったらWindows10嫌いになってた
まあ嫌いだけど
まあ嫌いだけど
366デフォルトの名無しさん
2021/06/15(火) 23:16:19.96ID:tENeeutP 昔からあるがな
367デフォルトの名無しさん
2021/06/16(水) 08:41:42.53ID:tdb40TiY スマホでPowerShell使いたい人っているの?
Distribution Support Request: PowerShell for Android
https://github.com/PowerShell/PowerShell/issues/15556
Distribution Support Request: PowerShell for iOS
https://github.com/PowerShell/PowerShell/issues/15563
Distribution Support Request: PowerShell for Android
https://github.com/PowerShell/PowerShell/issues/15556
Distribution Support Request: PowerShell for iOS
https://github.com/PowerShell/PowerShell/issues/15563
368デフォルトの名無しさん
2021/06/16(水) 08:50:31.44ID:drc75L4c ぶっちゃけplaystoreで何回も検索してるけど引っかからなくて悲しんでる
about_*をブラウザで読んでた方が百倍マシな紙芝居チュートリアルみたいのは存在してる(検索ノイズ)
アンドロの採用してるmkshへのインターフェイス提供するアプリは、個人投稿ぽいのがいっぱい出てくるんだけども…
about_*をブラウザで読んでた方が百倍マシな紙芝居チュートリアルみたいのは存在してる(検索ノイズ)
アンドロの採用してるmkshへのインターフェイス提供するアプリは、個人投稿ぽいのがいっぱい出てくるんだけども…
369デフォルトの名無しさん
2021/06/16(水) 08:54:13.04ID:drc75L4c 携帯端末で特に何がしたいって訳でもないけど、思い付きのアイデアを手軽にインタプリタで検証したい時は割とある
野良でもいいけど、公式から出るんならなおさら嬉しい
野良でもいいけど、公式から出るんならなおさら嬉しい
370デフォルトの名無しさん
2021/06/16(水) 09:09:48.51ID:drc75L4c 色々電卓代わりのインタプリタ試したけど、今のところgforthが最良
ソフトキーボードと喧嘩しないし、pc版と同じヘルプ補完を提供してるいいもの
ただ言語コアが小さいので、そのままでは四則くらいしかできない
一般的な言語は()を行き戻りするのが辛い、数学関数揃ってるRPN/コマンド言語が求められる
[math]::funcとか手軽に引けるだろうことは嬉しい
RPN言語側での候補は数学関数揃ってるpost/ghostscriptだけど、これもrepl移植が見つからない、悲しい
ソフトキーボードと喧嘩しないし、pc版と同じヘルプ補完を提供してるいいもの
ただ言語コアが小さいので、そのままでは四則くらいしかできない
一般的な言語は()を行き戻りするのが辛い、数学関数揃ってるRPN/コマンド言語が求められる
[math]::funcとか手軽に引けるだろうことは嬉しい
RPN言語側での候補は数学関数揃ってるpost/ghostscriptだけど、これもrepl移植が見つからない、悲しい
371デフォルトの名無しさん
2021/06/16(水) 09:22:11.80ID:drc75L4c 式を置き去り(最初のワードがコマンドでない場合)にしたら勝手に評価して表示してくれるのもいいね
10Kをintと解釈してくれるような、かわいい機能群も生きそう
スマホ関数電卓界のホープになれる
10Kをintと解釈してくれるような、かわいい機能群も生きそう
スマホ関数電卓界のホープになれる
372デフォルトの名無しさん
2021/06/16(水) 09:32:04.79ID:XFhGw2Fv (mk?)shへの対話モードはAndroidのネイティブシェルだから、ガワ被せるだけの野良実装が多いのは理解できるんだけど
入力が不便なスマホで一体何に使うのな気になってる、やけにダウンロード数多いし
マゾいexprで電卓したり、まさかスクリプティングするわけでもなかろうに
入力が不便なスマホで一体何に使うのな気になってる、やけにダウンロード数多いし
マゾいexprで電卓したり、まさかスクリプティングするわけでもなかろうに
373デフォルトの名無しさん
2021/06/16(水) 10:03:11.27ID:drc75L4c unixの伝統的な外部コマンドはアンドロイドにはあんまり入ってなかったはず
別途入れるかバンドルされてるのを探すかしなければならないけど、bcやimagemagikを(多分)叩けるのは有意義だと思う
まあそれ以外の用途は浮かばないけど、広告まみれの電卓/画像変換アプリ使うよりはずっと良さそう
ちょっと試してみるかな
別途入れるかバンドルされてるのを探すかしなければならないけど、bcやimagemagikを(多分)叩けるのは有意義だと思う
まあそれ以外の用途は浮かばないけど、広告まみれの電卓/画像変換アプリ使うよりはずっと良さそう
ちょっと試してみるかな
374デフォルトの名無しさん
2021/06/16(水) 10:39:58.25ID:4tVAxrDR 携帯端末でshを使う需要でとりあえず思いつくのは
httpクライアントでエロ画像根こそぎ落としたり
出先からPCやサーバが仕事してるかsshクライアントで確認&ジョブ投げたり?
とりあえずロートルでも単純なコマンドさえ発行できれば十分なのでは
pwsh(android/ios)にはそれ以上を期待したいけど
httpクライアントでエロ画像根こそぎ落としたり
出先からPCやサーバが仕事してるかsshクライアントで確認&ジョブ投げたり?
とりあえずロートルでも単純なコマンドさえ発行できれば十分なのでは
pwsh(android/ios)にはそれ以上を期待したいけど
375デフォルトの名無しさん
2021/06/16(水) 11:36:53.15ID:drc75L4c 携帯デバイス上のsshデフォルトシェルに便利な気がする
動的に画面に合わせたビューが提供できるのが活きそう
確かにソフトキーで一行コマンド送るならshを設定しても大して変わらないけど、
大きいディスプレイ向けにハードコードされたunix/winコマンドの出力なんてスマホやタブで読めたもんじゃない
逆にデフォルトで簡潔なビュー(.ps1xml)が同梱されないなら、多分俺は電卓としてしか使わないわ
動的に画面に合わせたビューが提供できるのが活きそう
確かにソフトキーで一行コマンド送るならshを設定しても大して変わらないけど、
大きいディスプレイ向けにハードコードされたunix/winコマンドの出力なんてスマホやタブで読めたもんじゃない
逆にデフォルトで簡潔なビュー(.ps1xml)が同梱されないなら、多分俺は電卓としてしか使わないわ
376デフォルトの名無しさん
2021/06/16(水) 11:39:42.68ID:MMsGiHbd377デフォルトの名無しさん
2021/06/16(水) 12:11:49.40ID:1tyDQMTR .netアプリなんてapple/play storeに溢れてるのでは?
と思ってたらこれ、ランタイム方式じゃないのね…
iOS/Androidの.net(monoやxamarin)は、必要なコードだけ抽出し.apk等にコンパイルされているようで
粗末な出来なのに~50MBくらいある奴が典型的
明らかにxamarin, monoのランタイム(~100MB以下)を共有した方が経済的だと思うんだけど、何か大人の事情があるのだろうか
と思ってたらこれ、ランタイム方式じゃないのね…
iOS/Androidの.net(monoやxamarin)は、必要なコードだけ抽出し.apk等にコンパイルされているようで
粗末な出来なのに~50MBくらいある奴が典型的
明らかにxamarin, monoのランタイム(~100MB以下)を共有した方が経済的だと思うんだけど、何か大人の事情があるのだろうか
378デフォルトの名無しさん
2021/06/16(水) 12:16:49.70ID:iyOIJAkk 別にスマホのシス管するわけでもなし、xamarinやmonoから必要なAPI引いて自己完結なポートでもいいと思うけどね
379デフォルトの名無しさん
2021/06/16(水) 12:37:37.60ID:drc75L4c >>367
5日放置かー、あんまり興味ないのかね
モバイル疎いのでmono, xamarinはよく分からんけど、とりあえず.net coreもiOS, Androidサポートしてるようす
https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md
.net実装少なくなったね
monoもxamarinも買収で半分MS公式だし、コードベースもほぼほぼ共有しちゃってるし
野良実装がわらわら溢れてた時期は、これからは.netという安心感があったなぁ
5日放置かー、あんまり興味ないのかね
モバイル疎いのでmono, xamarinはよく分からんけど、とりあえず.net coreもiOS, Androidサポートしてるようす
https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md
.net実装少なくなったね
monoもxamarinも買収で半分MS公式だし、コードベースもほぼほぼ共有しちゃってるし
野良実装がわらわら溢れてた時期は、これからは.netという安心感があったなぁ
380デフォルトの名無しさん
2021/06/16(水) 12:38:42.86ID:drc75L4c asp coreわすれてた
381デフォルトの名無しさん
2021/06/16(水) 12:42:45.75ID:McZtCmJH 実用性よりもCore系なら移植性抜群ですよっていうデモ的な意味合いが大きい気がする
382デフォルトの名無しさん
2021/06/16(水) 12:49:41.03ID:drc75L4c そうだね、ぶっちゃけ知らなかったし
一応遊んでみようと思う
一応遊んでみようと思う
383デフォルトの名無しさん
2021/06/16(水) 13:00:48.00ID:V4BV8dHx MS公式、準公式で少なくとも4つ実装がある意義とは
野良実装の存在は健全な発展に必須だろうに、なぜ淘汰してしまったのか
野良実装の存在は健全な発展に必須だろうに、なぜ淘汰してしまったのか
384デフォルトの名無しさん
2021/06/16(水) 13:59:07.75ID:MMsGiHbd スマホにドトネトて、既にあるラッパーのラッパーを作ることに相当するよね
スマホのアップデートなんて限定的だし定期的に買い換えても機種が違えば中身もゴッソリ変ってるし
どうせroot化でもしない限り大した事できないしあんま深く知りたいわけでもない
automateみたいな事が普通にできれば十分かな
スマホのアップデートなんて限定的だし定期的に買い換えても機種が違えば中身もゴッソリ変ってるし
どうせroot化でもしない限り大した事できないしあんま深く知りたいわけでもない
automateみたいな事が普通にできれば十分かな
385デフォルトの名無しさん
2021/06/16(水) 14:59:31.40ID:mh5WwISX なんでスマホでやらなあかんねん
という部分がまずクリアできない
という部分がまずクリアできない
386デフォルトの名無しさん
2021/06/16(水) 15:07:02.37ID:drc75L4c ちょっと気付くの遅いけど、まだスレで言及されてないようなので
8 Apr commit
" Vim filetype plugin file
" Language: Windows PowerShell
https://github.com/vim/vim/blob/master/runtime/ftplugin/ps1.vim
https://github.com/vim/vim/blob/master/runtime/syntax/ps1.vim
etc
まあ俺が使ってたhttps://github.com/PProvost/vim-ps1を公式がマージしただけなんだが
やはり嬉しいものだ
8 Apr commit
" Vim filetype plugin file
" Language: Windows PowerShell
https://github.com/vim/vim/blob/master/runtime/ftplugin/ps1.vim
https://github.com/vim/vim/blob/master/runtime/syntax/ps1.vim
etc
まあ俺が使ってたhttps://github.com/PProvost/vim-ps1を公式がマージしただけなんだが
やはり嬉しいものだ
387デフォルトの名無しさん
2021/06/16(水) 15:23:11.73ID:drc75L4c 本当に最低限のサポートだけど
vimの補完関数に外部コマンドとしてpsreadlineの晒してるAPIを指定するだけで、replと同等の編集ができるよ
(about_PSReadlineとかそんな感じの参照)
vimの補完関数に外部コマンドとしてpsreadlineの晒してるAPIを指定するだけで、replと同等の編集ができるよ
(about_PSReadlineとかそんな感じの参照)
388デフォルトの名無しさん
2021/06/16(水) 16:01:42.73ID:OMTSZTs5 MSのサイトでPowerShellのlsp書式(VSCodeのプラグイン形式)公開してるから、vimのlspサーバ付きビルドなら標準でVSCode同等機能で書けるよ
PSReadlineのバックエンドも多分これだし、間接的には同じことかも?
あくまでライン編集用なので、まだ保存してない定義参照など文脈読むのはvim担当になる
ただしパスにカレントディレクトリを加えておけば、保存した時点でのパラメータ等はPSReadlineが勝手に読んで候補に加えてくれるから、暗黙のうちに候補に加わる
ちょっと複雑だな
もしかするとロースペックだとラグいかも
外部呼び出しはブロックするし、キャッシュの存在し得ないファイル(現在編集中)を読むので…
何もインストールしなくていい手軽さと、自動でget-helpする小窓を常時表示したり、カスタマイズ性の高いvimからPSReadlineを呼びだしを推したい
PSReadlineのバックエンドも多分これだし、間接的には同じことかも?
あくまでライン編集用なので、まだ保存してない定義参照など文脈読むのはvim担当になる
ただしパスにカレントディレクトリを加えておけば、保存した時点でのパラメータ等はPSReadlineが勝手に読んで候補に加えてくれるから、暗黙のうちに候補に加わる
ちょっと複雑だな
もしかするとロースペックだとラグいかも
外部呼び出しはブロックするし、キャッシュの存在し得ないファイル(現在編集中)を読むので…
何もインストールしなくていい手軽さと、自動でget-helpする小窓を常時表示したり、カスタマイズ性の高いvimからPSReadlineを呼びだしを推したい
389デフォルトの名無しさん
2021/06/16(水) 19:31:22.10ID:VY79GhSm ブラックボックスなプラグインをぶちこむ
うごけばいいんだよ
うごけばいいんだよ
390デフォルトの名無しさん
2021/06/17(木) 08:03:45.47ID:dBxnMxux Preview updating PowerShell 7.2 with Microsoft Update
https://devblogs.microsoft.com/powershell/preview-updating-powershell-7-2-with-microsoft-update/
https://devblogs.microsoft.com/powershell/preview-updating-powershell-7-2-with-microsoft-update/
391デフォルトの名無しさん
2021/06/20(日) 23:45:59.70ID:x08lLT64 2exeが仕事で役に立ったわ
exeじゃないとアイコン設定できなかったりするから必須機能だな
exeじゃないとアイコン設定できなかったりするから必須機能だな
392デフォルトの名無しさん
2021/06/21(月) 19:28:55.69ID:zJyyyGxF 7.2に上げたついでにinstall-module PSReadline -AllowPreview -force的な事したらコケたわ(2.2
replに入るとPSReadlineが死ぬ
レポジトリの会話見ると7.2で結構変更あるのでまだ2.2で対応してないと
pwsh -noni -nop -c '&{uninstall-module PSReadline}'的なのをcmdから打ってちゃんと最新が消えて2.1にロールバック、問題なし
迂闊なアップデきよつける
replに入るとPSReadlineが死ぬ
レポジトリの会話見ると7.2で結構変更あるのでまだ2.2で対応してないと
pwsh -noni -nop -c '&{uninstall-module PSReadline}'的なのをcmdから打ってちゃんと最新が消えて2.1にロールバック、問題なし
迂闊なアップデきよつける
393デフォルトの名無しさん
2021/06/21(月) 22:13:51.12ID:zJyyyGxF >>390
Windows Updateに乗(せられ)るのね、ちょうど上の方で話題になっててタイムリー?
Windows Updateに乗(せられ)るのね、ちょうど上の方で話題になっててタイムリー?
394デフォルトの名無しさん
2021/06/22(火) 11:36:31.82ID:pmPJw99A >>357
-[not]match, -[e|c]replace の右辺(パターン)も`にして欲しかったわ
winのパスの'path\to\somewhere'がめんどくさい
[regex]::escape メソッドが用意されてるけど、メタ文字っぽいの全部エスケープしちゃうので
先頭アンカーの^をメタ文字にするときは
'^' + escape('path\to\somewhere')
なんか汚い…
.もパスによく出てくるので面倒
いい書き方ないかな?
-[not]match, -[e|c]replace の右辺(パターン)も`にして欲しかったわ
winのパスの'path\to\somewhere'がめんどくさい
[regex]::escape メソッドが用意されてるけど、メタ文字っぽいの全部エスケープしちゃうので
先頭アンカーの^をメタ文字にするときは
'^' + escape('path\to\somewhere')
なんか汚い…
.もパスによく出てくるので面倒
いい書き方ないかな?
395デフォルトの名無しさん
2021/06/22(火) 14:32:20.14ID:dyR+eSpW pwshからドトネトも学ぼうとsdk入れたら500MBも吸われてしまった…
F#を恥ずかしながら知らなかったんだかど、MLとC#を悪魔合体したみたいで面白いねこれ
ps1内でおもむろに
Add-Type ... @'
F#スニペット
'@
と書いてすぐ走る利便性すごい
けどやっぱりsdkがでかい…
複数言語の処理系入ってると思えばでかくないかもしれないけど
でかい
F#を恥ずかしながら知らなかったんだかど、MLとC#を悪魔合体したみたいで面白いねこれ
ps1内でおもむろに
Add-Type ... @'
F#スニペット
'@
と書いてすぐ走る利便性すごい
けどやっぱりsdkがでかい…
複数言語の処理系入ってると思えばでかくないかもしれないけど
でかい
396デフォルトの名無しさん
2021/06/22(火) 14:51:05.02ID:xDMJNZcH ヒアストリングはエディタに文字列扱いされてハイライトも補完も効かないので分けてGet-Contentしてる
ソラで書ける程度ならいいけど
ソラで書ける程度ならいいけど
397デフォルトの名無しさん
2021/06/22(火) 17:18:07.98ID:WY3z1yEU いいと思うよ
大体の人は1ファイルに収めたいからヒアドキュメント使うわけで
大体の人は1ファイルに収めたいからヒアドキュメント使うわけで
398デフォルトの名無しさん
2021/06/22(火) 18:07:25.83ID:RxGUKVcL >>395
F#登場時に『OCamlを参考にした』ってよく紹介されてて、それで初めてMLの存在を知ったわ
F#走らせるだけならSDKまでいれなくてもF#のランタイムだけで動作するはず
pwshオンリーの環境で試したこと無いから、だめかもしれんけど
でも、add-typeしてF#動かせるならf#スクリプトも動くと思うんでpwsh経由にする必要ないんでわ?
F#登場時に『OCamlを参考にした』ってよく紹介されてて、それで初めてMLの存在を知ったわ
F#走らせるだけならSDKまでいれなくてもF#のランタイムだけで動作するはず
pwshオンリーの環境で試したこと無いから、だめかもしれんけど
でも、add-typeしてF#動かせるならf#スクリプトも動くと思うんでpwsh経由にする必要ないんでわ?
399デフォルトの名無しさん
2021/06/22(火) 19:04:57.19ID:pmPJw99A F#は見た目キレイなocamlで好きだよ、;で諦めた
インラインは読み込み時に都度メモリ上にコンパイルするので、初読み込み時のオーバーヘッドはあるかと
まあdllやら作り直すより楽なので、困るまではインラインでいい
なんなら@"で文字列補間できるしな
インラインは読み込み時に都度メモリ上にコンパイルするので、初読み込み時のオーバーヘッドはあるかと
まあdllやら作り直すより楽なので、困るまではインラインでいい
なんなら@"で文字列補間できるしな
400デフォルトの名無しさん
2021/06/22(火) 19:55:16.74ID:G2b0CX3R 遊ぶくらいだけど困ったらpwshで生やせるメンバをニョキっとできるしな
公式サイト見るとdiscouraged styleだけど
ドマイナー言語だけど入門にはちょうどいいかも
公式サイト見るとdiscouraged styleだけど
ドマイナー言語だけど入門にはちょうどいいかも
401デフォルトの名無しさん
2021/06/25(金) 14:50:04.75ID:yduSg49I 今のところPowerShell7+をWindows11に標準搭載する予定はない
.NETのサポート期間の短さが問題になっている
https://twitter.com/natiTDD/status/1408114326137982986
https://twitter.com/Steve_MSFT/status/1408135314464378883
https://twitter.com/5chan_nel (5ch newer account)
.NETのサポート期間の短さが問題になっている
https://twitter.com/natiTDD/status/1408114326137982986
https://twitter.com/Steve_MSFT/status/1408135314464378883
https://twitter.com/5chan_nel (5ch newer account)
402デフォルトの名無しさん
2021/06/25(金) 16:13:53.08ID:X/DsUG+x some ideasとはなんぞ。
403デフォルトの名無しさん
2021/06/25(金) 17:07:37.16ID:czBKz/U/ >>402
期待したい
期待したい
404デフォルトの名無しさん
2021/06/25(金) 20:51:38.19ID:DaFL93KC function ConvertTo-Hoge($source) {
Write-Output '次のファイルたちに対して処理を実行します。'
Get-ChildItem -Path $source -Recurse
# 外部コマンドによる処理。
hoge.exe $source
}
ConvertTo-Hoge 'c:\data\source.txt'
上記のコード内のGet-ChildItemで取得されるのは、引数として指定した
c:\data\source.txt
だけと想定していましたが、実際は、
c:\data\SUB_FOLDER\source.txt
といったサブディレクトリ内の同名ファイルも取得されてしまいます。
ファイルを指定した場合は-Recurseパラメータが無視されると勝手に思い込んでいたので、
こういうかたちで再帰的な取得をするのは面食らいました。
ファイルを指定した場合に再帰取得を抑制する方法はないでしょうか。
'c:\data\' や 'c:\data\*' といったパスを渡すケースもあるので
-Recurseパラメータを外したり、-Pathを-LiteralPathに換えるわけにはいかないです。
Write-Output '次のファイルたちに対して処理を実行します。'
Get-ChildItem -Path $source -Recurse
# 外部コマンドによる処理。
hoge.exe $source
}
ConvertTo-Hoge 'c:\data\source.txt'
上記のコード内のGet-ChildItemで取得されるのは、引数として指定した
c:\data\source.txt
だけと想定していましたが、実際は、
c:\data\SUB_FOLDER\source.txt
といったサブディレクトリ内の同名ファイルも取得されてしまいます。
ファイルを指定した場合は-Recurseパラメータが無視されると勝手に思い込んでいたので、
こういうかたちで再帰的な取得をするのは面食らいました。
ファイルを指定した場合に再帰取得を抑制する方法はないでしょうか。
'c:\data\' や 'c:\data\*' といったパスを渡すケースもあるので
-Recurseパラメータを外したり、-Pathを-LiteralPathに換えるわけにはいかないです。
405デフォルトの名無しさん
2021/06/25(金) 21:15:44.26ID:RnIW6d/1 Powershellのコマンドレットにはあまり期待するな
406デフォルトの名無しさん
2021/06/25(金) 22:33:40.40ID:gHkCbSTz >>404
当たり前でしょ
c:\data\source.txt がファイルかどうかは調べるまでわからないんだし
そもそもc:\data\source.txtがなくてc:\data\SUB_FOLDER\source.txtがあるならc:\data\SUB_FOLDER\source.txtは欲しいんでしょ?
> ファイルを指定した場合に再帰取得を抑制する方法はないでしょうか。
指定したのがファイルなら-Recurse外せばいいだけじゃないの?
当たり前でしょ
c:\data\source.txt がファイルかどうかは調べるまでわからないんだし
そもそもc:\data\source.txtがなくてc:\data\SUB_FOLDER\source.txtがあるならc:\data\SUB_FOLDER\source.txtは欲しいんでしょ?
> ファイルを指定した場合に再帰取得を抑制する方法はないでしょうか。
指定したのがファイルなら-Recurse外せばいいだけじゃないの?
407デフォルトの名無しさん
2021/06/25(金) 23:34:28.71ID:DaFL93KC408デフォルトの名無しさん
2021/06/26(土) 04:19:56.86ID:SGwHfoMZ Get-ChildItemのオプションは沢山あるからよく調べて除外指定すりゃいいし
パイプでWhere-Objectに渡して要らないのをフィルタするという手もある
パイプでWhere-Objectに渡して要らないのをフィルタするという手もある
409デフォルトの名無しさん
2021/06/26(土) 08:07:50.32ID:PnU/npNW $a = @(Get-ChildItem -Path $source -Recurse)
$target = if ( $a[0].Name -eq $source ) { $a[0] } else { $a }
するぐらいかなぁ
要件満たせてるのかわかんないけど
$target = if ( $a[0].Name -eq $source ) { $a[0] } else { $a }
するぐらいかなぁ
要件満たせてるのかわかんないけど
410デフォルトの名無しさん
2021/06/26(土) 08:10:50.49ID:W7G/Wq0v Get-ChildItemのオプションで除外するかWhere-Objectでフィルタか
両者にはどんな得意不得意があるの?
両者にはどんな得意不得意があるの?
411404
2021/06/26(土) 10:25:46.45ID:hFKbHeBr412デフォルトの名無しさん
2021/06/26(土) 10:58:10.50ID:XYwUNHu1 >>411
こんな感じでよくない?
Get-ChildItem -Path $source -Recurse:(Test-Path $source -PathType Container)
hoge.exe の仕様にもよるけれど、-File とかも指定しないと変かも。
こんな感じでよくない?
Get-ChildItem -Path $source -Recurse:(Test-Path $source -PathType Container)
hoge.exe の仕様にもよるけれど、-File とかも指定しないと変かも。
413404
2021/06/26(土) 11:51:34.42ID:hFKbHeBr414デフォルトの名無しさん
2021/06/26(土) 14:42:37.37ID:+oUd2Rws >>412
$sourceにワイルドカード含まれてたら意図した動作にならないかと思ったけど、そんなことない?
$sourceにワイルドカード含まれてたら意図した動作にならないかと思ったけど、そんなことない?
415デフォルトの名無しさん
2021/06/26(土) 17:37:56.83ID:+oUd2Rws >>411
ワイルドカードが含まれない場合でもフォルダー指定ならrecurseが必要なんじゃない?
ワイルドカードが含まれない場合でもフォルダー指定ならrecurseが必要なんじゃない?
416デフォルトの名無しさん
2021/06/26(土) 18:15:40.91ID:SGwHfoMZ そもそも >>404 で無条件にgciに渡してるとこからおかしいと思う
1. まず$sourceにワイルドカード文字が入ってるかどうかを判定する $source -match "[\*\?]"
2. 次にディレクトリ指定かを判定する Test-Path $source -PathType Container
3. そうでないならファイル指定かを判定 Test-Path $source -PathType Leaf
4. これ以外はエラーとする
1と2のケースならgciに掛けて除外したいものをWhere-Objectでフィルタしながら処理する
gci $source -recurse | ?{ $_.FullName -notlike "*SUB_FOLDER*" } | %{ hoge.exe $_.FullName }
3ならそのまま処理する hoge.exe $source
自分ならこんな感じで書くかな
1. まず$sourceにワイルドカード文字が入ってるかどうかを判定する $source -match "[\*\?]"
2. 次にディレクトリ指定かを判定する Test-Path $source -PathType Container
3. そうでないならファイル指定かを判定 Test-Path $source -PathType Leaf
4. これ以外はエラーとする
1と2のケースならgciに掛けて除外したいものをWhere-Objectでフィルタしながら処理する
gci $source -recurse | ?{ $_.FullName -notlike "*SUB_FOLDER*" } | %{ hoge.exe $_.FullName }
3ならそのまま処理する hoge.exe $source
自分ならこんな感じで書くかな
417404
2021/06/26(土) 18:28:02.03ID:hFKbHeBr >>416
そうですね・・・。
*(ワイルドカード)の有無で分岐する場合は、
Get-ChildItem -Path $source -Recurse #ワイルドカードあり
と
Get-ChildItem -LiteralPath $source -Recurse #ワイルドカードなし
というふうに両方に-Recurseをつければいいと思いますが、
-Recurseをオフにしちゃうとたぶん想定と違う挙動になりますね・・・。
実際のコードで検証してみます。
ありがとうございます。
そうですね・・・。
*(ワイルドカード)の有無で分岐する場合は、
Get-ChildItem -Path $source -Recurse #ワイルドカードあり
と
Get-ChildItem -LiteralPath $source -Recurse #ワイルドカードなし
というふうに両方に-Recurseをつければいいと思いますが、
-Recurseをオフにしちゃうとたぶん想定と違う挙動になりますね・・・。
実際のコードで検証してみます。
ありがとうございます。
418404
2021/06/26(土) 18:42:17.36ID:hFKbHeBr419デフォルトの名無しさん
2021/06/26(土) 19:19:36.00ID:+oUd2Rws 409ので最初のgciにfileオプション付けたらやりたいことできてない?
420404
2021/06/26(土) 20:40:31.67ID:hFKbHeBr >>419
自宅のPCでやってみたらうまく行かなかったですが(再帰的に取得されてしまう)、
うろ覚えの再現をして何か間違っているかもしれないので、週明けに実際のコードで試してみます。
ありがとうございます。
自宅のPCでやってみたらうまく行かなかったですが(再帰的に取得されてしまう)、
うろ覚えの再現をして何か間違っているかもしれないので、週明けに実際のコードで試してみます。
ありがとうございます。
421409
2021/06/27(日) 00:14:38.21ID:3ZU8XSDE $sourceがファイル名でなくパス指定だとうまくいかないので
$a = @(Get-ChildItem $source -Recurse -File)
$target = if ( $a[0].Name -eq (Split-Path $source -Leaf) ) { $a[0] } else { $a }
とすべきでした
$a = @(Get-ChildItem $source -Recurse -File)
$target = if ( $a[0].Name -eq (Split-Path $source -Leaf) ) { $a[0] } else { $a }
とすべきでした
422デフォルトの名無しさん
2021/06/27(日) 17:52:13.26ID:CXPSOiIf .ps1スクリプトをタスクバーにピン留めして実行たいのですが皆さんどうしてますか
423デフォルトの名無しさん
2021/06/27(日) 18:59:55.50ID:4zcgZlyh ファイラー使ってるなぁ
424デフォルトの名無しさん
2021/06/27(日) 19:52:40.86ID:VoyuuGop >>422
引数付きのpowershell.exeショートカット作ってピン留めしたら?
引数付きのpowershell.exeショートカット作ってピン留めしたら?
425デフォルトの名無しさん
2021/06/27(日) 20:14:26.80ID:tkVDl+qA 漏れは、デスクトップにショートカットを作る
例えば、WSL2, Ubuntu 18.04 を起動して、
作業フォルダを、Linux 側にあるプロジェクトフォルダに移動してから、
VSCode で、そこを開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\proj01
例えば、WSL2, Ubuntu 18.04 を起動して、
作業フォルダを、Linux 側にあるプロジェクトフォルダに移動してから、
VSCode で、そこを開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\proj01
426422
2021/06/28(月) 20:14:33.38ID:3DnBzo4y427デフォルトの名無しさん
2021/07/05(月) 19:41:53.00ID:7JzKdw7c Windows11入れたけど、PowerShellのバージョンが7.0.0-preview.3になってる
5.1も5.1.22000.1として使える
5.1も5.1.22000.1として使える
428デフォルトの名無しさん
2021/07/05(月) 20:44:48.06ID:jxTbEq2m おー、やっぱOS同梱するんだ
ライフサイクルの違いをどう吸収するのか興味深々
ライフサイクルの違いをどう吸収するのか興味深々
429デフォルトの名無しさん
2021/07/08(木) 20:38:28.01ID:zLx0Zsbg >>387
想像つかない…どんな書き方なのか教えてもらえませんか?
想像つかない…どんな書き方なのか教えてもらえませんか?
430デフォルトの名無しさん
2021/07/09(金) 01:47:38.94ID:iwqakx4X431デフォルトの名無しさん
2021/07/10(土) 15:14:28.43ID:wJrCg/wx こっちの環境だとPowershell7はインストールされてないな
5.1.22000.1はインストールされてるけど
5.1.22000.1はインストールされてるけど
432デフォルトの名無しさん
2021/07/18(日) 10:38:35.13ID:2Hl3gQcn 11出るのかよ
ずっと10でアップデしそうだから安心と思って10のライセンス買ってしまったぞ
ずっと10でアップデしそうだから安心と思って10のライセンス買ってしまったぞ
433デフォルトの名無しさん
2021/07/18(日) 10:47:51.10ID:/77lPQJR 無償アップグレードのはず
434デフォルトの名無しさん
2021/07/18(日) 10:54:20.96ID:YpvM2GEz435デフォルトの名無しさん
2021/07/18(日) 20:02:18.33ID:1Kc/AZp0 >>434
正式版は出てないけど
正式版は出てないけど
436デフォルトの名無しさん
2021/07/24(土) 08:32:00.72ID:+h0yrKJy PowerShell始まったな
v7.2.0-preview.8 Release of PowerShell
https://github.com/PowerShell/PowerShell/releases/tag/v7.2.0-preview.8
> Add support to colorize FileInfo file names (#14403)
https://github.com/PowerShell/PowerShell/pull/14403
v7.2.0-preview.8 Release of PowerShell
https://github.com/PowerShell/PowerShell/releases/tag/v7.2.0-preview.8
> Add support to colorize FileInfo file names (#14403)
https://github.com/PowerShell/PowerShell/pull/14403
437デフォルトの名無しさん
2021/07/24(土) 18:02:44.97ID:77oXDTTE 素人ですいません
デバイスとプリンターの中にあるスマホ「sh-08」をBtのアクセスポイント接続させるのは
コマンドラインではどう書けばいいんでしょうか?
デバイスとプリンターの中にあるスマホ「sh-08」をBtのアクセスポイント接続させるのは
コマンドラインではどう書けばいいんでしょうか?
438デフォルトの名無しさん
2021/07/24(土) 18:19:05.10ID:VrPEdYlD Connect-Me sh-08 -Through Bluetooth
439デフォルトの名無しさん
2021/07/24(土) 19:35:50.21ID:pyapQHEM 嘘はいいです
440デフォルトの名無しさん
2021/07/25(日) 08:38:03.39ID:c5+NRcB7 ツッコミどころ満載なリクエストだな
441デフォルトの名無しさん
2021/07/25(日) 14:36:00.14ID:uBtwZZWI Windows PowerShellでBluetoothを接続および削除する方法
https://base64.work/so/powershell/1664979
https://base64.work/so/powershell/1664979
442デフォルトの名無しさん
2021/07/25(日) 14:46:31.15ID:rfVczbW/ ヒントありがとうございます やっぱちょい難しそうですね
443デフォルトの名無しさん
2021/07/25(日) 15:15:38.30ID:AEWDeocZ 昇格されたアクセス許可が必要って時点でもう何か違うような
444デフォルトの名無しさん
2021/07/25(日) 20:56:19.00ID:MU31hGNj get-wmiobjectでインスタンス見つけて接続すりゃいいんだろうけど、PC側からスマホに接続するって、どんな用途なのかな?
スマホ側の写真をPCに転送するぐらいでしかBluetooth使ったことないので、なんか便利なこと出来るなら教えて欲しい
スマホ側の写真をPCに転送するぐらいでしかBluetooth使ったことないので、なんか便利なこと出来るなら教えて欲しい
445437
2021/07/25(日) 22:39:31.80ID:rfVczbW/ 普段の回線だと5ch規制で書けないのでBtテザリングのスマホ回線に切り替えるわけですが
いちいちスマホのアイコンを右クリッタするのが面倒なのでバッチファイルで接続できないかなと
メトリック値の書き換えで回線切り替えるのはできてるんですが
いちいちスマホのアイコンを右クリッタするのが面倒なのでバッチファイルで接続できないかなと
メトリック値の書き換えで回線切り替えるのはできてるんですが
446デフォルトの名無しさん
2021/07/25(日) 23:06:54.56ID:WJtzD90t なるほど
常に接続してるなら静的ルート設定するなりしておけばいいんだろうけど、スマホだとそうもいかないから、書き込むときだけモバイル回線使うようにしたいってことね
常に接続してるなら静的ルート設定するなりしておけばいいんだろうけど、スマホだとそうもいかないから、書き込むときだけモバイル回線使うようにしたいってことね
447デフォルトの名無しさん
2021/07/25(日) 23:22:27.51ID:AEWDeocZ スマホのアイコンの右クリックとかの操作をするだけならシェル名前空間の範囲でできそうだね
$shapp = new-object -com "Shell.Application"
$folder = $shapp.Namespace([System.Environment]::GetFolderPath("desktop"))
foreach ($item in $folder.Items()) {
if ($item.Name -like '*スマホ名*') {
foreach ($Verb in $item.Verbs()) {
if ($Verb.Name -like '*接続とか何とか*') {
$Verb.DoIt();
}
}
}
}
$shapp = new-object -com "Shell.Application"
$folder = $shapp.Namespace([System.Environment]::GetFolderPath("desktop"))
foreach ($item in $folder.Items()) {
if ($item.Name -like '*スマホ名*') {
foreach ($Verb in $item.Verbs()) {
if ($Verb.Name -like '*接続とか何とか*') {
$Verb.DoIt();
}
}
}
}
448デフォルトの名無しさん
2021/07/27(火) 04:10:09.87ID:MxdGAs2p カスタムオブジェクトを返すコマンドレットを作って戻り値を変数に割り当てた時、
変数名の後にメンバーが補完される場合とされない場合があるんだけど何が基準なんだろう?
変数名の後にメンバーが補完される場合とされない場合があるんだけど何が基準なんだろう?
449デフォルトの名無しさん
2021/08/04(水) 01:55:31.71ID:0L18Nxkj >>231
実行ファイル名の変更はマジで影響でかそうだよね。
例えばリモートデスクトップだって実行ファイル名はいまだに大昔の
mstsc(Microsoft Terminal Services Client の略称)のまま変えてないというのに。。
実行ファイル名の変更はマジで影響でかそうだよね。
例えばリモートデスクトップだって実行ファイル名はいまだに大昔の
mstsc(Microsoft Terminal Services Client の略称)のまま変えてないというのに。。
450デフォルトの名無しさん
2021/08/04(水) 08:23:43.34ID:HT9phpQf .NETのサポート期間はLTSでも3年なので、今後もしWindowsに標準で入れるなら3年ごとにWindowsUpdateで破壊的変更が入るという冗談のようなシェルになる
どうせ誰も移行しないんだから問題ないよ
どうせ誰も移行しないんだから問題ないよ
451デフォルトの名無しさん
2021/08/04(水) 09:26:01.56ID:DV/IEEV3 このスレに来るくらいのヘビーユーザー以外は大した移行コストを払うほどスクリプトを書いてないんんじゃね
少なくとも俺が書いたスクリプトは修正した記憶がない
少なくとも俺が書いたスクリプトは修正した記憶がない
452デフォルトの名無しさん
2021/08/04(水) 09:29:59.39ID:DV/IEEV3 何年か前からアナウンスしても移行が破綻するほどに互換性が皆無なら、言語そのものが致命的な破壊的変更すぎるということだし
そうでないならどこかのタイミングでエイリアス化してもそこまで困らない
ちょうどいまのIEとEdgeに似た状況なのでは
そうでないならどこかのタイミングでエイリアス化してもそこまで困らない
ちょうどいまのIEとEdgeに似た状況なのでは
453デフォルトの名無しさん
2021/08/04(水) 09:42:06.91ID:L56ZMFZY powershellってスクリプトそれ自体が資産というよりは、特定の環境とセットで動きゃOKな書き捨てスクリプトがほとんどだろうから、
現実には.NETランタイムもpwshも自分で入れてサポート期限なんか無視してバージョン固定で塩漬けだろうね
むしろ勝手に更新される心配がない分嬉しいまである
社用端末のログインスクリプトだったり、厳密にサポート期限を気にして更新していかなきゃいけないような案件だったら使い物にならんわな
現実には.NETランタイムもpwshも自分で入れてサポート期限なんか無視してバージョン固定で塩漬けだろうね
むしろ勝手に更新される心配がない分嬉しいまである
社用端末のログインスクリプトだったり、厳密にサポート期限を気にして更新していかなきゃいけないような案件だったら使い物にならんわな
454デフォルトの名無しさん
2021/08/05(木) 04:38:47.31ID:Tf/rxMp6 >>453
>社用端末のログインスクリプトだったり、厳密にサポート期限を気にして更新していかなきゃいけないような案件だったら使い物にならんわな
夜間バッチをbatで書いてたのを全部powershellに書き換えた企業とかあるけど、後悔あとに立たずだろうなあw
>社用端末のログインスクリプトだったり、厳密にサポート期限を気にして更新していかなきゃいけないような案件だったら使い物にならんわな
夜間バッチをbatで書いてたのを全部powershellに書き換えた企業とかあるけど、後悔あとに立たずだろうなあw
455デフォルトの名無しさん
2021/08/05(木) 06:00:44.46ID:DkKGSCcN456デフォルトの名無しさん
2021/08/05(木) 08:17:53.45ID:aTGdTUkH そんな古臭い現場が移行するわけないでしょ
最終的にはps6以降のシリーズよりもps5の方が長くサポートされるだらうから何の問題もないよw
最終的にはps6以降のシリーズよりもps5の方が長くサポートされるだらうから何の問題もないよw
457デフォルトの名無しさん
2021/08/05(木) 08:52:46.08ID:P8xbWRAo 互換性がどの程度でメンテや疎通のコストがどれほど必要になるのかを考えずに騒ぐのってどうなの
ワクチンの0.0014%の死亡率を見て、危険!ありえない!と叫ぶような非論理性を感じる
ワクチンの0.0014%の死亡率を見て、危険!ありえない!と叫ぶような非論理性を感じる
458デフォルトの名無しさん
2021/08/05(木) 09:53:34.22ID:RzFkoDJo コストは連続じゃないからね
実務経験あるならわかると思うけど、更新しなきゃいけない、更新したら壊れるかもしれない、最低限動作確認しなきゃいけない、
そういうことを考慮しなければならない時点で大きなコストなんだよ
その定量的な頻度や程度はあまり関係なくて、定性的にあるかないかで非連続なコストが発生するの
実務経験あるならわかると思うけど、更新しなきゃいけない、更新したら壊れるかもしれない、最低限動作確認しなきゃいけない、
そういうことを考慮しなければならない時点で大きなコストなんだよ
その定量的な頻度や程度はあまり関係なくて、定性的にあるかないかで非連続なコストが発生するの
459デフォルトの名無しさん
2021/08/05(木) 12:40:39.61ID:0ODnTX6h Powershellでどんだけ巨大なシステム組んでんだろw
460デフォルトの名無しさん
2021/08/05(木) 12:42:01.42ID:0ODnTX6h pwsh.exe、psh.exe、ps.exeと3年毎に名前が変わったら俺もキレると思う
461デフォルトの名無しさん
2021/08/05(木) 14:02:00.09ID:BRBZpMlk 別バージョンはちがう名前と考えれば納得いく
462デフォルトの名無しさん
2021/08/05(木) 17:14:02.32ID:n+pQsKjw463デフォルトの名無しさん
2021/08/05(木) 21:43:19.74ID:2EEp5i6b コンソール無し版のpowershellwはまだですかいのう
464デフォルトの名無しさん
2021/08/06(金) 00:16:50.16ID:qtuT33q6 何に使うのそれ・・・
465デフォルトの名無しさん
2021/08/06(金) 02:36:04.91ID:kh9nM6mS466デフォルトの名無しさん
2021/08/09(月) 13:18:29.21ID:cnxPPV9E ISEは便利そうと思いつつ放置してるんだけどpwsh7xも使えるっぽいとどこかで読んだ
試してみるか
試してみるか
467デフォルトの名無しさん
2021/08/09(月) 13:50:21.79ID:10+Ek5eo なぜいまISE?
msはISEの開発を止めてVS Codeに軸足を移してるから今始めるならVS Codeじゃないのかな
統合エディタだから学習コストも増えるけどモダンエディタを知らずに過ごすのはそれはそれでもったいない
msはISEの開発を止めてVS Codeに軸足を移してるから今始めるならVS Codeじゃないのかな
統合エディタだから学習コストも増えるけどモダンエディタを知らずに過ごすのはそれはそれでもったいない
468デフォルトの名無しさん
2021/08/09(月) 15:52:32.05ID:HsfcqsrB469デフォルトの名無しさん
2021/08/09(月) 17:36:09.94ID:oYIWlVz7 >>468
そんな挙動に出くわしたこと無いなぁ
そんな挙動に出くわしたこと無いなぁ
470デフォルトの名無しさん
2021/08/09(月) 18:44:32.05ID:cLprbED+ >>460
unix系だとシバンで困る
7系をパッケージマネージャで入れるとパスにはpwsh-previewなる実行ファイルが置かれる
8になったら今度はそれがpwsh-previewだろうし
せめてpwsh7とか、あんまり攻めない内容ならpwshでざっくり指定させて欲しい
勝手にni pwsh -target pwsh-preview -itemtype symboliclinkしてるけど
unix系だとシバンで困る
7系をパッケージマネージャで入れるとパスにはpwsh-previewなる実行ファイルが置かれる
8になったら今度はそれがpwsh-previewだろうし
せめてpwsh7とか、あんまり攻めない内容ならpwshでざっくり指定させて欲しい
勝手にni pwsh -target pwsh-preview -itemtype symboliclinkしてるけど
471デフォルトの名無しさん
2021/08/10(火) 00:57:50.39ID:KvFy61fq 単にブレークポイントまでたどり着いて無いんじゃないのか
VSCodeで実行毎にPowerShellの環境作り直してくれる機能がないとデバッグできないわ
VSCodeで実行毎にPowerShellの環境作り直してくれる機能がないとデバッグできないわ
472デフォルトの名無しさん
2021/08/14(土) 20:57:32.62ID:SLWROWoW473デフォルトの名無しさん
2021/08/15(日) 20:51:02.97ID:cCxAlcwE (1 -eq 1 -eq 1) #True
(1 -le 2 -le 3) #True
(1 -lt 2 -lt 3) #False
何で3行目だけTrueではなくFalseになるの?誰か教えて
(1 -le 2 -le 3) #True
(1 -lt 2 -lt 3) #False
何で3行目だけTrueではなくFalseになるの?誰か教えて
474デフォルトの名無しさん
2021/08/15(日) 21:21:37.29ID:E1VQb9fL 1 -lt [int](2 -lt 3) って扱いになってるのかな
475デフォルトの名無しさん
2021/08/15(日) 22:20:12.40ID:Z12lyLwX 比較演算子の左がブール値なら右の値もブール値として扱われるから0以外は全部trueになるってことやろね
476デフォルトの名無しさん
2021/08/19(木) 18:57:52.65ID:HBxan8+j .NetCore版って起動の高速化できないのかな
自分で使う分にはいいんだけど、スクリプト使ってもらう時に不安がられる
自分で使う分にはいいんだけど、スクリプト使ってもらう時に不安がられる
477デフォルトの名無しさん
2021/08/20(金) 02:15:53.16ID:1z1ABMWo わかる
478デフォルトの名無しさん
2021/08/20(金) 03:36:25.48ID:fkNLvzJY なんかしら起動中の表示してくれたらいいんだけどな
batファイルからPowershellスクリプト実行すれば似たようなことできるが、そのために態々batファイル作るのなんか嫌だ
batファイルからPowershellスクリプト実行すれば似たようなことできるが、そのために態々batファイル作るのなんか嫌だ
479デフォルトの名無しさん
2021/08/20(金) 17:22:54.58ID:iiwGu2qc スクリプトに一行足して拡張子.batにするだけだと思うけど、何が嫌なのかな?
480デフォルトの名無しさん
2021/08/20(金) 17:39:03.48ID:fkNLvzJY PowerShell単体で渡せなくなるじゃん
481デフォルトの名無しさん
2021/08/20(金) 17:46:31.39ID:fkNLvzJY482デフォルトの名無しさん
2021/08/20(金) 20:05:06.99ID:iiwGu2qc483デフォルトの名無しさん
2021/08/20(金) 20:06:46.01ID:iiwGu2qc > やってることは、両方ともバッチファイルの中で自分自身を呼び出して、その呼び出す記述を呼び出す側で無視するという感じ。
484デフォルトの名無しさん
2021/08/22(日) 07:57:55.97ID:0Cz6ueFz Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
485デフォルトの名無しさん
2021/08/22(日) 16:22:22.41ID:wJpTfwln batから呼び出す奴はこんなのもあるね
ttps://reosablo.hatenablog.jp/entry/2016/07/09/193617
.batのセキュリティゆるゆるなのを利用して実行権限無しでpowershellスクリプトを走らしちゃう感じらしい
ttps://reosablo.hatenablog.jp/entry/2016/07/09/193617
.batのセキュリティゆるゆるなのを利用して実行権限無しでpowershellスクリプトを走らしちゃう感じらしい
486デフォルトの名無しさん
2021/08/22(日) 18:32:28.29ID:Itquj+z7 簡易版はホントに短くまとまっててよいですね
今度から俺もこっちにしよう
今度から俺もこっちにしよう
487デフォルトの名無しさん
2021/08/22(日) 19:00:26.43ID:uP295b6W すげーなこういうのよく思い付くな
知ってしまえば簡単な仕組みだけど、
単一ファイルで動かすって発想がなかったから素直に感心する
知ってしまえば簡単な仕組みだけど、
単一ファイルで動かすって発想がなかったから素直に感心する
488デフォルトの名無しさん
2021/08/22(日) 19:00:34.83ID:Itquj+z7 ExecutionPolicyを指定してこんな感じかな
@powershell/exe un /nop '#'+(gc \"%~f0\"-ra)^|iex&exit/b
@powershell/exe un /nop '#'+(gc \"%~f0\"-ra)^|iex&exit/b
489デフォルトの名無しさん
2021/08/22(日) 19:05:56.51ID:Itquj+z7 unじゃなくてuだけでよかった
490デフォルトの名無しさん
2021/08/22(日) 19:08:51.09ID:Itquj+z7 こうか
@powershell/ex u /nop '#'+(gc \"%~f0\"-ra)^|iex&exit/b
@powershell/ex u /nop '#'+(gc \"%~f0\"-ra)^|iex&exit/b
491デフォルトの名無しさん
2021/08/22(日) 21:59:38.51ID:aqCRpfAk 例えば漏れは、デスクトップにショートカットを作って、
ダブルクリックで、Ruby スクリプトを起動してる。
同様に、PowerShell スクリプトも起動できないの?
リンク先
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
注意。投稿できないので、間に@を入れました
作業フォルダ
C:\Users\Owner\Desktop
ダブルクリックで、Ruby スクリプトを起動してる。
同様に、PowerShell スクリプトも起動できないの?
リンク先
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
注意。投稿できないので、間に@を入れました
作業フォルダ
C:\Users\Owner\Desktop
492デフォルトの名無しさん
2021/08/22(日) 22:06:23.04ID:uP295b6W >>491
だからrubyキチはバカって言われるんだよ
だからrubyキチはバカって言われるんだよ
493デフォルトの名無しさん
2021/08/22(日) 23:05:00.65ID:bImPNL7l >>491
1ファイルで実行したいって言ってるのにショートカット作るのかよw
1ファイルで実行したいって言ってるのにショートカット作るのかよw
494デフォルトの名無しさん
2021/08/23(月) 21:31:06.73ID:KSZvfVlM てすと
C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
495デフォルトの名無しさん
2021/08/24(火) 07:37:43.99ID:ttKQ7L6u cmd.exe
496デフォルトの名無しさん
2021/08/25(水) 10:04:47.88ID:fqAWoYoi バッチファイルに埋め込むときはシフトJISにしないといけないのがチョイ面倒ですね
昨今だとメモ帳もutf-8ですし
昨今だとメモ帳もutf-8ですし
497デフォルトの名無しさん
2021/08/26(木) 00:11:52.59ID:nRffzhpX コードページ変えられるよ
498デフォルトの名無しさん
2021/08/26(木) 00:12:33.27ID:nRffzhpX chcp 65001
499デフォルトの名無しさん
2021/08/26(木) 00:27:24.00ID:gGZ1hKqh コードページ変更っていろいろ罠があったような…
フォントを変えておかないとダメとか
コマンドの一部は期待どおりに動作しないとか
フォントを変えておかないとダメとか
コマンドの一部は期待どおりに動作しないとか
500デフォルトの名無しさん
2021/08/26(木) 09:51:33.43ID:ACJcVgWm シフトJISにしておけばget-contentでエンコーディング指定も不要なので、まぁ、いいかなと
VS codeでオープン時or保存時にシフトJISにするだけですし
VS codeでオープン時or保存時にシフトJISにするだけですし
501デフォルトの名無しさん
2021/08/26(木) 10:33:43.73ID:+CO4gcjh $PSDefaultParameterValue["*:Encodings"] = "utf8NoBom"にしてるけど大体大丈夫だ
コマンドレットには全て暗黙に渡るので一貫性は保てる
Core 6/7だと空でもこれがデフォルトのはず
cmdはレジストリのどっかでchcp 65001指定した、とりあえず今まで問題はない、気がする
コマンドレットには全て暗黙に渡るので一貫性は保てる
Core 6/7だと空でもこれがデフォルトのはず
cmdはレジストリのどっかでchcp 65001指定した、とりあえず今まで問題はない、気がする
502デフォルトの名無しさん
2021/08/26(木) 10:37:16.39ID:+CO4gcjh utf8は低レベルでの扱いがめんどいから、固定長utf-32か、ほぼ固定長のutf-16が流行ってくれた方が嬉しかったんだけれども…
503デフォルトの名無しさん
2021/08/26(木) 11:30:02.61ID:ZNJjgCSR 非圧縮だと通信速度が4倍遅くなる可能性があるけどよいか?
504デフォルトの名無しさん
2021/08/26(木) 12:31:14.96ID:+CO4gcjh デコードに結構計算要るし、最悪ケースで一番容量食うのはutf-8だったりするので、俺はそのへん懐疑的
まあ普及してしまったものは仕方ない
まあ普及してしまったものは仕方ない
505デフォルトの名無しさん
2021/08/26(木) 12:41:27.12ID:+CO4gcjh パイプでネイティブコマンド繋いだりすると化けることあるな
普通のは大丈夫、less.exeとかmingw64配布のネイティブバイナリが怪しい?
sasp を付けて流し込むと直る模様、エンコ調べてハードコードより手軽かつ変更に強そうなのでおすすめ
普通のは大丈夫、less.exeとかmingw64配布のネイティブバイナリが怪しい?
sasp を付けて流し込むと直る模様、エンコ調べてハードコードより手軽かつ変更に強そうなのでおすすめ
506デフォルトの名無しさん
2021/08/26(木) 12:47:48.74ID:+CO4gcjh preference variableのエンコード指定はコマンドレットに適用されるので、native.exeは面倒見てくれないけど、saps exe -nonewなら見てくれる
ってことかな
ってことかな
507デフォルトの名無しさん
2021/08/26(木) 13:49:51.35ID:nnRqDEk/ win用ページャはvimがいい
マニュアル読むにもデフォルトでpowershellのシンタックスハイライトあるし、読み書きエンコードがコマンドラインオプション指定できて、高度なコマンドも渡せるフィルターとして使える
マニュアル読むにもデフォルトでpowershellのシンタックスハイライトあるし、読み書きエンコードがコマンドラインオプション指定できて、高度なコマンドも渡せるフィルターとして使える
508デフォルトの名無しさん
2021/08/26(木) 15:27:38.41ID:ACJcVgWm vs code使ってるから、インテリセンスで大体事足りるし、ショートカットキーでオンラインヘルプがブラウザでひらくから、あんま困ったことないかなぁ
509デフォルトの名無しさん
2021/08/26(木) 17:57:13.12ID:+CO4gcjh フィルターというと
gc file |vim - -Es -c ":set fenc=sjis" -c
%p | ...
みたいな使い方か、nkfでもいいけど
sedが多バイト文字怪しかったりbom有りで死んだりするのでvim -c "s/foo/bar/g" -c "wq"で、文法がほぼ同じなvimで代用したりはする
機能的にはsedの上位版ではあるけど、一度バッファに全て読み込むのでスケーラブルじゃないね
先読み後読み駆使した複雑な正規表現ではコンパイルして使い回せるpwshに軍配が挙がる
gc file |vim - -Es -c ":set fenc=sjis" -c
%p | ...
みたいな使い方か、nkfでもいいけど
sedが多バイト文字怪しかったりbom有りで死んだりするのでvim -c "s/foo/bar/g" -c "wq"で、文法がほぼ同じなvimで代用したりはする
機能的にはsedの上位版ではあるけど、一度バッファに全て読み込むのでスケーラブルじゃないね
先読み後読み駆使した複雑な正規表現ではコンパイルして使い回せるpwshに軍配が挙がる
510デフォルトの名無しさん
2021/08/28(土) 21:15:44.38ID:ClOfPjkS 初心者ですが、PowerShell でスクレイピングしたいので正規表現について教えてください。
$aa = Invoke-WebRequest https://www.epson.jp/products/colorio/ep982a3/spec.htm
$bb = [Text.Encoding]::GetEncoding("UTF-8").GetString( [Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($aa.Content) )
$cc = ($bb -replace '<[^>]+>','')
$dd = $cc.split("`n").trim() | ?{$_ -ne ""}
$dd | more
:
消費電力
約17W(スタンドアローンコピー時)
電源電圧
AC100V 50/60Hz
外形寸法(幅×奥行×高さ)収納時
479×356×148(mm)
外形寸法(幅×奥行×高さ)使用時
479×668×295(mm)
質量
(注)本体のみ
約8.5kg
:
電源電圧 をキーとして、
AC100V 50/60Hz
質量 をキーとして、
約8.5kg
正規表現でマッチした次の行、次の次の行を得るには どう記述すればいいでしょうか?
$aa = Invoke-WebRequest https://www.epson.jp/products/colorio/ep982a3/spec.htm
$bb = [Text.Encoding]::GetEncoding("UTF-8").GetString( [Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($aa.Content) )
$cc = ($bb -replace '<[^>]+>','')
$dd = $cc.split("`n").trim() | ?{$_ -ne ""}
$dd | more
:
消費電力
約17W(スタンドアローンコピー時)
電源電圧
AC100V 50/60Hz
外形寸法(幅×奥行×高さ)収納時
479×356×148(mm)
外形寸法(幅×奥行×高さ)使用時
479×668×295(mm)
質量
(注)本体のみ
約8.5kg
:
電源電圧 をキーとして、
AC100V 50/60Hz
質量 をキーとして、
約8.5kg
正規表現でマッチした次の行、次の次の行を得るには どう記述すればいいでしょうか?
511デフォルトの名無しさん
2021/08/28(土) 22:13:51.92ID:+Hoc5wa5 $aa = Invoke-WebRequest https://www.epson.jp/products/colorio/ep982a3/spec.htm
$bb = [Text.Encoding]::GetEncoding("UTF-8").GetString( [Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($aa.Content) )
$cc = ($bb -replace '<[^>]+>','')
if ($cc -match '電源電圧\r\n *(.*?)\r\n') {
$Matches[1]
}
if ($cc -match '質量\r\n.+?\r\n *(.*?)\r\n') {
$Matches[1]
}
$bb = [Text.Encoding]::GetEncoding("UTF-8").GetString( [Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($aa.Content) )
$cc = ($bb -replace '<[^>]+>','')
if ($cc -match '電源電圧\r\n *(.*?)\r\n') {
$Matches[1]
}
if ($cc -match '質量\r\n.+?\r\n *(.*?)\r\n') {
$Matches[1]
}
512デフォルトの名無しさん
2021/08/28(土) 22:18:47.92ID:ClOfPjkS ありがとうございました!
513デフォルトの名無しさん
2021/08/30(月) 10:04:38.64ID:AbACJw8j 正規表現マスターおるね
514デフォルトの名無しさん
2021/08/30(月) 13:35:00.90ID:VkQf119i カッコのネストに対応してないのが気になる
正規表現はテスターサイトが色々あるから、とりあえず、色々試しながら覚えるのが手っ取り早いと思う
.netの正規表現ならregex stormが老舗
昔はよくお世話になってました
正規表現はテスターサイトが色々あるから、とりあえず、色々試しながら覚えるのが手っ取り早いと思う
.netの正規表現ならregex stormが老舗
昔はよくお世話になってました
515デフォルトの名無しさん
2021/08/30(月) 20:36:24.39ID:J14B/D7S 大昔awkで書いてた時にマッチしたら次の1行読むって処理にしてたのを思い出した
516デフォルトの名無しさん
2021/08/30(月) 22:50:28.00ID:9GCOMhSC Seleniumの勉強中なのでSelenium版
$Driver = Start-SeFirefox
Enter-SeUrl 'https://www.epson.jp/products/colorio/ep982a3/spec.htm' -Driver $Driver
$Element = Find-SeElement -Driver $Driver -XPath '//th[text() = "消費電力"]/following-sibling::td'
Write-Host $Element.Text
$Element = Find-SeElement -Driver $Driver -XPath '//th[text() = "質量"]/following-sibling::td'
Write-Host $Element.Text
$Driver.Quit()
$Driver = Start-SeFirefox
Enter-SeUrl 'https://www.epson.jp/products/colorio/ep982a3/spec.htm' -Driver $Driver
$Element = Find-SeElement -Driver $Driver -XPath '//th[text() = "消費電力"]/following-sibling::td'
Write-Host $Element.Text
$Element = Find-SeElement -Driver $Driver -XPath '//th[text() = "質量"]/following-sibling::td'
Write-Host $Element.Text
$Driver.Quit()
517デフォルトの名無しさん
2021/08/31(火) 01:30:20.09ID:Ee2Wu2cn playwrightもpowershellともう少し親和性高いアセンブリ用意して欲しいところ
518デフォルトの名無しさん
2021/09/10(金) 11:07:31.69ID:4cohbW8+ ランチャーからPowerShellのスクリプトを実行したいのですが、以下のコマンドラインだと警告が出ます。
powershell -ExecutionPolicy RemoteSigned -f Y:\ps\hoge.ps1
> セキュリティ警告
> 信頼するスクリプトのみを実行してください。インターネットから入手したスクリプトは便利ですが、コンピューターに危害を及ぼ
> す可能性があります。このスクリプトを信頼する場合は、この警告メッセージが表示されないように、Unblock-File
> コマンドレットを使用して、スクリプトの実行を許可してください。Y:\ps\hoge.ps1 を実行しますか?
> [D] 実行しない(D) [R] 一度だけ実行する(R) [S] 中断(S) [?] ヘルプ (既定値は "D"):
警告を出さずに実行するにはどうすれば良いでしょうか。
Unblock-File -Path Y:\PS\hoge.ps1 は実行しています。
powershell -ExecutionPolicy RemoteSigned -f Y:\ps\hoge.ps1
> セキュリティ警告
> 信頼するスクリプトのみを実行してください。インターネットから入手したスクリプトは便利ですが、コンピューターに危害を及ぼ
> す可能性があります。このスクリプトを信頼する場合は、この警告メッセージが表示されないように、Unblock-File
> コマンドレットを使用して、スクリプトの実行を許可してください。Y:\ps\hoge.ps1 を実行しますか?
> [D] 実行しない(D) [R] 一度だけ実行する(R) [S] 中断(S) [?] ヘルプ (既定値は "D"):
警告を出さずに実行するにはどうすれば良いでしょうか。
Unblock-File -Path Y:\PS\hoge.ps1 は実行しています。
519デフォルトの名無しさん
2021/09/10(金) 19:51:15.31ID:G99+MXml RemoteSignedを別のに変える
520デフォルトの名無しさん
2021/09/10(金) 21:42:08.30ID:SltSonmt ランチャーってのが何を指してるのかよくわからんけど
HKEY_CLASSES_ROOT\SystemFileAssociations\.ps1\Shell\0\Command
でGet-ExecutionPolicyの結果がAllSignedでない時はSet-ExecutionPolicyしてるから,そのせいでは?
HKEY_CLASSES_ROOT\SystemFileAssociations\.ps1\Shell\0\Command
でGet-ExecutionPolicyの結果がAllSignedでない時はSet-ExecutionPolicyしてるから,そのせいでは?
521デフォルトの名無しさん
2021/09/11(土) 00:04:02.84ID:IblrjkB0522デフォルトの名無しさん
2021/09/12(日) 00:15:16.54ID:MdBr1Okr >>521
使えるよ
使えるよ
523デフォルトの名無しさん
2021/09/15(水) 21:42:25.76ID:iYdwhCOo tasklistの/fi “status eq not responding”を毎回入力するのがくそめんどいんだけど省略形ってない?
524デフォルトの名無しさん
2021/09/15(水) 22:11:56.20ID:VNs9ID1i525デフォルトの名無しさん
2021/09/16(木) 06:56:04.46ID:vPAKZgzi >>524
遅くなったがエイリアスで解決したわサンクス
しかしbashやzshなら便利なエイリアスが最初からたくさんあるのにPowershellって本当に使い辛いな
特にPascal CaseとKebab Caseで命名されてるCmdletのクソさが半端じゃないわ
遅くなったがエイリアスで解決したわサンクス
しかしbashやzshなら便利なエイリアスが最初からたくさんあるのにPowershellって本当に使い辛いな
特にPascal CaseとKebab Caseで命名されてるCmdletのクソさが半端じゃないわ
526デフォルトの名無しさん
2021/09/16(木) 07:26:20.86ID:1vkERD+L ならbash使えば良いじゃん
527デフォルトの名無しさん
2021/09/16(木) 08:36:27.53ID:YRR26wx4 PSスレで質問に答えてもらって感謝しつつPSをめいっぱいdisって周囲をイラつかせてから去っていくスタイル
これは天然だなw
これは天然だなw
528デフォルトの名無しさん
2021/09/16(木) 08:42:51.38ID:d2OD6VRD そもそもbashに標準でエイリアスなんて定義されてなくね?
ディストリビュータが各々初期設定用意してることはあるが
優しいdebian系で両方使ってるけど、ls, grepに--color=auto付けるのと、オプション付けた変種のll, egrep, fgrep etc.で多分一桁だと思う
pwshはコマンドレット自体はもちろん、パラメータにもエイリアスの概念があって便利よ
標準では接頭語で定義されてる、曖昧さの生じない限り受け付ける
例:-OutputVariable、-ErrorActionは-ov, -ea等、-Name/-Countは-n/-c等
なんなら-na/-nam/-counでもよい、キモいけど
そもそも毎回パラメータ渡すのが面倒なら、暗黙に渡すようデフォルト設定できるぞ(about_Parameters_Default_Value)
ディストリビュータが各々初期設定用意してることはあるが
優しいdebian系で両方使ってるけど、ls, grepに--color=auto付けるのと、オプション付けた変種のll, egrep, fgrep etc.で多分一桁だと思う
pwshはコマンドレット自体はもちろん、パラメータにもエイリアスの概念があって便利よ
標準では接頭語で定義されてる、曖昧さの生じない限り受け付ける
例:-OutputVariable、-ErrorActionは-ov, -ea等、-Name/-Countは-n/-c等
なんなら-na/-nam/-counでもよい、キモいけど
そもそも毎回パラメータ渡すのが面倒なら、暗黙に渡すようデフォルト設定できるぞ(about_Parameters_Default_Value)
529デフォルトの名無しさん
2021/09/16(木) 08:53:37.34ID:d2OD6VRD ネイティブコマンドは/?を見てシグネチャを書き写し、引数丸投げするツーライナースクリプトを用意すると便利よ
パスに置いておけば勝手に補完が効くので、保管用ディレクトリを作っておき、コマンドラインからリダイレクトで適宜追記してる
自分でオプション文字列をパースするロジックを書き、それをcompletionコマンドで登録していく方式のbash_completionより便利
パスに置いておけば勝手に補完が効くので、保管用ディレクトリを作っておき、コマンドラインからリダイレクトで適宜追記してる
自分でオプション文字列をパースするロジックを書き、それをcompletionコマンドで登録していく方式のbash_completionより便利
530デフォルトの名無しさん
2021/09/16(木) 09:31:01.40ID:d2OD6VRD あとwin限定だけど、tcsh-likeな伝統的aliasコマンドが好きならdoskey コマンドが全く等価
doskey ls=dir /ad
のように使う
名の示す通りレガシーかつunix/linuxと$profileが共有できないので、*-aliasか、シェル関数を推奨
doskey ls=dir /ad
のように使う
名の示す通りレガシーかつunix/linuxと$profileが共有できないので、*-aliasか、シェル関数を推奨
531デフォルトの名無しさん
2021/09/16(木) 10:03:53.37ID:4L00LZ3y doskeyは外部コマンドだからpwshからも使えるはずだけど、f7でのヒストリ表示とかが効かん
古いコンソールAPI使ってTUIレンダリングアップするからターミナル依存かも?
古いコンソールAPI使ってTUIレンダリングアップするからターミナル依存かも?
532デフォルトの名無しさん
2021/09/16(木) 11:11:11.19ID:80LkMEQe win/coreならヒストリが少なくとも3つあるので競合してる可能性が大
doskey /hと同様にpowershellビルトインのヒストリもF7で表示されることになってるけど、PSReadlineをロードしてれば実際はそっちに吸われる
試しにremove-moduleすればわかる、設定弄って共存も可能とは思うけど、素直にPSReadlineがいいと思うけど
doskey自体は完全にシェル非依存、mingwのsh.exeですら使える事を確認済
/execmd=sh.exe, pwsh.exeの指定を忘れずに
doskey /hと同様にpowershellビルトインのヒストリもF7で表示されることになってるけど、PSReadlineをロードしてれば実際はそっちに吸われる
試しにremove-moduleすればわかる、設定弄って共存も可能とは思うけど、素直にPSReadlineがいいと思うけど
doskey自体は完全にシェル非依存、mingwのsh.exeですら使える事を確認済
/execmd=sh.exe, pwsh.exeの指定を忘れずに
533デフォルトの名無しさん
2021/09/16(木) 11:17:45.26ID:80LkMEQe そしてPSReadlineのデフォルトではF7にヒストリ表示をバインドしてないので何も起きない
Set-PSReadlineKeyHandler -Key F7 コマンド
でバインドできるのでビルトイン、doskey、その他お好みのを
Set-PSReadlineKeyHandler -Key F7 コマンド
でバインドできるのでビルトイン、doskey、その他お好みのを
534デフォルトの名無しさん
2021/09/16(木) 11:32:09.09ID:80LkMEQe doskeyは標準コマンドだしちょっとしたコンソールアプリにラインエディット機能付けるのに未だに便利だったりする
readlineやlinenoiseは大げさ過ぎるし、rlwrapはwin環境に入ってない事が多いし
readlineやlinenoiseは大げさ過ぎるし、rlwrapはwin環境に入ってない事が多いし
535デフォルトの名無しさん
2021/09/16(木) 11:45:45.62ID:4L00LZ3y windows 11でPSCore7が標準装備になるらしいし、気兼ねなくPSReadlineでインタプリタとか書けるようになるんかね
536デフォルトの名無しさん
2021/09/16(木) 11:46:52.35ID:6/uu001h psのコンソールでVZエディタのファイラーみたいにファイル選択できるのありますか?
537デフォルトの名無しさん
2021/09/16(木) 11:59:04.94ID:4L00LZ3y 俺はvimのnetrw(標準プラグイン)使ってるな
unix/linuxなら大体入ってるし、winでもwinget install vimだけで導入が楽、同じように使えるのがよい
プロトコルもcurlを使うのでwinならscp等殆ど使える、linuxでは標準コマンドじゃないけど、まあ大体入ってるでしょう
ブックマーク、複数選択してまとめて移動、パターンで一括リネームなど地味に高機能でおすすめ
unix/linuxなら大体入ってるし、winでもwinget install vimだけで導入が楽、同じように使えるのがよい
プロトコルもcurlを使うのでwinならscp等殆ど使える、linuxでは標準コマンドじゃないけど、まあ大体入ってるでしょう
ブックマーク、複数選択してまとめて移動、パターンで一括リネームなど地味に高機能でおすすめ
538デフォルトの名無しさん
2021/09/17(金) 16:40:15.99ID:J/w/zJeW 仕事が生きがい?会社員の分際で?そろそろ認めなさい…あなたたちは単なる駒です
⇒赤羽の父ひろゆきが教える仕事の本質とやりたいことの違いが凄過ぎて感動が止まらない…
https://www.youtube.com/watch?v=zkwQOdq17dI
【ひろゆき/切り抜き】サラリーマンって資本主義の奴隷なの?
https://www.youtube.com/watch?v=Vi-dvyd5ksE&t=74s
【ひろゆき】社会人語っちゃうサラリーマンについて語りました
https://www.youtube.com/watch?v=pX7NHj_rIBg
奴隷は身近にある?日本の奴隷について【ひろゆき 切り抜き】
https://www.youtube.com/watch?v=evQjCUWIHV4
【ひろゆき】会社員なんて楽しくない?⇒楽しいしラクな仕事の仕方とは※サラリーマン必見!
https://www.youtube.com/watch?v=T95-FS8sT3w&t=390s
【ひろゆき】日本のサラリーマン制度...終わってますよwww
https://www.youtube.com/watch?v=Y-30zk2zDn0
【ひろゆき】視聴者の質問そっちのけで虚言癖アピールするひろゆき
https://www.youtube.com/watch?v=cMjk9B4J2n4
【ひろゆき/切り抜き】虚言癖ってどうやって直せばいい?
https://www.youtube.com/watch?v=5cS7vyb0tfE
⇒赤羽の父ひろゆきが教える仕事の本質とやりたいことの違いが凄過ぎて感動が止まらない…
https://www.youtube.com/watch?v=zkwQOdq17dI
【ひろゆき/切り抜き】サラリーマンって資本主義の奴隷なの?
https://www.youtube.com/watch?v=Vi-dvyd5ksE&t=74s
【ひろゆき】社会人語っちゃうサラリーマンについて語りました
https://www.youtube.com/watch?v=pX7NHj_rIBg
奴隷は身近にある?日本の奴隷について【ひろゆき 切り抜き】
https://www.youtube.com/watch?v=evQjCUWIHV4
【ひろゆき】会社員なんて楽しくない?⇒楽しいしラクな仕事の仕方とは※サラリーマン必見!
https://www.youtube.com/watch?v=T95-FS8sT3w&t=390s
【ひろゆき】日本のサラリーマン制度...終わってますよwww
https://www.youtube.com/watch?v=Y-30zk2zDn0
【ひろゆき】視聴者の質問そっちのけで虚言癖アピールするひろゆき
https://www.youtube.com/watch?v=cMjk9B4J2n4
【ひろゆき/切り抜き】虚言癖ってどうやって直せばいい?
https://www.youtube.com/watch?v=5cS7vyb0tfE
539デフォルトの名無しさん
2021/09/17(金) 18:09:35.08ID:ELLRTb6O コンソール上でコマンドレットに複数の引数をパイプラインで渡したいとき、一々
$temp = New-TemporaryFile
notepad $temp
cat $temp|渡し先
rm $temp
ってやってるんだけど、一々一時ファイル作るのが面倒です
・実行するとテキストエディタが開く
・保存して閉じたら、その内容が改行で区切られてパイプラインに渡される
・保存したファイルは勝手に消える
みたいなのをやりたいのですが何かいい方法はないでしょうか。
vimとやらでいい具体に出来そうな気がするのですが
$temp = New-TemporaryFile
notepad $temp
cat $temp|渡し先
rm $temp
ってやってるんだけど、一々一時ファイル作るのが面倒です
・実行するとテキストエディタが開く
・保存して閉じたら、その内容が改行で区切られてパイプラインに渡される
・保存したファイルは勝手に消える
みたいなのをやりたいのですが何かいい方法はないでしょうか。
vimとやらでいい具体に出来そうな気がするのですが
540デフォルトの名無しさん
2021/09/17(金) 18:37:18.96ID:h9YhuTVR 書いてる一連の処理をスクリプトにまとめるのではダメなの?
541デフォルトの名無しさん
2021/09/17(金) 18:41:27.24ID:h9YhuTVR エディタで編集したいってのが要件でないのなら、powershellのコンソールから配列作ってパイプに渡せばいいんじゃない?
542デフォルトの名無しさん
2021/09/17(金) 18:49:09.93ID:h9YhuTVR 配列だとクォート面倒だからヒアドキュメントの方がいいか
543デフォルトの名無しさん
2021/09/17(金) 18:49:56.37ID:8dXhLdl/ そもそもテキストエディタ使う時点わけわからん
普通にこんな感じでカンマ区切りで複数の値ぶち込んで一行で終わりで良くね
"値1","値2","値3","値4"|コマンドレット
普通にこんな感じでカンマ区切りで複数の値ぶち込んで一行で終わりで良くね
"値1","値2","値3","値4"|コマンドレット
544デフォルトの名無しさん
2021/09/17(金) 19:28:59.09ID:WV0Z1neM 一時ファイルを要求してるのはpwshじゃなくてnotepadの方だからなあ
formsで複数行入力できるテキストエリアでも作ったらいいんじゃないの
formsで複数行入力できるテキストエリアでも作ったらいいんじゃないの
545デフォルトの名無しさん
2021/09/17(金) 19:36:59.65ID:ELLRTb6O すいません
$temp = New-TemporaryFile
notepad $temp
部分をbegin、
cat $temp
部分をproccess、
rm $temp
部分をend、
にそれぞれ設定したコマンドレット作ったら解決しました。
>>543
スクリプトならともかく、毎回"a","b",ってやるの大変過ぎません・・・?
テキストエディタで書けばコピペやちょっとした編集も出来るし便利だと思ったんですが
$temp = New-TemporaryFile
notepad $temp
部分をbegin、
cat $temp
部分をproccess、
rm $temp
部分をend、
にそれぞれ設定したコマンドレット作ったら解決しました。
>>543
スクリプトならともかく、毎回"a","b",ってやるの大変過ぎません・・・?
テキストエディタで書けばコピペやちょっとした編集も出来るし便利だと思ったんですが
546デフォルトの名無しさん
2021/09/17(金) 20:19:24.87ID:HNxzcP2W grep使えるテキストエディタなら一瞬だし
547デフォルトの名無しさん
2021/09/17(金) 20:43:16.94ID:ELLRTb6O >>546
詳しくお願いします
詳しくお願いします
548デフォルトの名無しさん
2021/09/17(金) 23:17:28.58ID:f6z6dViq 542も書いてるけどヒアドキュメントでいいのでは?
PS C:\> -split @"
>> りんご
>> ゴリラ
>> ラッパ
>> パンツ
>> "@ |% { $_ * $_.length }
りんごりんごりんご
ゴリラゴリラゴリラ
ラッパラッパラッパ
パンツパンツパンツ
普通にコピペもできるし
PS C:\> -split @"
>> りんご
>> ゴリラ
>> ラッパ
>> パンツ
>> "@ |% { $_ * $_.length }
りんごりんごりんご
ゴリラゴリラゴリラ
ラッパラッパラッパ
パンツパンツパンツ
普通にコピペもできるし
549デフォルトの名無しさん
2021/09/19(日) 06:06:12.94ID:WE3+ZJYa550デフォルトの名無しさん
2021/09/19(日) 06:28:42.01ID:WE3+ZJYa >>318
3.10はまだrc
3.10はまだrc
551デフォルトの名無しさん
2021/09/19(日) 18:29:20.62ID:8fpQIVxp >>535
Windows11いれてみたけどPowershellは5.1で、pwshコマンドはないな…。
Windows11いれてみたけどPowershellは5.1で、pwshコマンドはないな…。
552デフォルトの名無しさん
2021/09/21(火) 10:41:16.50ID:IpiCAawJ >>1
>>301のリンク先にPowerShell のサポートライフサイクル書いてあるよ
>PowerShell Coreサポート終了日
7.1 2022 年 2 月中旬 (予定)
7.0 2022 年 12 月 3 日
6.2 2020 年 9 月 4 日
6.1 2019 年 9 月 28 日
6.0 2019 年 2 月 13 日
このドキュメントでは、PowerShell Core のサポートについて説明します。Windows PowerShell (1.0 から 5.1) は、Windows OS のコンポーネントです。 コンポーネントは、親製品または親プラットフォームと同様のサポートを受けます。
PowerShell 7.1 (現在) .NET 5.0 (最新) 上に構築されています。
PowerShell 7.0 (LTS) .NET Core 3.1 (LTS) 上に構築されています。
PowerShell 5.1 Windows 10 Anniversary Update および Windows Server 2016 でリリースされました。
PowerShell 4.0 Windows 8.1 および Windows Server 2012 R2 に統合されています。 Windows 7 SP1、Windows Server 2008 R2 SP1、Windows Server 2012 にインストールできます。
>>301のリンク先にPowerShell のサポートライフサイクル書いてあるよ
>PowerShell Coreサポート終了日
7.1 2022 年 2 月中旬 (予定)
7.0 2022 年 12 月 3 日
6.2 2020 年 9 月 4 日
6.1 2019 年 9 月 28 日
6.0 2019 年 2 月 13 日
このドキュメントでは、PowerShell Core のサポートについて説明します。Windows PowerShell (1.0 から 5.1) は、Windows OS のコンポーネントです。 コンポーネントは、親製品または親プラットフォームと同様のサポートを受けます。
PowerShell 7.1 (現在) .NET 5.0 (最新) 上に構築されています。
PowerShell 7.0 (LTS) .NET Core 3.1 (LTS) 上に構築されています。
PowerShell 5.1 Windows 10 Anniversary Update および Windows Server 2016 でリリースされました。
PowerShell 4.0 Windows 8.1 および Windows Server 2012 R2 に統合されています。 Windows 7 SP1、Windows Server 2008 R2 SP1、Windows Server 2012 にインストールできます。
553デフォルトの名無しさん
2021/09/21(火) 11:09:28.80ID:nttPkmcf .net (core) に紐付くpwshとOSに紐付くpowershellか
11がpwshのみになったら、結構なインパクトだね
11がpwshのみになったら、結構なインパクトだね
554デフォルトの名無しさん
2021/09/21(火) 11:22:39.67ID:Da3XTUmu まさかpowershellがこんなに早く泥沼レガシー化するとはな
まあPowerShellが成功したことの裏返しではあるが
まあPowerShellが成功したことの裏返しではあるが
555デフォルトの名無しさん
2021/09/21(火) 11:32:16.53ID:nttPkmcf まだ、pwsh一本になるかわからんのでは?
まぁ、自分はpwshになっても困らんけど
まぁ、自分はpwshになっても困らんけど
556デフォルトの名無しさん
2021/09/21(火) 13:22:46.25ID:/2oLRKWG >>553
powershellにどっぷり依存したスクリプトは死亡か
powershellにどっぷり依存したスクリプトは死亡か
557デフォルトの名無しさん
2021/09/21(火) 18:35:29.10ID:M4Sh91tB 2年弱で開発会社から使うなと言われる言語/バージョンなんて使えねぇ。
ソフト開発中に期限切れになる。
ソフト開発中に期限切れになる。
558デフォルトの名無しさん
2021/09/21(火) 19:45:57.83ID:+NRxBuUH Windows PowerShell 5.1使っておけばいいんじゃね
559デフォルトの名無しさん
2021/09/22(水) 08:31:43.75ID:FN2sBDTe >>557
それじゃあJavaが糞みたいじゃないか
https://www.infoq.com/jp/news/2021/08/java-17-glass/
多くのチームが6か月サイクルのメジャーリリース番号と一致するようにJavaバージョンをアップグレードしているという証拠はない。
New Relicの顧客ベース(数千万の本番JVMを含む)のデータによると、LTS以外のJavaバージョンが1.5%を超える市場シェアに至ったことは一度もない。
LTS以外のJavaバージョンのほとんどは、リリースから数か月以内に、0〜0.5%に低下する。
むしろ、市場全体としてはJava 8と11を使用し続けている。これには、Oracleから離れ、8と11の増分更新の提供を別のベンダーに依存している場合も含まれる。
現在、2つのLTSバージョンが市場シェアの二分しつつある(統計的なノイズレベルを下回る非LTSバージョンもある)。
これは、Java 8が普及した速さと比較して、Java 11の普及がはるかに遅いことを表している(3年で約50%の市場シェア)。
それじゃあJavaが糞みたいじゃないか
https://www.infoq.com/jp/news/2021/08/java-17-glass/
多くのチームが6か月サイクルのメジャーリリース番号と一致するようにJavaバージョンをアップグレードしているという証拠はない。
New Relicの顧客ベース(数千万の本番JVMを含む)のデータによると、LTS以外のJavaバージョンが1.5%を超える市場シェアに至ったことは一度もない。
LTS以外のJavaバージョンのほとんどは、リリースから数か月以内に、0〜0.5%に低下する。
むしろ、市場全体としてはJava 8と11を使用し続けている。これには、Oracleから離れ、8と11の増分更新の提供を別のベンダーに依存している場合も含まれる。
現在、2つのLTSバージョンが市場シェアの二分しつつある(統計的なノイズレベルを下回る非LTSバージョンもある)。
これは、Java 8が普及した速さと比較して、Java 11の普及がはるかに遅いことを表している(3年で約50%の市場シェア)。
560デフォルトの名無しさん
2021/09/22(水) 09:19:00.25ID:tSQB3N1g561デフォルトの名無しさん
2021/09/22(水) 20:05:39.38ID:3C9wtQqc みずほ銀は Java 変えるの不可能なんじゃね
562デフォルトの名無しさん
2021/09/23(木) 05:09:50.35ID:zN5TM8vm そりゃまだCOBOLメインテナンスしてるとこもある
563デフォルトの名無しさん
2021/09/23(木) 15:45:46.23ID:emRd8wBh 短期のリリースサイクルが困るならLTSのみ使って、インターネット接続がない特殊な用途なら、別途、MSと相談かwindows使わないことを検討したほうがいい
まぁ、ちょっと前だと新生銀行のATMとか、最近でもデジタルサイネージで再起動促すダイアログでて止まってたりするの見かけたけど
普通の使い方ならバージョン固定にしてセキュリテイパッチあてない運用は取り得無いから、ガンガン更新するしかないよね
まぁ、ちょっと前だと新生銀行のATMとか、最近でもデジタルサイネージで再起動促すダイアログでて止まってたりするの見かけたけど
普通の使い方ならバージョン固定にしてセキュリテイパッチあてない運用は取り得無いから、ガンガン更新するしかないよね
564デフォルトの名無しさん
2021/09/23(木) 19:44:57.25ID:vr6lr97h ISO 規格になってる言語は安心だな。
古い規格で作成したシステムも、いつまでも正々堂々と使える。
使うなとは誰も言わないし、ライセンス料も請求されないし、訴訟も起こされない。 後方互換もばっちり。
Java は 1CPU あたり年60万円請求される。 マルチCPU、クラスタシステム、マルチサーバならサーバ側だけでも途方もない金額になるし、
それに加えクライアントPCにも使用者指名ごとに料金が発生する。
古い規格で作成したシステムも、いつまでも正々堂々と使える。
使うなとは誰も言わないし、ライセンス料も請求されないし、訴訟も起こされない。 後方互換もばっちり。
Java は 1CPU あたり年60万円請求される。 マルチCPU、クラスタシステム、マルチサーバならサーバ側だけでも途方もない金額になるし、
それに加えクライアントPCにも使用者指名ごとに料金が発生する。
565デフォルトの名無しさん
2021/09/23(木) 20:46:27.83ID:6yVIV0g8 > ISO 規格になってる言語は安心だな。
やはりC#の勝利か
ISO/IEC 23270:2018
Information technology - Programming languages - C#
https://www.iso.org/standard/75178.html
やはりC#の勝利か
ISO/IEC 23270:2018
Information technology - Programming languages - C#
https://www.iso.org/standard/75178.html
566デフォルトの名無しさん
2021/09/23(木) 22:34:58.67ID:zvLE5dwK C#の規格って全然更新されてなくて、実質的に全く意味をなしてないぞ
567デフォルトの名無しさん
2021/09/23(木) 22:41:18.72ID:ELm2gUfv 更新されないのはいいことだ
568デフォルトの名無しさん
2021/09/23(木) 22:58:53.32ID:0/zDNCjz 標準規格は「存在している」ことに意味がある
Rubyなんかもそうだけど、実際には更新されてなくて規格自体の利用価値は皆無だとしても、採用を後押しするための営業トークとしては有効だ
実際564や565は騙されてるわけだしな
Rubyなんかもそうだけど、実際には更新されてなくて規格自体の利用価値は皆無だとしても、採用を後押しするための営業トークとしては有効だ
実際564や565は騙されてるわけだしな
569デフォルトの名無しさん
2021/09/24(金) 00:30:37.06ID:0A2A7GYN570デフォルトの名無しさん
2021/09/24(金) 00:49:07.36ID:Sk1oVFyh OpenJDKで何一つ困ってないからなあ
Oracleがライセンス変更で一儲け狙ったのに、AmazonとかのOpenJDKのディストリビューションにJava市場がごっそり流れた
焦ったOracleがバージョン17から少しの間無償に戻しますんでどうかまた使ってくださいと懇願中(今ここ)
OracleJDKの有償サポートを望んでいる顧客がほとんどいなかったという結論が出たのでOpenJDKさえあればいい
Oracleがライセンス変更で一儲け狙ったのに、AmazonとかのOpenJDKのディストリビューションにJava市場がごっそり流れた
焦ったOracleがバージョン17から少しの間無償に戻しますんでどうかまた使ってくださいと懇願中(今ここ)
OracleJDKの有償サポートを望んでいる顧客がほとんどいなかったという結論が出たのでOpenJDKさえあればいい
571デフォルトの名無しさん
2021/09/24(金) 02:02:31.19ID:LQ0rd/n8 >>567
実装の方がどんどん更新されてる
実装の方がどんどん更新されてる
572デフォルトの名無しさん
2021/09/25(土) 21:04:24.06ID:9x+/yV3L Java の 3rd デベロッパを排除するため、Oracle が Java に機能追加して、
OpenJDK などのプロジェクトが Java に準拠していないと嫌がらせ訴訟することはできる。
Oracle が Microsoft に Java 訴訟したときの言いがかり内容は違うけど、同じ手法を使わないとは言えない。
スレチだから そろそろおしまい。
OpenJDK などのプロジェクトが Java に準拠していないと嫌がらせ訴訟することはできる。
Oracle が Microsoft に Java 訴訟したときの言いがかり内容は違うけど、同じ手法を使わないとは言えない。
スレチだから そろそろおしまい。
573デフォルトの名無しさん
2021/09/25(土) 21:42:09.17ID:cC0TU6KS 自分が言いたいこと言い終わったからおしまいか
574デフォルトの名無しさん
2021/09/25(土) 22:33:53.09ID:Y1lLm4iT WinRMはいつまで生き残るんだろうね?
OpenSSHに取って代わられることになるのかなぁ
OpenSSHに取って代わられることになるのかなぁ
575デフォルトの名無しさん
2021/09/29(水) 23:56:59.06ID:fF+iSaYJ576デフォルトの名無しさん
2021/10/01(金) 00:56:43.69ID:vAUcQRYE 適当なのを探すのが面倒でリマインダーアプリをpowershell(C#)辺りで作ろうかと思うんだが
UIをwinformにするかWeb系にするか迷ってる
UIをwinformにするかWeb系にするか迷ってる
577デフォルトの名無しさん
2021/10/01(金) 01:47:02.72ID:9Tf9Sjyk Windows.UI.Notificationsを使うという手も
https://den.dev/blog/powershell-windows-notification/
https://den.dev/blog/powershell-windows-notification/
578デフォルトの名無しさん
2021/10/03(日) 20:53:35.06ID:GJ3xKl9+ ver7.1のConvertFrom-Jsonで取得したPSCustomObject/Hashtableが
{ "name"="foo"; "count"=1}
となっていて、key名に"count"が使われている為、
$v.count
$v['count']
等の値の取得でエラーになってしまうんですが、どうにか取得する方法は無いですか?
自分にはjsonの原文をreplaceするぐらいしか方法が見つかりませんでした。orz
{ "name"="foo"; "count"=1}
となっていて、key名に"count"が使われている為、
$v.count
$v['count']
等の値の取得でエラーになってしまうんですが、どうにか取得する方法は無いですか?
自分にはjsonの原文をreplaceするぐらいしか方法が見つかりませんでした。orz
579デフォルトの名無しさん
2021/10/03(日) 21:17:26.86ID:RfSUiDPv どんなJSONを使ったのか書いてくれ
580578
2021/10/03(日) 21:20:02.89ID:GJ3xKl9+ すみません。別の理由でエラーが出てたみたいで、ちゃんと取得できました。
申し訳ないです。
申し訳ないです。
581デフォルトの名無しさん
2021/10/05(火) 14:45:19.45ID:Vzh0q/ov 名前被ってても普通に$hash.count/$hash["count"]で.Valuesのcountが引かれる筈だけど、それがハッシュの文法なので
むしろコレクションのpropertyのCountが隠されるのが問題、こちらが確実に欲しければ$hash.Values.Count等と書くのが安全
$hash.Keys.countも同じ値を返すけど、これはKeysからキー"count"を引いてるように読まれる可能性が高いので勧めない
むしろコレクションのpropertyのCountが隠されるのが問題、こちらが確実に欲しければ$hash.Values.Count等と書くのが安全
$hash.Keys.countも同じ値を返すけど、これはKeysからキー"count"を引いてるように読まれる可能性が高いので勧めない
582デフォルトの名無しさん
2021/10/06(水) 13:37:05.91ID:Y3s6WLpv >>581
$hash = @{Values = @{Count = -1}} とかだと、駄目だよね。
これ、本当に確実に取得するのは、わりと面倒なのかも。普通の使い方なら、
$hash.get_Count() とか、$hash.psbase.Count とかでいいとは思う。でも、
$hash | Add-Member ScriptMethod get_Count {-1} -Force
とかされると、get_Count() は使えなくなる。
$hash | Add-Member NoteProperty psbase @{Count = -1} -Force
とかはエラーになるけれど、
$psbase = New-Object Management.Automation.PSNoteProperty psbase, @{Count = -1}
$hash.psobject.Members.Add($psbase, $true)
とか強引に追加すると、妙なことになって、psbase.Count も使えなくなる。
本当に確実そうな方法は、(New-Object hashtable $hash).psbase.Count とか、
$hash.GetType().GetProperty('Count').GetValue($hash) とか?
$hash = @{Values = @{Count = -1}} とかだと、駄目だよね。
これ、本当に確実に取得するのは、わりと面倒なのかも。普通の使い方なら、
$hash.get_Count() とか、$hash.psbase.Count とかでいいとは思う。でも、
$hash | Add-Member ScriptMethod get_Count {-1} -Force
とかされると、get_Count() は使えなくなる。
$hash | Add-Member NoteProperty psbase @{Count = -1} -Force
とかはエラーになるけれど、
$psbase = New-Object Management.Automation.PSNoteProperty psbase, @{Count = -1}
$hash.psobject.Members.Add($psbase, $true)
とか強引に追加すると、妙なことになって、psbase.Count も使えなくなる。
本当に確実そうな方法は、(New-Object hashtable $hash).psbase.Count とか、
$hash.GetType().GetProperty('Count').GetValue($hash) とか?
583デフォルトの名無しさん
2021/10/14(木) 16:20:34.79ID:Zuo7IXnW powershellのcd (Get-Childitem)には、CDPATHに相当するもの(か概念)って無いのでしょうか?
(行きたいディレクトリに簡単に行けなくて 不便を感じてるのですが)
(行きたいディレクトリに簡単に行けなくて 不便を感じてるのですが)
584デフォルトの名無しさん
2021/10/14(木) 17:12:51.73ID:F6GJrbHM ZLocationがおすすめ
https://github.com/vors/ZLocation
https://github.com/vors/ZLocation
585デフォルトの名無しさん
2021/10/14(木) 17:56:55.09ID:Zuo7IXnW >>584 情報ありがとうございます
まぁたしかに 何でも「つくればある」のだから、自分なりに工夫してみようかと思いました
まぁたしかに 何でも「つくればある」のだから、自分なりに工夫してみようかと思いました
586デフォルトの名無しさん
2021/10/14(木) 18:22:20.84ID:Zuo7IXnW >>583
ついでに言えば…Set-Location の間違いでした (笑) 使い始めて二日目なもので...
ついでに言えば…Set-Location の間違いでした (笑) 使い始めて二日目なもので...
587デフォルトの名無しさん
2021/10/14(木) 21:15:12.30ID:loydBA97 ディレクトリをSet-Locationしたら.NETのAPI側も合わせないとずれたままだぞ
だから次のような2行書いとく習慣付けるといいかも
カレントパス指定なんてめったに使わないけど
Set-Location -Path パス名
[IO.Directory]::SetCurrentDirectory((Get-Location).ProviderPath)
だから次のような2行書いとく習慣付けるといいかも
カレントパス指定なんてめったに使わないけど
Set-Location -Path パス名
[IO.Directory]::SetCurrentDirectory((Get-Location).ProviderPath)
588デフォルトの名無しさん
2021/10/14(木) 23:40:28.07ID:aRG2i7ze それこそGetCurrentDirectory使うときだけの話だよな
対話的にSet-Location使う程度では必要ないだろう
べつに(pwd).Pathとかも渡せるし
CDPATH
pwshでそんな移動しまくらないからワイには必要ないな
対話的にSet-Location使う程度では必要ないだろう
べつに(pwd).Pathとかも渡せるし
CDPATH
pwshでそんな移動しまくらないからワイには必要ないな
589デフォルトの名無しさん
2021/10/15(金) 01:03:33.08ID:P3+DrVIB 適当に$CDPATH=Get-Locationとかやってりゃいいんじゃない?
590デフォルトの名無しさん
2021/10/15(金) 22:58:53.33ID:KlL89mo2591デフォルトの名無しさん
2021/10/19(火) 14:42:15.67ID:1a7BUMOp 一旦powershellで作ったはいいものの
起動が遅くてバッチやvbsで作り直す
常駐物ならC#で書き直す
起動が遅くてバッチやvbsで作り直す
常駐物ならC#で書き直す
592デフォルトの名無しさん
2021/10/19(火) 20:57:46.00ID:aBJ6lObS 一旦powershellで作ったのはいいものでした
593デフォルトの名無しさん
2021/10/19(火) 21:23:11.41ID:90J0NSJZ PowerShellの起動が遅いと思うような環境ならC#アプリの起動も遅そうな気がするんだが
594デフォルトの名無しさん
2021/10/20(水) 12:22:16.87ID:yLBdcth0 >>593
バッチやvbsだとpowershellが起動するまでに処理が終わってるし
C#に関しては話にならんほど差が出る
powershellの起動の問題は.NETランタイム以外にあるんじゃないの
サクっと作れるのは評価するが本番運用ではとても使えない
バッチやvbsだとpowershellが起動するまでに処理が終わってるし
C#に関しては話にならんほど差が出る
powershellの起動の問題は.NETランタイム以外にあるんじゃないの
サクっと作れるのは評価するが本番運用ではとても使えない
595デフォルトの名無しさん
2021/10/20(水) 12:56:45.87ID:ngUNbqNs 要件次第としか
596デフォルトの名無しさん
2021/10/20(水) 13:47:15.88ID:CIRlmBOD 起動時間シビアに気にするような本番運用ばかりじゃないしな
597デフォルトの名無しさん
2021/10/20(水) 20:57:29.51ID:3GaA8N5r ネットワークが遅いのでは?
起動時にインターネット接続見に行くので、ネットワーク遅いと辛いことに
スクリプト実行するだけなら、noprofile, noninteractive付けると良いですよ
起動時にインターネット接続見に行くので、ネットワーク遅いと辛いことに
スクリプト実行するだけなら、noprofile, noninteractive付けると良いですよ
598デフォルトの名無しさん
2021/10/20(水) 20:57:35.93ID:3tEv1Sl5 PowerShellの起動が遅い人はプロファイルで時間がかかる処理してるんじゃないの
599デフォルトの名無しさん
2021/10/20(水) 21:53:25.89ID:U4hhSk0+ イニシャルローディング時間が遅いだけで初回限りの現象なのでは?
600デフォルトの名無しさん
2021/10/20(水) 23:22:34.38ID:P5BDeiqM ネットワーク見てたのchocolatyのプロファイル読んでたからでしたわw
601デフォルトの名無しさん
2021/10/21(木) 04:01:48.12ID:ehpI/07M ふざけんな
602デフォルトの名無しさん
2021/10/21(木) 12:31:37.50ID:kkshIJkE PowershellでExcel操作できるの素晴らしくて信者になりそう
VBAやったことないけどVScodeで書きにくいってだけで敬遠する
VBAやったことないけどVScodeで書きにくいってだけで敬遠する
603デフォルトの名無しさん
2021/10/21(木) 12:48:08.17ID:WbB1T+tY 流石にVBAの方が使いやすいぞ
でもpwshでやるのが好き
でもpwshでやるのが好き
604デフォルトの名無しさん
2021/10/21(木) 12:51:21.99ID:yR1RZl9g ExelがインストールされてるならCOM経由で操作できると思うけど、インストールされてない環境ならC#用のライブラリ使う感じかな
605デフォルトの名無しさん
2021/10/21(木) 12:52:01.86ID:yR1RZl9g VBAは遅すぎてなぁ
606デフォルトの名無しさん
2021/10/21(木) 19:59:19.64ID:9KFcOoVu チャートぐらい.NETの機能で描けるしExcelもVBAもいらない
607デフォルトの名無しさん
2021/10/21(木) 22:53:22.14ID:snz0FCDA excelはやたら高度な因子分析機能やソルバ(非線形、進化的最適化)ついてるから侮れない
608デフォルトの名無しさん
2021/10/21(木) 23:03:44.60ID:fjfGcsWO チャート描くのが目的なら使わなくていいんじゃない?
Exelの資料を編集するのが目的なら、COMかライブラリ使うしかない
Exelの資料を編集するのが目的なら、COMかライブラリ使うしかない
609デフォルトの名無しさん
2021/10/22(金) 08:29:48.79ID:tVaBgZ6B エクセルよくわからんけどA.xslxのあるセルの値をB.xlsxのある場所に移す簡単なプログラム依頼されてて、VBA使えばできるんだろうけどわざわざシートにバインドされたマクロ書くのが無駄に感じるからpowershellで済ませようとしている...ダメ?
610デフォルトの名無しさん
2021/10/22(金) 09:07:19.52ID:RUjjkZxa 好きにしろ
611デフォルトの名無しさん
2021/10/22(金) 10:07:54.24ID:EjatPKif .psファイルは普通のPCでは実行できないよ
612デフォルトの名無しさん
2021/10/22(金) 10:55:51.24ID:/YA0OWyv >>611
誰もポストスクリプトファイル実行する話なんかしてないけどね
誰もポストスクリプトファイル実行する話なんかしてないけどね
613デフォルトの名無しさん
2021/10/22(金) 13:06:34.54ID:SA+7zjBD 上の方にあるpowershellスクリプトをバッチファイル内に埋め込む方法使えば、普通のWindows 10 PCなら動かせますよ
ポストスクリプトも一応チューリング完全だから、実行系さえあれば動かせますねwww
ポストスクリプトも一応チューリング完全だから、実行系さえあれば動かせますねwww
614デフォルトの名無しさん
2021/10/22(金) 20:46:03.99ID:6MiPd5ZV あーウゼー
615デフォルトの名無しさん
2021/10/22(金) 21:21:39.78ID:EVzz2nOu >>611
拡張子間違ってるぞ
拡張子間違ってるぞ
616デフォルトの名無しさん
2021/10/22(金) 22:24:13.62ID:8L7RGAQS VSCode の拡張機能・GrapeCity のExcel Viewer じゃ、ダメなのか?
他にも、Rainbow CSV とか
他にも、Rainbow CSV とか
617デフォルトの名無しさん
2021/10/22(金) 23:08:57.50ID:fpd3u34i >>616
スレチ
スレチ
618デフォルトの名無しさん
2021/10/23(土) 00:12:21.69ID:pYmoDx9D 代替案を出しただけでスレチとか
世界征服したいですとか質問が来たらどうすんだ
世界征服したいですとか質問が来たらどうすんだ
619デフォルトの名無しさん
2021/10/23(土) 07:48:25.45ID:YfqEVQfQ バカじゃねぇの?
620デフォルトの名無しさん
2021/10/23(土) 08:53:25.35ID:p7WIutVI >>618
PSで解決できる案を出せばそれはスレの趣旨に沿うだろ
PSで解決できる案を出せばそれはスレの趣旨に沿うだろ
621デフォルトの名無しさん
2021/10/23(土) 10:07:48.57ID:bwy1yWHL PSで世界征服
622デフォルトの名無しさん
2021/10/23(土) 10:22:51.64ID:LN9x/bbj Excel入ってない環境で内容を確認するだけなら使えそう
同じ処理を繰り返し実行するならスクリプト作るのがベスト
CSVなら外部ライブラリ導入せずともpowershellだけで処理出来るし
心を込めた手作業派はスレチ
同じ処理を繰り返し実行するならスクリプト作るのがベスト
CSVなら外部ライブラリ導入せずともpowershellだけで処理出来るし
心を込めた手作業派はスレチ
623デフォルトの名無しさん
2021/10/23(土) 21:14:23.04ID:j/f4QfO8 powershellの方がVBより文法的に楽だろJK
624デフォルトの名無しさん
2021/10/23(土) 21:31:40.91ID:Q4dm2fcp シジルが気になる人はそれなりにいるんじゃないかな?
まぁ、俺もVBの文法は肌に合わなくて、どうしてもマクロじゃないとダメって時だけしか触りたくないけど
まぁ、俺もVBの文法は肌に合わなくて、どうしてもマクロじゃないとダメって時だけしか触りたくないけど
625デフォルトの名無しさん
2021/10/23(土) 22:19:22.89ID:EHtNtO17 VBAマクロはGitとかの管理がしんどくてコードレビューも辛い
626デフォルトの名無しさん
2021/10/23(土) 23:12:10.13ID:ChfdQawL PowerShellでCOMのIDispatchな操作やるとオブジェクト参照リークしまくるから別の専用プロセスでやるよね?
627デフォルトの名無しさん
2021/10/24(日) 07:49:15.35ID:9JgQl7FC 連想配列を学習中なのですが…
$a = @{"a"=10 ; "b"=20; "c"=30 } などとして連想配列を作り
> $a.count
3 # たしかに要素数は 3
なのに
> $a.length
1
lengthは 1 になるのは何故? …っていうか、1って何の長さ?
普通の配列だと、要素数は lengthでも countでも同じなのに
$a = @{"a"=10 ; "b"=20; "c"=30 } などとして連想配列を作り
> $a.count
3 # たしかに要素数は 3
なのに
> $a.length
1
lengthは 1 になるのは何故? …っていうか、1って何の長さ?
普通の配列だと、要素数は lengthでも countでも同じなのに
628デフォルトの名無しさん
2021/10/24(日) 07:57:43.39ID:l/N511if >>626
別プロセスでもよいけど、スクリプトブロック内で参照するオブジェクト作って、ブロックの外側でGC呼び出すだけでも十分じゃない?
別プロセスでもよいけど、スクリプトブロック内で参照するオブジェクト作って、ブロックの外側でGC呼び出すだけでも十分じゃない?
629デフォルトの名無しさん
2021/10/24(日) 08:09:09.46ID:l/N511if630デフォルトの名無しさん
2021/10/24(日) 08:14:44.25ID:l/N511if 配列は
$a = 1,2,3
,$a | gm
するとCountがAliasPropertyでLengthがPropertyって出てくるね
$a = 1,2,3
,$a | gm
するとCountがAliasPropertyでLengthがPropertyって出てくるね
631デフォルトの名無しさん
2021/10/24(日) 08:17:36.78ID:j8yOk2Jj New V3 Language Features
https://devblogs.microsoft.com/powershell/new-v3-language-features/
You can now use Count or Length on any object, even if it didn’t have the property.
If the object didn’t have a Count or Length property, it will will return 1 (or 0 for $null).
Objects that have Count or Length properties will continue to work as they always have.
PS> $a = 42
PS> $a.Count
1
https://devblogs.microsoft.com/powershell/new-v3-language-features/
You can now use Count or Length on any object, even if it didn’t have the property.
If the object didn’t have a Count or Length property, it will will return 1 (or 0 for $null).
Objects that have Count or Length properties will continue to work as they always have.
PS> $a = 42
PS> $a.Count
1
632デフォルトの名無しさん
2021/10/24(日) 08:23:20.00ID:l/N511if なるほどー
勉強になりました。ありがとう
勉強になりました。ありがとう
633デフォルトの名無しさん
2021/10/24(日) 08:28:32.82ID:9JgQl7FC つまり lengthなんてのが無くても 1は返る…と.
たしかに tabキーでの補完は出なかったけれど
でも 配列には lengthあるし、個人的にはrubyでもlength使えてたので…うっかり書きそうな気はするが、
…とりあえず勉強になりました
たしかに tabキーでの補完は出なかったけれど
でも 配列には lengthあるし、個人的にはrubyでもlength使えてたので…うっかり書きそうな気はするが、
…とりあえず勉強になりました
634デフォルトの名無しさん
2021/10/24(日) 08:29:58.92ID:l/N511if635デフォルトの名無しさん
2021/10/24(日) 08:35:16.11ID:l/N511if 自分もRuby使ってるから分かりますわー
powershellではプロパティを大文字始まりのCamelCaseで書く様にすると
慣れるの早くなると思います
powershellではプロパティを大文字始まりのCamelCaseで書く様にすると
慣れるの早くなると思います
636デフォルトの名無しさん
2021/10/24(日) 08:46:22.73ID:JG8zeEOx $a.Countで1が変えるよりエラーを返して欲しいな
637デフォルトの名無しさん
2021/10/24(日) 09:21:28.43ID:l/N511if blogの記事読むとForEach-Objectした際に
列挙可能なものかそうでないかの判定を行わずに済ませるためみたいです
確かにv2の頃は出力が一個だけだった時のために@()でくくってましたわ
それよりもForEach-Objectの省略記法で
(ls).FullName
ができるの初めて知りました.これは便利
列挙可能なものかそうでないかの判定を行わずに済ませるためみたいです
確かにv2の頃は出力が一個だけだった時のために@()でくくってましたわ
それよりもForEach-Objectの省略記法で
(ls).FullName
ができるの初めて知りました.これは便利
638デフォルトの名無しさん
2021/10/24(日) 09:51:12.20ID:1SVJ9Wvp639デフォルトの名無しさん
2021/10/24(日) 10:47:06.59ID:l/N511if foreachできるかいちいち判定するより便利だし、よいと思うけどな
実際、自分で書くスクリプトはめっちゃ恩恵にあずかってる
実際、自分で書くスクリプトはめっちゃ恩恵にあずかってる
640デフォルトの名無しさん
2021/10/24(日) 11:21:20.50ID:7IRX6L2k 知ってれば便利だし、知らなくてもあまり害にならないからね
今回の質問のケースも調べる気がなく急いでたならCount使えばいい案件
シェル言語は厳格さより楽さ優先でいい
惜しむらくはPSがもっと普及していれば変な癖も含めて常識になるけど、そこまで至ってないところ
今回の質問のケースも調べる気がなく急いでたならCount使えばいい案件
シェル言語は厳格さより楽さ優先でいい
惜しむらくはPSがもっと普及していれば変な癖も含めて常識になるけど、そこまで至ってないところ
641sage
2021/10/24(日) 13:02:54.56ID:cIzJWM7z こんな感じのコードでもエラーが出ない為と書いてあったね
$x = dir
for ($i = 0; $i –lt $x.Count; $i++)
{
$x[$i] …
}
$x.gettype() で調べると値が1つならSystem.IO.FileSystemInfo
2つ以上ならSystem.Arrayで配列
配列と1つの値で同じコードで出来るのは個人的には楽でいいと思う
$x = dir
for ($i = 0; $i –lt $x.Count; $i++)
{
$x[$i] …
}
$x.gettype() で調べると値が1つならSystem.IO.FileSystemInfo
2つ以上ならSystem.Arrayで配列
配列と1つの値で同じコードで出来るのは個人的には楽でいいと思う
642デフォルトの名無しさん
2021/10/24(日) 15:45:25.76ID:dQwbGYLm jQuery Object も、0, 1, 2以上でも、配列として同じ書き方ができる。
0でもエラーにならず、単にループしないだけ
0, 1, 2以上で、表現・型を変えるものは、大変
0でもエラーにならず、単にループしないだけ
0, 1, 2以上で、表現・型を変えるものは、大変
643デフォルトの名無しさん
2021/10/24(日) 17:38:58.32ID:jz1DejpB >>641
配列を期待してるのに1要素が返る場合に配列で返らないのは階層データ構造を作る場合とても困る
gcはいつも$hagelist = [string[]](gc hage.txt)
ってやってるわら
ハゲが一人だと配列にならないしハゲがいないと$nullになるし
要素数0、1、2以上で型が変わる仕様はいつ見ても気持ち悪い
配列を期待してるのに1要素が返る場合に配列で返らないのは階層データ構造を作る場合とても困る
gcはいつも$hagelist = [string[]](gc hage.txt)
ってやってるわら
ハゲが一人だと配列にならないしハゲがいないと$nullになるし
要素数0、1、2以上で型が変わる仕様はいつ見ても気持ち悪い
644デフォルトの名無しさん
2021/10/24(日) 18:40:57.32ID:1SVJ9Wvp まあこの手の仕様はどっちが正解とかはないので結局は好き嫌いでしかないよね
個人的には単一の値と配列を同一に扱いたい時は@(…)で充分なような気がする
個人的には単一の値と配列を同一に扱いたい時は@(…)で充分なような気がする
645デフォルトの名無しさん
2021/10/25(月) 07:12:04.32ID:UuRFLqCB ForEach-Objectだと配列のネストをフラットにしてくれるけどforeachだとそうならないから
@()でくくるので全て解決ってことにはならないんじゃないかな
あと,エラー出してくれる動作の方が好みなら
Set-StrictMode -Version Latest
にするとエラーになりますよ
@()でくくるので全て解決ってことにはならないんじゃないかな
あと,エラー出してくれる動作の方が好みなら
Set-StrictMode -Version Latest
にするとエラーになりますよ
646デフォルトの名無しさん
2021/10/25(月) 23:46:47.63ID:ahXaOei7 countが使えるから何だって感じ
外部テキストファイル扱う時は0バイト、1行のみ、複数行のテスト必須だな
外部テキストファイル扱う時は0バイト、1行のみ、複数行のテスト必須だな
647デフォルトの名無しさん
2021/10/26(火) 00:05:31.73ID:lX9x28FW そうしたければそうすればいいんじゃないかな?
俺は必須だとは思わないけど
俺は必須だとは思わないけど
648デフォルトの名無しさん
2021/10/26(火) 09:37:37.38ID:t3bhaUes いちいちバイト数や行数を調べるより
何も考えずに@()を使ったほうが分かりやすい
何も考えずに@()を使ったほうが分かりやすい
649デフォルトの名無しさん
2021/10/26(火) 11:39:01.57ID:lX9x28FW 配列に$nullや空文字列が含まれる場合のチェックはどのみち必要になるだろうからv3記法がスッキリ書けて嬉しい
@()で括るのは想定外の挙動になるのと、もうすでにもっと簡易な記法が言語サポートされてるんだから使う必要ない
@()で括るのは想定外の挙動になるのと、もうすでにもっと簡易な記法が言語サポートされてるんだから使う必要ない
650デフォルトの名無しさん
2021/10/28(木) 11:41:35.91ID:d18Bz9B/ powershelle初心者だけどこんなバッチファイルを書き換えたい場合どうやって置き換えたらいいかな?
%%j(2番目トークン)の参照方法が分からないので教えてください。
for /F "tokens=1-2" %%i in (%TBL%) do (
if "%1" == "%%i" (
set MSG=%%j
)
)
%%j(2番目トークン)の参照方法が分からないので教えてください。
for /F "tokens=1-2" %%i in (%TBL%) do (
if "%1" == "%%i" (
set MSG=%%j
)
)
651デフォルトの名無しさん
2021/10/28(木) 12:37:45.38ID:ZmBUU4bO 対応が付きやすいようになるべく同じかきかたしたらこんな感じかな
Get-Content $env:TBL -Encoding Oem | ForEach-Object {
$a, $b = -split $_
if ( $args[0] -eq $a ) {
$msg = $b
}
}
Get-Content $env:TBL -Encoding Oem | ForEach-Object {
$a, $b = -split $_
if ( $args[0] -eq $a ) {
$msg = $b
}
}
652デフォルトの名無しさん
2021/10/28(木) 12:38:27.35ID:ZmBUU4bO 半角スペースが消えちゃって見辛い(泣
653デフォルトの名無しさん
2021/10/28(木) 12:57:14.68ID:d18Bz9B/654653
2021/10/28(木) 16:19:34.64ID:rsKCMs1x >>651でやりたい動きになりました!
本当にありがとうございます!
本当にありがとうございます!
655デフォルトの名無しさん
2021/10/28(木) 21:48:59.07ID:ZmBUU4bO ForEach-Objectはパイプからの入力を逐次に処理するイメージなので、なるべくまとめて処理するxargsとは逆の動作かな
Get-Contentはオプションなしだと行区切りの配列を返すので
自動変数$_には一行文の文字列が入る
-split演算子は右辺のみだと右辺の文字列を空白区切りで配列にして返すので
先頭の2つを受け取って処理してると
バッチと違って、対話環境で一つずつ動作を確認しながら動かせるので
いろいろ試して見ると早く慣れると思う
Get-Contentはオプションなしだと行区切りの配列を返すので
自動変数$_には一行文の文字列が入る
-split演算子は右辺のみだと右辺の文字列を空白区切りで配列にして返すので
先頭の2つを受け取って処理してると
バッチと違って、対話環境で一つずつ動作を確認しながら動かせるので
いろいろ試して見ると早く慣れると思う
656デフォルトの名無しさん
2021/10/28(木) 22:57:28.09ID:BKXGS6EF みんなForeach-objectってよく覚えてるよね
省略形の%ばっかり使ってて忘れがちだわ
省略形の%ばっかり使ってて忘れがちだわ
657デフォルトの名無しさん
2021/10/29(金) 09:10:35.42ID:354Lg8uj vscodeでスクリプト書いてると略すなって怒られるからね
658デフォルトの名無しさん
2021/10/29(金) 13:55:51.86ID:o1+BEtnt ターミナルでポチポチ動かす時は%や?を使ってる
コマンドレットもlsやcdを使ってるし
スクリプトはvscで指摘されるし補完も効くからエイリアス使わないかな
コマンドレットもlsやcdを使ってるし
スクリプトはvscで指摘されるし補完も効くからエイリアス使わないかな
659デフォルトの名無しさん
2021/10/29(金) 14:41:44.53ID:+PKyqpbv660デフォルトの名無しさん
2021/10/29(金) 18:01:47.11ID:83FlvPlk スクリプトで低速のforeach-objectなんて使わないから、
結局本名で書く機会なんて無い。
結局本名で書く機会なんて無い。
661デフォルトの名無しさん
2021/10/29(金) 19:43:20.82ID:o1+BEtnt 俺は結構使ってるなあ
662デフォルトの名無しさん
2021/10/29(金) 22:42:07.83ID:354Lg8uj663デフォルトの名無しさん
2021/10/29(金) 22:52:08.43ID:AeZX10et ボトルネックになるような場所に使うなってのは当然だが
使う場所が無いってのはどうなんだろ
使う場所が無いってのはどうなんだろ
664デフォルトの名無しさん
2021/10/30(土) 00:33:36.76ID:AwW6Wn8r 早すぎる最適化は諸悪の根源定期
性能改善を覚えるとそれが目的化するんや
そこに山があるんや
性能改善を覚えるとそれが目的化するんや
そこに山があるんや
665デフォルトの名無しさん
2021/11/02(火) 01:45:01.96ID:MFLvMhie666デフォルトの名無しさん
2021/11/02(火) 01:50:33.01ID:MFLvMhie iwr や gciなども アイリアス元なんか覚えてない
667デフォルトの名無しさん
2021/11/02(火) 01:51:33.79ID:MFLvMhie668デフォルトの名無しさん
2021/11/02(火) 07:40:44.52ID:+RlBaHPb669デフォルトの名無しさん
2021/11/02(火) 07:45:59.56ID:BCReJeM/ gciは使わないなぁ
lsか、補完でエイリアス元を使うかどっちか
オプション指定が必要な時はget-childitemですね
invoke-restmethodはproxy指定しないといけないから、コマンド履歴から呼び出してる
本当によく使うならプロファイルに書くんだけど、そこまででもない
lsか、補完でエイリアス元を使うかどっちか
オプション指定が必要な時はget-childitemですね
invoke-restmethodはproxy指定しないといけないから、コマンド履歴から呼び出してる
本当によく使うならプロファイルに書くんだけど、そこまででもない
670デフォルトの名無しさん
2021/11/02(火) 07:53:21.41ID:BCReJeM/671デフォルトの名無しさん
2021/11/02(火) 18:18:01.02ID:xDEug3LM >>670
$array | &{process{ 何か処理 }}
スクリプトブロックのprocess部はパイプから受け取ったオブジェクトを1つずつ処理するのでこれでループ処理書ける
良いところ
パイプから渡せる
当然begin部とend部も使える
動作速度は%どころかforeach文すら上回る
悪いところ
&で呼び出すとスコープ周りが面倒臭い(ドットソースで呼べばいいだけだが)
$array | &{process{ 何か処理 }}
スクリプトブロックのprocess部はパイプから受け取ったオブジェクトを1つずつ処理するのでこれでループ処理書ける
良いところ
パイプから渡せる
当然begin部とend部も使える
動作速度は%どころかforeach文すら上回る
悪いところ
&で呼び出すとスコープ周りが面倒臭い(ドットソースで呼べばいいだけだが)
672デフォルトの名無しさん
2021/11/02(火) 18:52:00.08ID:BCReJeM/ すげー!
見た目Foreach-Objectと大して変わんないように見えるけど、なんで早いんだろう?
見た目Foreach-Objectと大して変わんないように見えるけど、なんで早いんだろう?
673デフォルトの名無しさん
2021/11/02(火) 19:10:27.17ID:BCReJeM/ 全然意味ない例だけど試してみた
PS C:\> Measure-Command { ls -Recurse c:\Qt | & { process{$_.fullname > $null} } }
Days : 0
Hours : 0
Minutes : 0
Seconds : 5
Milliseconds : 196
Ticks : 51967700
TotalDays : 6.01478009259259E-05
TotalHours : 0.00144354722222222
TotalMinutes : 0.0866128333333333
TotalSeconds : 5.19677
TotalMilliseconds : 5196.77
PS C:\> Measure-Command { ls -Recurse c:\Qt | % {$_.fullname > $null} }
Days : 0
Hours : 0
Minutes : 0
Seconds : 6
Milliseconds : 190
Ticks : 61909279
TotalDays : 7.16542581018519E-05
TotalHours : 0.00171970219444444
TotalMinutes : 0.103182131666667
TotalSeconds : 6.1909279
TotalMilliseconds : 6190.9279
確かに速いね!不思議
PS C:\> Measure-Command { ls -Recurse c:\Qt | & { process{$_.fullname > $null} } }
Days : 0
Hours : 0
Minutes : 0
Seconds : 5
Milliseconds : 196
Ticks : 51967700
TotalDays : 6.01478009259259E-05
TotalHours : 0.00144354722222222
TotalMinutes : 0.0866128333333333
TotalSeconds : 5.19677
TotalMilliseconds : 5196.77
PS C:\> Measure-Command { ls -Recurse c:\Qt | % {$_.fullname > $null} }
Days : 0
Hours : 0
Minutes : 0
Seconds : 6
Milliseconds : 190
Ticks : 61909279
TotalDays : 7.16542581018519E-05
TotalHours : 0.00171970219444444
TotalMinutes : 0.103182131666667
TotalSeconds : 6.1909279
TotalMilliseconds : 6190.9279
確かに速いね!不思議
674デフォルトの名無しさん
2021/11/02(火) 20:10:29.35ID:cNrRrDlB 裏を返せばforeachは毎回スコープの是正処理が走るから遅いということか
675デフォルトの名無しさん
2021/11/02(火) 21:22:55.57ID:BCReJeM/ PS C:\> Measure-Command { ls -Rec c:\Qt |&{Begin{$f = [System.Collections.ArrayList]::new(); $d = [System.Collections.ArrayList]::new()} Process{if($_.Mode[0] -eq 'd'){$d.Add($_)}else{$f.Add($_)}} End{Write-Host "Directory: $($d.count), File: $($f.count)"}} }
Directory: 4915, File: 50123
Days : 0
Hours : 0
Minutes : 0
Seconds : 5
Milliseconds : 645
Ticks : 56455459
TotalDays : 6.53419664351852E-05
TotalHours : 0.00156820719444444
TotalMinutes : 0.0940924316666667
TotalSeconds : 5.6455459
TotalMilliseconds : 5645.5459
PS C:\> Measure-Command { ls -Rec c:\Qt |ForEach-Object -Begin{$f = [System.Collections.ArrayList]::new(); $d = [System.Collections.ArrayList]::new()} -Process{if($_.Mode[0] -eq 'd'){$d.Add($_)}else{$f.Add($_)}} -End{Write-Host "Directory: $($d.count), File: $($f.count)"} }
Directory: 4915, File: 50123
Days : 0
Hours : 0
Minutes : 0
Seconds : 6
Milliseconds : 736
Ticks : 67362805
TotalDays : 7.79662094907407E-05
TotalHours : 0.00187118902777778
TotalMinutes : 0.112271341666667
TotalSeconds : 6.7362805
TotalMilliseconds : 6736.2805
なるほどなぁ
Directory: 4915, File: 50123
Days : 0
Hours : 0
Minutes : 0
Seconds : 5
Milliseconds : 645
Ticks : 56455459
TotalDays : 6.53419664351852E-05
TotalHours : 0.00156820719444444
TotalMinutes : 0.0940924316666667
TotalSeconds : 5.6455459
TotalMilliseconds : 5645.5459
PS C:\> Measure-Command { ls -Rec c:\Qt |ForEach-Object -Begin{$f = [System.Collections.ArrayList]::new(); $d = [System.Collections.ArrayList]::new()} -Process{if($_.Mode[0] -eq 'd'){$d.Add($_)}else{$f.Add($_)}} -End{Write-Host "Directory: $($d.count), File: $($f.count)"} }
Directory: 4915, File: 50123
Days : 0
Hours : 0
Minutes : 0
Seconds : 6
Milliseconds : 736
Ticks : 67362805
TotalDays : 7.79662094907407E-05
TotalHours : 0.00187118902777778
TotalMinutes : 0.112271341666667
TotalSeconds : 6.7362805
TotalMilliseconds : 6736.2805
なるほどなぁ
676デフォルトの名無しさん
2021/11/02(火) 21:31:08.82ID:k6b2gzuo PowerShellのForeach-Objectは一体何をしているのか
https://tech.guitarrapc.com/entry/2013/03/09/210303
https://tech.guitarrapc.com/entry/2013/03/09/210303
677デフォルトの名無しさん
2021/11/02(火) 21:53:02.25ID:0RYZAUU5 凄い懐かしい書き込みを見てしまった、書いた記憶ないよ
678デフォルトの名無しさん
2021/11/02(火) 22:32:36.74ID:BCReJeM/ え?もしかして???
実践ガイドブック買ってましたよ!
会社の備品でですが
実践ガイドブック買ってましたよ!
会社の備品でですが
679デフォルトの名無しさん
2021/11/03(水) 00:42:33.36ID:5s18AOu6 2022/1からの電子帳簿保存法改正の関係で、フォルダに格納した電子取引のファイルを
検索できるようにするためにWindowsPowerShellを使ってみようかと思っています。
ひとまずファイルの命名規則を社員に周知して、それを
Get-ChildItem -Name -Recurse | Where-Object { $_ -match ・・・
で正規表現で検索できそうなのは分かったのですが、これをサーバーの上位階層で使うと
それなりに時間がかかりそうです。
そこで以下質問なのですが、
電子取引ファイルを格納するフォルダにも新たに命名規則を適用したうえで
Get-ChildItem * | Where-Object { $_.PSIsContainer }
のようにフォルダ名のみを検索するコマンドを使って、
「サーバー上位階層以下の全てのフォルダから、
複数のAAAで始まるフォルダ名のフォルダの中のみを対象に
BBBで始まる電子取引ファイルのみを表示する」
というコマンドは可能でしょうか?
検索できるようにするためにWindowsPowerShellを使ってみようかと思っています。
ひとまずファイルの命名規則を社員に周知して、それを
Get-ChildItem -Name -Recurse | Where-Object { $_ -match ・・・
で正規表現で検索できそうなのは分かったのですが、これをサーバーの上位階層で使うと
それなりに時間がかかりそうです。
そこで以下質問なのですが、
電子取引ファイルを格納するフォルダにも新たに命名規則を適用したうえで
Get-ChildItem * | Where-Object { $_.PSIsContainer }
のようにフォルダ名のみを検索するコマンドを使って、
「サーバー上位階層以下の全てのフォルダから、
複数のAAAで始まるフォルダ名のフォルダの中のみを対象に
BBBで始まる電子取引ファイルのみを表示する」
というコマンドは可能でしょうか?
680デフォルトの名無しさん
2021/11/03(水) 03:45:40.30ID:RbvYqhXw こんな感じですかね
$dir_list = Get-ChildItem -rec -Directory -Filter 'AAA*'
foreach($d in $dir_list) { Get-ChildItem "$($d.FullName)\BBB*" -File }
$dir_list = Get-ChildItem -rec -Directory -Filter 'AAA*'
foreach($d in $dir_list) { Get-ChildItem "$($d.FullName)\BBB*" -File }
681デフォルトの名無しさん
2021/11/03(水) 03:55:12.55ID:XfZZ+0lv Ruby で作った
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file は抽出されない
src_dir = "C:/Users/Owner/Documents/Ruby/test"
glob_pattern = src_dir + "/**/*" # 以下のすべてのファイル
# 指定する語句
dir_substr = "/test1"
file_substr = "test"
target_files = Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.select { |full_path|
# フルパスのフォルダ名だけを取り出して、その先頭から、src_dirの部分を削除する。
# つまり、src_dir見た、相対パスのフォルダパスだけにする。
# そこから、include?で、指定の語句で始まる、フォルダ名を含むものだけを抽出する
File.dirname( full_path ).delete_prefix( src_dir ).
include?( dir_substr )
}
.select { |full_path|
# ファイル名だけを取り出して、指定の語句で始まる、ファイル名を含むものだけを抽出する
File.basename( full_path ).start_with?( file_substr )
}
puts target_files
出力
C:/Users/Owner/Documents/Ruby/test/csv/test10/test10.rb
C:/Users/Owner/Documents/Ruby/test/test141/test.ini
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file は抽出されない
src_dir = "C:/Users/Owner/Documents/Ruby/test"
glob_pattern = src_dir + "/**/*" # 以下のすべてのファイル
# 指定する語句
dir_substr = "/test1"
file_substr = "test"
target_files = Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.select { |full_path|
# フルパスのフォルダ名だけを取り出して、その先頭から、src_dirの部分を削除する。
# つまり、src_dir見た、相対パスのフォルダパスだけにする。
# そこから、include?で、指定の語句で始まる、フォルダ名を含むものだけを抽出する
File.dirname( full_path ).delete_prefix( src_dir ).
include?( dir_substr )
}
.select { |full_path|
# ファイル名だけを取り出して、指定の語句で始まる、ファイル名を含むものだけを抽出する
File.basename( full_path ).start_with?( file_substr )
}
puts target_files
出力
C:/Users/Owner/Documents/Ruby/test/csv/test10/test10.rb
C:/Users/Owner/Documents/Ruby/test/test141/test.ini
682681
2021/11/03(水) 09:08:04.21ID:XfZZ+0lv >>681
基準とするフォルダが、C:/Users/Owner/Documents/Ruby/test の時、
出力
C:/Users/Owner/Documents/Ruby/test/csv/test10/test10.rb
C:/Users/Owner/Documents/Ruby/test/test141/test.ini
は、
基準フォルダのフルパス/csv/test10/test10.rb
基準フォルダのフルパス/test141/test.ini
そこで、フォルダ名に含まれる語句が、test1 の場合、
基準フォルダの直下・子だけでなく、/csv/test10/test10.rb など、
子孫のフォルダ名に含まれる場合も抽出している
基準とするフォルダが、C:/Users/Owner/Documents/Ruby/test の時、
出力
C:/Users/Owner/Documents/Ruby/test/csv/test10/test10.rb
C:/Users/Owner/Documents/Ruby/test/test141/test.ini
は、
基準フォルダのフルパス/csv/test10/test10.rb
基準フォルダのフルパス/test141/test.ini
そこで、フォルダ名に含まれる語句が、test1 の場合、
基準フォルダの直下・子だけでなく、/csv/test10/test10.rb など、
子孫のフォルダ名に含まれる場合も抽出している
683デフォルトの名無しさん
2021/11/03(水) 09:42:35.20ID:ZuZHjCnO これはRuby信者を装ったRubyアンチ
684デフォルトの名無しさん
2021/11/03(水) 12:57:54.90ID:iUEuUW7J ファイルシステム走査するのが遅いのは仕方ないからCSVでパスと検索フラグ保持するのがよさそう
685デフォルトの名無しさん
2021/11/03(水) 13:30:44.29ID:Xpnui0Lt ローカルドライブの話ならWindows Searchサービスの機能って使えないの
あれ何なの
あれ何なの
686デフォルトの名無しさん
2021/11/03(水) 14:28:09.82ID:S9aFy+Xx ゴミ
687デフォルトの名無しさん
2021/11/03(水) 14:45:47.88ID:Sv+q3Yur688デフォルトの名無しさん
2021/11/03(水) 14:46:11.73ID:RbvYqhXw 検索出来ればよいだけで、サーバーがWindowsなら、Everything使ってもいいんじゃないでしょうか
689デフォルトの名無しさん
2021/11/03(水) 14:47:13.93ID:NXjfZMEM インデックス貼ればいいんでは。知らんけど。
690デフォルトの名無しさん
2021/11/03(水) 14:48:03.76ID:RbvYqhXw691デフォルトの名無しさん
2021/11/03(水) 14:54:32.83ID:RbvYqhXw ファイル名検索で十分そうなんで、全文検索の例は違うかと
692デフォルトの名無しさん
2021/11/03(水) 15:12:50.54ID:A+jxlAHC まずは目標性能を提示した上で実測するところからじゃろ
693デフォルトの名無しさん
2021/11/03(水) 15:25:21.20ID:RbvYqhXw 680で試してもらって、もっと速度が必要ならEverythingを検討するのがよいと思います
694601
2021/11/03(水) 16:05:48.67ID:5s18AOu6 ありがとうございます。
PGかじっただけの事務方でWindowsPowerShellも5日くらい前から
仕事の合間に調べ始めた初心者なので>>680の中身もパッと見よくわかりませんが
明日にでも調べながら試してみます。
Rubyは名前しか知らないのでごめんなさい。
上手くいかないようならEverythingというのを試してみます。
PGかじっただけの事務方でWindowsPowerShellも5日くらい前から
仕事の合間に調べ始めた初心者なので>>680の中身もパッと見よくわかりませんが
明日にでも調べながら試してみます。
Rubyは名前しか知らないのでごめんなさい。
上手くいかないようならEverythingというのを試してみます。
695679
2021/11/03(水) 16:06:34.89ID:5s18AOu6 ↑なぜか名前が601になってました
696デフォルトの名無しさん
2021/11/03(水) 20:50:39.41ID:RbvYqhXw ここら辺が参考になると思います
https://docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-string-substitutions?view=powershell-5.1
https://docs.microsoft.com/en-us/dotnet/api/system.io.directoryinfo?view=net-5.0&viewFallbackFrom=net-4.8#properties
https://docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-string-substitutions?view=powershell-5.1
https://docs.microsoft.com/en-us/dotnet/api/system.io.directoryinfo?view=net-5.0&viewFallbackFrom=net-4.8#properties
698デフォルトの名無しさん
2021/11/05(金) 03:47:54.25ID:UB8UVAT8 >>673
実は配列にもドット演算子が定義されていて、こういう書き方も出来る
処理も速く、書きやすいので記述量のコスパがいい
配列.要素のプロパティ名 → 要素のプロパティ名配列
Measure-Command { (ls -Recurse c:\Qt).fullname > $null} }
実は配列にもドット演算子が定義されていて、こういう書き方も出来る
処理も速く、書きやすいので記述量のコスパがいい
配列.要素のプロパティ名 → 要素のプロパティ名配列
Measure-Command { (ls -Recurse c:\Qt).fullname > $null} }
699デフォルトの名無しさん
2021/11/05(金) 04:18:51.55ID:UB8UVAT8 >>679
自分もファイル検索するスクリプト作ってるが、
速度は Where-Object と -match がボトルネックになってた
PSは特定の演算子の左オペランドを配列にすることでフィルタになるんだが、
これは処理が速いので置き換えた方がいい
配列 | Where-Object{ if($_ -match "正規表現"){$_} }
は、
配列 -match "正規表現"
で置き換えられる。
ただしパイプ処理ではなくなるので使用メモリは増える。
自分もファイル検索するスクリプト作ってるが、
速度は Where-Object と -match がボトルネックになってた
PSは特定の演算子の左オペランドを配列にすることでフィルタになるんだが、
これは処理が速いので置き換えた方がいい
配列 | Where-Object{ if($_ -match "正規表現"){$_} }
は、
配列 -match "正規表現"
で置き換えられる。
ただしパイプ処理ではなくなるので使用メモリは増える。
700デフォルトの名無しさん
2021/11/05(金) 04:57:04.64ID:booIrJ0X ワイルドカードで事足りるならget-childitemのfilterオプションが早いんじゃない?
701デフォルトの名無しさん
2021/11/05(金) 05:09:54.73ID:UB8UVAT8 確かに
702デフォルトの名無しさん
2021/11/07(日) 20:09:58.83ID:xhLNYeNd シェルスクリプト板にも書いてしまったんやが
スクリプト内で関数をサブプロセスで動かして出力も表示させる書き方ってどうすればええんや?
shでの func & 的なことをしたい
スクリプト内で関数をサブプロセスで動かして出力も表示させる書き方ってどうすればええんや?
shでの func & 的なことをしたい
703679
2021/11/07(日) 21:31:53.47ID:eC/ipH+D 脱線話になってしまうんですが、そもそもの国税庁の通達らしきものが全く流れてきていない中で
営業チラシとかからこの電子帳簿保存法の話を知って自分で調べている次第で…
で、調べてみると
https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/pdf/0021005-038.pdf
の2ページ目、検索要件として
「@取引年月日・取引先・金額で検索できること」
「A日付または金額の指定範囲検索」
「B2つ以上の任意の項目による検索」
とあり、そうなるとファイル名の命名規則に上記3項目を組み込み、
正規表現で検索する必要があるかな、という結論になったわけですが…
どうもこの2ページ目の※1に該当してABが不要になる可能性があり、
さらには
https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/pdf/0021006-031_06.pdf
の問12によると、そもそも既存のファイル管理だけしていれば検索機能要らないんじゃ…
というところに行きついたのが先週金曜の夜になります。
税理士に聞いても持ってる情報はこちらと大差なく、どう転んでいくか分からない状況 (;´д`)
営業チラシとかからこの電子帳簿保存法の話を知って自分で調べている次第で…
で、調べてみると
https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/pdf/0021005-038.pdf
の2ページ目、検索要件として
「@取引年月日・取引先・金額で検索できること」
「A日付または金額の指定範囲検索」
「B2つ以上の任意の項目による検索」
とあり、そうなるとファイル名の命名規則に上記3項目を組み込み、
正規表現で検索する必要があるかな、という結論になったわけですが…
どうもこの2ページ目の※1に該当してABが不要になる可能性があり、
さらには
https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/pdf/0021006-031_06.pdf
の問12によると、そもそも既存のファイル管理だけしていれば検索機能要らないんじゃ…
というところに行きついたのが先週金曜の夜になります。
税理士に聞いても持ってる情報はこちらと大差なく、どう転んでいくか分からない状況 (;´д`)
704デフォルトの名無しさん
2021/11/08(月) 00:13:47.57ID:bmKVlrQF 大変ですね。。。
税務署に問い合わせれば教えてくれるもんなんでしょうか?
税務署に問い合わせれば教えてくれるもんなんでしょうか?
705デフォルトの名無しさん
2021/11/08(月) 00:23:43.73ID:bmKVlrQF >>702
バックグラウンドで動かすのはstart-jobだけど、receive-jobしないといけないから、shと同じ雰囲気で動かすのは難しいんじゃないかな?
バックグラウンドで動かすのはstart-jobだけど、receive-jobしないといけないから、shと同じ雰囲気で動かすのは難しいんじゃないかな?
706デフォルトの名無しさん
2021/11/08(月) 00:48:09.32ID:j5xrb+V9707デフォルトの名無しさん
2021/11/08(月) 01:18:37.98ID:bmKVlrQF 標準出力じゃなくてファイルに出力するなら、何も考えなくてよくて簡単なんですけどねぇ
708デフォルトの名無しさん
2021/11/08(月) 14:40:09.96ID:ATC6W+sR (echo foo &) | Receive-Job -Wait
709デフォルトの名無しさん
2021/11/08(月) 15:36:36.21ID:J2dLpPYS 配列にしてファイル名取得してコピーする動きさせたです
以下のようなイメージを浮かべていますが上手くいかなくてどう書いたらいいか有識者の方教えてください
$aaa[0]=〜.txt
$aaa[1]=〜.log
$aaa[2]=〜.sh
foreach($i in 0..2){
copy-item -force aaa[$i] $コピー先
}
$?で戻り値判定
以下のようなイメージを浮かべていますが上手くいかなくてどう書いたらいいか有識者の方教えてください
$aaa[0]=〜.txt
$aaa[1]=〜.log
$aaa[2]=〜.sh
foreach($i in 0..2){
copy-item -force aaa[$i] $コピー先
}
$?で戻り値判定
710デフォルトの名無しさん
2021/11/08(月) 15:58:10.99ID:J2dLpPYS 自己解決したかも
下記でうまく動きましたわ頭悪い書き方かもしれないが
$aaa=@(ファイルパス,ファイルパス,ファイルパス)
$aaa | foreach-object { copy-item -force $aaa コピー先}
下記でうまく動きましたわ頭悪い書き方かもしれないが
$aaa=@(ファイルパス,ファイルパス,ファイルパス)
$aaa | foreach-object { copy-item -force $aaa コピー先}
711デフォルトの名無しさん
2021/11/08(月) 17:02:26.88ID:UsmHmtDw パスの引数はliteralpath使った方がいいよ
普通のpathだとワイルドカードが有効になって面倒なことになる
普通のpathだとワイルドカードが有効になって面倒なことになる
712デフォルトの名無しさん
2021/11/08(月) 17:32:28.75ID:bmKVlrQF literalpathを使った方が安全安心というのはその通りとして
戻り値チェックがなくなってるけど,それでよいのならこれでもいいんじゃないかと
foreach($i in ファイルパス,ファイルパス,ファイルパス){
copy-item -force $i コピー先
}
戻り値チェックがなくなってるけど,それでよいのならこれでもいいんじゃないかと
foreach($i in ファイルパス,ファイルパス,ファイルパス){
copy-item -force $i コピー先
}
713デフォルトの名無しさん
2021/11/08(月) 17:45:54.79ID:J2dLpPYS714デフォルトの名無しさん
2021/11/08(月) 19:18:19.58ID:bmKVlrQF []*なんかはファイル名としては普通に使えるけどpowershellではワイルドカードとして扱われるんでliteralpath使うとよいです
715デフォルトの名無しさん
2021/11/08(月) 20:03:51.47ID:Rlzdbs4L さすがに * は使えないよ
716デフォルトの名無しさん
2021/11/08(月) 21:40:49.31ID:Umd1M9Ks *は使えないけど*は使える
<>は使えないけど<>は使える
つまり
<>は使えないけど<>は使える
つまり
717デフォルトの名無しさん
2021/11/08(月) 22:58:01.79ID:bmKVlrQF718デフォルトの名無しさん
2021/11/09(火) 09:20:55.86ID:6HgHkORr719デフォルトの名無しさん
2021/11/09(火) 18:10:17.23ID:m+qVFCof720デフォルトの名無しさん
2021/11/09(火) 18:14:06.31ID:m+qVFCof721719
2021/11/09(火) 18:25:01.42ID:m+qVFCof CSV なら、
VSCode の拡張機能・Rainbow CSV で、
RainBow Query Language(RBQL)とか、
GrapeCity のExcel Viewer などで、フィルター出来るのでは?
VSCode の拡張機能・Rainbow CSV で、
RainBow Query Language(RBQL)とか、
GrapeCity のExcel Viewer などで、フィルター出来るのでは?
722デフォルトの名無しさん
2021/11/10(水) 23:58:41.48ID:s7s2g3pi Objectの配列ってあるやん?
例えばGet-childitemで返ってくるような奴。
こいつのあるプロパティの値で検索かけて、ヒットするオブジェクトを返してくれるコマンドレットってある?
例えばGet-childitemで返ってくるような奴。
こいつのあるプロパティの値で検索かけて、ヒットするオブジェクトを返してくれるコマンドレットってある?
723デフォルトの名無しさん
2021/11/11(木) 07:34:27.20ID:rdUNi5nM Where-Object
てかそれ知らなくても
Get-Childitem | %{ if($_.プロパティ -eq 'xxxx') $_ }
ってやればいいだけ
てかそれ知らなくても
Get-Childitem | %{ if($_.プロパティ -eq 'xxxx') $_ }
ってやればいいだけ
724デフォルトの名無しさん
2021/11/11(木) 08:50:00.49ID:UywKMbXB パイプラインからオブジェクトを削除する (Where-Object)
https://docs.microsoft.com/ja-jp/powershell/scripting/samples/removing-objects-from-the-pipeline--where-object-
PowerShell には、Where-Object コマンドレットがあります。これを使用すると、パイプラインの各オブジェクトをテストし、特定のテスト条件を満たしている場合にのみ、オブジェクトをパイプラインに沿って渡すことができます。 テストを通過しなかったオブジェクトは、パイプラインから削除されます。 テスト条件は、FilterScript パラメーターの値として指定します。
https://docs.microsoft.com/ja-jp/powershell/scripting/samples/removing-objects-from-the-pipeline--where-object-
PowerShell には、Where-Object コマンドレットがあります。これを使用すると、パイプラインの各オブジェクトをテストし、特定のテスト条件を満たしている場合にのみ、オブジェクトをパイプラインに沿って渡すことができます。 テストを通過しなかったオブジェクトは、パイプラインから削除されます。 テスト条件は、FilterScript パラメーターの値として指定します。
725デフォルトの名無しさん
2021/11/11(木) 09:52:00.76ID:73eTlo3I >>723
サンクス。
サンクス。
726デフォルトの名無しさん
2021/11/11(木) 09:52:38.35ID:73eTlo3I >>724
サンクス。
サンクス。
727デフォルトの名無しさん
2021/11/11(木) 09:58:56.40ID:GzUsv1SA プロパティの名前で検索するならこんな方法もありますよ
https://stackoverflow.com/questions/26997511/how-can-you-test-if-an-object-has-a-specific-property
https://stackoverflow.com/questions/26997511/how-can-you-test-if-an-object-has-a-specific-property
728デフォルトの名無しさん
2021/11/11(木) 13:58:48.12ID:AMbWD73B 質問です。
連想配列Aがあって、このAのkeyを要素とする配列Bがあります。
この配列Bの各要素の値のkeyを連想配列Aで対応するValueに全て置き換えたいのですがどうすれば良いでしょう?
新たに配列Cを作ってそこに置き換えた値を代入でもかまいません。
シンプルに出来れば良いのですが。
連想配列Aがあって、このAのkeyを要素とする配列Bがあります。
この配列Bの各要素の値のkeyを連想配列Aで対応するValueに全て置き換えたいのですがどうすれば良いでしょう?
新たに配列Cを作ってそこに置き換えた値を代入でもかまいません。
シンプルに出来れば良いのですが。
729728
2021/11/11(木) 14:20:34.82ID:7Xqdpo5k 重要な事書き忘れてました。
配列Bの要素にマッチする連想配列Aのkeyが存在しなければ、その配列の要素自体削除したい。
配列Bの要素にマッチする連想配列Aのkeyが存在しなければ、その配列の要素自体削除したい。
730デフォルトの名無しさん
2021/11/11(木) 14:30:48.53ID:GzUsv1SA 新規に$cを作ってよいのなら
PS C:\> $a = @{ a=1; b=2; c=3}
PS C:\> $b = @('a','b','c','d')
PS C:\> $c = @()
PS C:\> foreach ( $k in $b ) {
>> if ( $k -in $a.keys ) {
>> $c += $a[$k]
>> }
>> }
PS C:\> $c
1
2
3
PS C:\>
ではどうでしょう?
PS C:\> $a = @{ a=1; b=2; c=3}
PS C:\> $b = @('a','b','c','d')
PS C:\> $c = @()
PS C:\> foreach ( $k in $b ) {
>> if ( $k -in $a.keys ) {
>> $c += $a[$k]
>> }
>> }
PS C:\> $c
1
2
3
PS C:\>
ではどうでしょう?
731デフォルトの名無しさん
2021/11/11(木) 16:10:35.43ID:VwMpkHW9 >> if ( $k -in $a.keys ) {
>> $c += $a[$k]
keysで文字列の配列を作って更にそれを[]で検索して値を得る
って凄く無駄な気がするんだけど
KeyValuePairってPowerSellで使えないんだっけ
>> $c += $a[$k]
keysで文字列の配列を作って更にそれを[]で検索して値を得る
って凄く無駄な気がするんだけど
KeyValuePairってPowerSellで使えないんだっけ
732デフォルトの名無しさん
2021/11/11(木) 17:00:05.70ID:GzUsv1SA getenumeratorでとれますね
733デフォルトの名無しさん
2021/11/11(木) 17:08:23.09ID:GzUsv1SA valueが$nullではない,もしくは,valueが$nullの場合は$cに含めなくてもよいなら
ifの条件を( $null -ne $a[$k] )にできるね
$aの要素がたくさんあるならgetenumeratorでforeachを回して
$bから見つかった要素を削除するのがよいのかな?
ifの条件を( $null -ne $a[$k] )にできるね
$aの要素がたくさんあるならgetenumeratorでforeachを回して
$bから見つかった要素を削除するのがよいのかな?
734デフォルトの名無しさん
2021/11/11(木) 22:45:45.51ID:opowWSFy $a = @{a=1;b=2;c=3}
$b = @("a", "z", "c")
$c = $b | %{ $a[$_] }
これで出来てる?
$b = @("a", "z", "c")
$c = $b | %{ $a[$_] }
これで出来てる?
735デフォルトの名無しさん
2021/11/12(金) 01:15:10.90ID:M7lyd7nj Ruby なら、配列同士の積を使える
hash = { "a"=>1, "b"=>2, "c"=>3 }
p hash.keys #=> ["a", "b", "c"]
p hash.values #=> [1, 2, 3]
ary_1 = [ "c", "x", "b" ]
p ary_2 = ary_1 & hash.keys #=> ["c", "b"]
hash = { "a"=>1, "b"=>2, "c"=>3 }
p hash.keys #=> ["a", "b", "c"]
p hash.values #=> [1, 2, 3]
ary_1 = [ "c", "x", "b" ]
p ary_2 = ary_1 & hash.keys #=> ["c", "b"]
736デフォルトの名無しさん
2021/11/12(金) 04:44:44.57ID:ZAoNN4kS GetEnumerator使ったらこんな感じ
$a.GetEnumerator() |? {$_.key -in $b} | select -exp value
$a.GetEnumerator() |? {$_.key -in $b} | select -exp value
737デフォルトの名無しさん
2021/11/12(金) 04:50:17.45ID:ZAoNN4kS これでも
$a.GetEnumerator() | &{process{if ($_.key -in $b) {$_.value}}}
$a.GetEnumerator() | &{process{if ($_.key -in $b) {$_.value}}}
738デフォルトの名無しさん
2021/11/12(金) 16:12:33.21ID:xE6WDQNQ やたら凝った回答が多いけど、素直に>>734でいいと思うんだが・・・
739デフォルトの名無しさん
2021/11/12(金) 19:04:08.47ID:a3j0d+bF だめじゃね?
$c[1] に $null が入るよ
仕様は
> 配列Bの要素にマッチする連想配列Aのkeyが存在しなければ、その配列の要素自体削除したい。
だし
$c[1] に $null が入るよ
仕様は
> 配列Bの要素にマッチする連想配列Aのkeyが存在しなければ、その配列の要素自体削除したい。
だし
740デフォルトの名無しさん
2021/11/12(金) 19:19:41.08ID:0Z8rlyMb $a.GetEnumerator() |?{$_.key -in $b} |% valueか
GetEnumeratorってすぐ忘れそうだけど補完で出てくるからいっか
GetEnumeratorってすぐ忘れそうだけど補完で出てくるからいっか
741デフォルトの名無しさん
2021/11/12(金) 19:38:43.32ID:ZAoNN4kS おー、Foreach-Objectの短縮記法か
オシャレっすね
そう書けるのは知識として知ってるんだけど、全然出てきませんわ
Select-Object -ExpandProperty使っちゃう
オシャレっすね
そう書けるのは知識として知ってるんだけど、全然出てきませんわ
Select-Object -ExpandProperty使っちゃう
742デフォルトの名無しさん
2021/11/12(金) 19:54:08.84ID:a3j0d+bF > valueが$nullの場合は$cに含めなくてもよい
が許されるなら
$a[$b] -ne $null
でいけそうだけどあとで何やってるのかわからなるなw
が許されるなら
$a[$b] -ne $null
でいけそうだけどあとで何やってるのかわからなるなw
743デフォルトの名無しさん
2021/11/12(金) 22:25:34.60ID:bmw0W+Zd744デフォルトの名無しさん
2021/11/12(金) 22:36:54.20ID:bmw0W+Zd >>740
というか$a.GetEnumerator()から順序が考慮されないから正しい実装としては下記と思われる
$c = $b | ?{$a.contains($_)} | %{ $a[$_] }
というか$a.GetEnumerator()から順序が考慮されないから正しい実装としては下記と思われる
$c = $b | ?{$a.contains($_)} | %{ $a[$_] }
745デフォルトの名無しさん
2021/11/12(金) 23:08:41.99ID:ZAoNN4kS 730に戻ったね
746デフォルトの名無しさん
2021/11/13(土) 00:03:49.31ID:IngrJLwZ >>739
確認したから嘘だろと思ったら本当に入ってた・・・
表示されないのか
じゃあ途中でキーの有無を確認すればいいから、
$b | ?{ $a.ContainsKey($_) } | %{ $a[$_] }
でどうだろう。
「aのキーにあれば出力」をそのまま描いた感じ
確認したから嘘だろと思ったら本当に入ってた・・・
表示されないのか
じゃあ途中でキーの有無を確認すればいいから、
$b | ?{ $a.ContainsKey($_) } | %{ $a[$_] }
でどうだろう。
「aのキーにあれば出力」をそのまま描いた感じ
747デフォルトの名無しさん
2021/11/13(土) 00:04:11.42ID:IngrJLwZ >>744でもう書かれてた
748デフォルトの名無しさん
2021/11/13(土) 07:10:49.19ID:ugM6VKHw 順序気にするなら[ordered]を付ければいい
$a = [ordered]@{a=1;b=2;c=3}
$a = [ordered]@{a=1;b=2;c=3}
749デフォルトの名無しさん
2021/11/13(土) 12:11:25.74ID:DOOK67wF 質問よく見てないからかもしれんけど、$aの順序じゃなくて$bの順序を保証しないとだから意味ない
750デフォルトの名無しさん
2021/11/13(土) 13:11:51.91ID:Z2vNsa/D 最初の質問も曖昧な点多くてグダグダになってる感
こんなんでいいか?
$a=@{a=1;b=2;c=3}
$b=@("a","z","c")
$c=[ordered]@{}
$b|? {$_ -in $a.keys}|% {$c[$_]=$a[$_]}
こんなんでいいか?
$a=@{a=1;b=2;c=3}
$b=@("a","z","c")
$c=[ordered]@{}
$b|? {$_ -in $a.keys}|% {$c[$_]=$a[$_]}
751デフォルトの名無しさん
2021/11/13(土) 13:40:06.49ID:P6Qu4JtN a 暗号解読用テーブル
b 暗号化された本文
て感じ?
b 暗号化された本文
て感じ?
752デフォルトの名無しさん
2021/11/13(土) 14:05:31.30ID:DncAOgGY >>750
元の$bと同じ単純配列が欲しいって書いてあるのにわざわざ連想配列作るとかグダグタになってるのはお前だけだろw
元の$bと同じ単純配列が欲しいって書いてあるのにわざわざ連想配列作るとかグダグタになってるのはお前だけだろw
753デフォルトの名無しさん
2021/11/15(月) 09:18:13.04ID:xJpmlO5M754デフォルトの名無しさん
2021/11/15(月) 09:24:47.63ID:xJpmlO5M すぐ上に同じような事書いてたごめん>>742
valueが$nullな病的なケースまでは扱いたくないから知らん
valueが$nullな病的なケースまでは扱いたくないから知らん
755デフォルトの名無しさん
2021/11/16(火) 08:21:35.56ID:lP4cPAw+ ($b | %{ $a[$_] }) -ne $null が好きだな
-ne はこのための仕様なので合目的的
わかりにくさが不安ならコメントを添えてもいい
containsとアクセサでハッシュテーブルを2回ずつ検索するより好き
-ne はこのための仕様なので合目的的
わかりにくさが不安ならコメントを添えてもいい
containsとアクセサでハッシュテーブルを2回ずつ検索するより好き
756デフォルトの名無しさん
2021/11/17(水) 16:30:42.17ID:DmPYFyCr >>755
結果は同じだけど定義通りじゃないのがな
存在しないキーの値がたまたまnullだった、フィルタしたら偶然求めたい値と一致したに過ぎない
既に言われてるけどValueがnullだと食い違う
やはりcontainsKeyが1番だと思う
パイプが連続してる方がシェルっぽくて見た目もかっこいいし
結果は同じだけど定義通りじゃないのがな
存在しないキーの値がたまたまnullだった、フィルタしたら偶然求めたい値と一致したに過ぎない
既に言われてるけどValueがnullだと食い違う
やはりcontainsKeyが1番だと思う
パイプが連続してる方がシェルっぽくて見た目もかっこいいし
757デフォルトの名無しさん
2021/11/17(水) 17:05:17.34ID:npYvnyKq ああその違いがあったのか
でも発注者が本当に求めている条件がどっちなのかはかなり怪しい事例だと思う(言い訳)
でも発注者が本当に求めている条件がどっちなのかはかなり怪しい事例だと思う(言い訳)
758デフォルトの名無しさん
2021/11/17(水) 18:52:13.63ID:80lHh4r4759デフォルトの名無しさん
2021/11/17(水) 20:15:51.70ID:ZRqEMafB せめてベースの.NETと同じ方針にしてくり
760デフォルトの名無しさん
2021/11/20(土) 14:03:27.82ID:mhCLQeY0 copy-itemでフォルダコピーする際、
サブディレクトリにあるフォルダ名やファイル名に特定の文字列 @("*hoge*","*huga*")
が含まれている場合除外したいのですが、
一通りググった方法を試しても上手くいきません。
get-childitemの有無等幾つか方法はあるみたいですが、どうやっても除外ができない。
上手くいく方法をご存知でしたら教えて頂けませんか。
サブディレクトリにあるフォルダ名やファイル名に特定の文字列 @("*hoge*","*huga*")
が含まれている場合除外したいのですが、
一通りググった方法を試しても上手くいきません。
get-childitemの有無等幾つか方法はあるみたいですが、どうやっても除外ができない。
上手くいく方法をご存知でしたら教えて頂けませんか。
761デフォルトの名無しさん
2021/11/20(土) 14:19:09.90ID:brX6qPUI robocopyを使う
762デフォルトの名無しさん
2021/11/20(土) 14:29:08.15ID:foKEgqXu >>760
Get-ChildItemでファイル列挙して正規表現かなんかでコピー対象のファイルなのか一個ずつ判定して一個ずつCopy-Itemすりゃいいんじゃないの
Get-ChildItemでファイル列挙して正規表現かなんかでコピー対象のファイルなのか一個ずつ判定して一個ずつCopy-Itemすりゃいいんじゃないの
763デフォルトの名無しさん
2021/11/20(土) 14:39:59.37ID:ebQnhsZ6 除外より特定のに引っ掛ける方が楽じゃないか?
764デフォルトの名無しさん
2021/11/20(土) 16:27:45.77ID:7hjyIAPL765sage
2021/11/20(土) 17:01:16.86ID:KK9A6rpv >>760
以下みたいな感じでGet-ChildItemの出力にWhere-Objectに-notlikeでフィルタしてCopy-itemすればいい
-Recurse付けたがサブディレクトリ含めなければ外せばいい
Get-ChildItemとWhere-Objectを組み合わせてググれば他の活用も見つかるはず
Get-ChildItem -Recurse|
Where-Object {$_.Name -notlike "*foo*" -and $_.Name -notlike "*bar*"} |
ForEach-Object {Copy-Item $_.Fullname -Destination "出力先フォルダ" -Recurse}
以下みたいな感じでGet-ChildItemの出力にWhere-Objectに-notlikeでフィルタしてCopy-itemすればいい
-Recurse付けたがサブディレクトリ含めなければ外せばいい
Get-ChildItemとWhere-Objectを組み合わせてググれば他の活用も見つかるはず
Get-ChildItem -Recurse|
Where-Object {$_.Name -notlike "*foo*" -and $_.Name -notlike "*bar*"} |
ForEach-Object {Copy-Item $_.Fullname -Destination "出力先フォルダ" -Recurse}
766sage
2021/11/20(土) 17:24:30.70ID:KK9A6rpv767デフォルトの名無しさん
2021/11/20(土) 17:29:07.00ID:mhCLQeY0 皆様ありがとうございます。
頂いたアドバイスを受けて、正規表現を使ったりして試しているところです。
解決したら改めて報告します。
ちなみに要件としては、
「起点のフォルダを再起的に全てコピー(同じ階層構造)」となります。
頂いたアドバイスを受けて、正規表現を使ったりして試しているところです。
解決したら改めて報告します。
ちなみに要件としては、
「起点のフォルダを再起的に全てコピー(同じ階層構造)」となります。
768デフォルトの名無しさん
2021/11/20(土) 17:35:03.97ID:mhCLQeY0 すみません、「起点のフォルダ以下を再起的に」ですね。
769デフォルトの名無しさん
2021/11/20(土) 18:08:26.07ID:tZNHbLNh >「起点のフォルダを再起的に全てコピー(同じ階層構造)」
パイプを繋げていくとこの点が不安になってくる。
コピー元のフルパスを正規表現で整形すれば良いだけだけど、何だかなって気分になる。
powershellが管理用途を目指したなら何でrobocopy相当の機能を提供しなかったんだろうか。
パイプを繋げていくとこの点が不安になってくる。
コピー元のフルパスを正規表現で整形すれば良いだけだけど、何だかなって気分になる。
powershellが管理用途を目指したなら何でrobocopy相当の機能を提供しなかったんだろうか。
770sage
2021/11/20(土) 18:22:44.14ID:KK9A6rpv 起点のパスからパイプつなげて階層コピーとかやろうとすると大変なのね
Get-ChildItemだと起点パスからの相対パスが出てこないからこんな汚いコードしか作れなかったわ
Push-Location "コピー元パス"
Get-ChildItem -Recurse|
Where-Object {$_.Name -notlike "*foo*"} |
Where-Object {$_.Name -notlike "*bar*"} |
ForEach-Object {Copy-Item $_.FullName -Destination ("コピー先パス"+(Resolve-Path $_.FullName -Relative))}
Get-ChildItemだと起点パスからの相対パスが出てこないからこんな汚いコードしか作れなかったわ
Push-Location "コピー元パス"
Get-ChildItem -Recurse|
Where-Object {$_.Name -notlike "*foo*"} |
Where-Object {$_.Name -notlike "*bar*"} |
ForEach-Object {Copy-Item $_.FullName -Destination ("コピー先パス"+(Resolve-Path $_.FullName -Relative))}
771デフォルトの名無しさん
2021/11/20(土) 19:23:56.73ID:ytLaGTl4 robocopyで十分ならrobocopy使うべき
772デフォルトの名無しさん
2021/11/20(土) 19:24:28.43ID:ytLaGTl4 マルチスレッドで速いし
773デフォルトの名無しさん
2021/11/20(土) 19:29:39.45ID:7hjyIAPL https://stackoverflow.com/questions/32101358/copy-all-files-and-folders-except-few-in-ruby
Ruby では、Dir.glob("**/*") で再帰的に、起点フォルダ以下のすべてのファイルを配列に入れて、
そこから、コピーしないファイルを削除する
そして、再帰的にコピーする
FileUtils.cp_r( 配列, destination_folder )
Ruby では、Dir.glob("**/*") で再帰的に、起点フォルダ以下のすべてのファイルを配列に入れて、
そこから、コピーしないファイルを削除する
そして、再帰的にコピーする
FileUtils.cp_r( 配列, destination_folder )
774デフォルトの名無しさん
2021/11/20(土) 21:10:31.67ID:ytLaGTl4 powershellでやるなら、一旦、まるっとコピーして、コピー先から不要なファイル消すのが簡単
775デフォルトの名無しさん
2021/11/20(土) 22:41:40.55ID:foKEgqXu 面白そうだから作ってみた
.NETクラス使ったら負けというポリシーの人には受け入れられないかもしれんが
$SrcPath #コピー元
$DstPath #コピー先
[System.IO.Directory]::EnumerateFiles($SrcPath, "*", [System.IO.SearchOption]::AllDirectories) |
Where-Object { $_ -notlike "*foo*" } |
Where-Object { $_ -notlike "*bar*"} |
Select-Object @{Name = "FPath"; Expression = {$_} }, @{Name = "RPath"; Expression = {$_.SubString($SrcPath.Length)}} |
ForEach-Object { `
[System.IO.Directory]::CreateDirectory(([System.IO.Path]::GetDirectoryName($DstPath + $_.RPath))) | Out-Null; `
Copy-Item $_.FPath -Destination ($DstPath + $_.RPath) `
}
.NETクラス使ったら負けというポリシーの人には受け入れられないかもしれんが
$SrcPath #コピー元
$DstPath #コピー先
[System.IO.Directory]::EnumerateFiles($SrcPath, "*", [System.IO.SearchOption]::AllDirectories) |
Where-Object { $_ -notlike "*foo*" } |
Where-Object { $_ -notlike "*bar*"} |
Select-Object @{Name = "FPath"; Expression = {$_} }, @{Name = "RPath"; Expression = {$_.SubString($SrcPath.Length)}} |
ForEach-Object { `
[System.IO.Directory]::CreateDirectory(([System.IO.Path]::GetDirectoryName($DstPath + $_.RPath))) | Out-Null; `
Copy-Item $_.FPath -Destination ($DstPath + $_.RPath) `
}
776デフォルトの名無しさん
2021/11/21(日) 09:11:58.65ID:mz7l6eLz777デフォルトの名無しさん
2021/11/21(日) 10:22:51.55ID:GghqNAbU .NETクラス使える俺スゲー君なんだろ
まあ $DstPath + $_.RPath なんて書いてるから中途半端な知識しかなさそうだけど
まあ $DstPath + $_.RPath なんて書いてるから中途半端な知識しかなさそうだけど
778デフォルトの名無しさん
2021/11/21(日) 13:09:01.33ID:03fh42bF >>777
Path.Combine使ってほしかったってこと?
Path.Combine使ってほしかったってこと?
779デフォルトの名無しさん
2021/11/21(日) 13:14:19.30ID:03fh42bF >>776
コピー先のフォルダーがあらかじめ作成されなくてもエラーにならないこと
コピー先のフォルダーがあらかじめ作成されなくてもエラーにならないこと
780デフォルトの名無しさん
2021/11/21(日) 14:06:02.04ID:/SaMuAE1 フォルダ名のファイルがあったらエラーになると思うけど
781デフォルトの名無しさん
2021/11/21(日) 14:12:17.11ID:03fh42bF >>780
それはエラーで正しい
それはエラーで正しい
782デフォルトの名無しさん
2021/11/21(日) 15:37:22.85ID:rt6j8p0A どうでもいいけど -notmatch 'foo|bar' でよくね
783デフォルトの名無しさん
2021/11/21(日) 23:12:49.29ID:ny8+2EkL 先日の質問者です。
下記コードで、想定通りの動作を確認しました。
事前に展開するディレクトリを作成する必要はありますが、
正規表現で抽出して、「Join-Path $DstPath $_.FullName.Substring($SrcPath.Length)」で
展開先ディレクトリに取得した要素を展開する感じです。
色々とアドバイス頂きありがとうございました。
---------------------------------------------------------------------------------
#出力先ディレクトリ
$SrcPath = 任意のディレクトリ
#出力先ディレクトリ(スクリプトの置き場 + 展開するディレクトリ)
$DstPath = Join-Path (Split-Path $MyInvocation.MyCommand.path) ("\test")
#抽出&コピー
Get-ChildItem -Recurse $SrcPath | ?{ $_.FullName -match "^(?!.*file)"} | `
Copy-Item -Destination {Join-Path $DstPath $_.FullName.Substring($SrcPath.Length)}
下記コードで、想定通りの動作を確認しました。
事前に展開するディレクトリを作成する必要はありますが、
正規表現で抽出して、「Join-Path $DstPath $_.FullName.Substring($SrcPath.Length)」で
展開先ディレクトリに取得した要素を展開する感じです。
色々とアドバイス頂きありがとうございました。
---------------------------------------------------------------------------------
#出力先ディレクトリ
$SrcPath = 任意のディレクトリ
#出力先ディレクトリ(スクリプトの置き場 + 展開するディレクトリ)
$DstPath = Join-Path (Split-Path $MyInvocation.MyCommand.path) ("\test")
#抽出&コピー
Get-ChildItem -Recurse $SrcPath | ?{ $_.FullName -match "^(?!.*file)"} | `
Copy-Item -Destination {Join-Path $DstPath $_.FullName.Substring($SrcPath.Length)}
784デフォルトの名無しさん
2021/11/21(日) 23:14:57.70ID:ny8+2EkL 誤字が酷い・・・
以下の通り訂正します。
#コピー元ディレクトリ
$SrcPath = 任意のディレクトリ
以下の通り訂正します。
#コピー元ディレクトリ
$SrcPath = 任意のディレクトリ
785デフォルトの名無しさん
2021/11/22(月) 01:24:51.37ID:DJE+GLbt 除外するのがファイルなら、全部コピーしてから消す方が、考える時間ノータイムでできるから、自分ならそうしちゃうな
ディレクトリ除外するなら素直にrobocopy使っちゃう
ディレクトリ除外するなら素直にrobocopy使っちゃう
786デフォルトの名無しさん
2021/11/22(月) 02:13:30.35ID:l3U7Q7kM 除外する理由も不明で全部コピーとか機械オンチかな
ストレージは有限リソースだぞ
ストレージは有限リソースだぞ
787デフォルトの名無しさん
2021/11/22(月) 02:45:11.19ID:49bPrPzL Join-Pathのところ
$_.Fullname.replace($SrcPath,$DstPath)
でもよさそう
$_.Fullname.replace($SrcPath,$DstPath)
でもよさそう
788デフォルトの名無しさん
2021/11/22(月) 04:31:54.22ID:y2hovgGl 除外したいファイルが巨大ファイルかもしれないのに一旦コピーしてから削除とかアホやろ
789デフォルトの名無しさん
2021/11/22(月) 10:05:58.61ID:xI4p9npJ 巨大ファイルかもしれないし小さいファイルかもしれない
質問者がまだ開示してない範囲なのでアイデアは言うだけタダだし叩くいわれもないだろう
質問者がまだ開示してない範囲なのでアイデアは言うだけタダだし叩くいわれもないだろう
790デフォルトの名無しさん
2021/11/22(月) 10:12:16.38ID:xI4p9npJ せっかく何でも呼べるシェルなのにrobocopyを呼ばない理由があるのかは知らん
純PSを使いたいという拘りは遊びや向学の範囲ならありだと思うけど
純PSを使いたいという拘りは遊びや向学の範囲ならありだと思うけど
791デフォルトの名無しさん
2021/11/22(月) 10:58:52.55ID:ssU9K32s 流石にコピーしてから削除は素人くさくて人には見せられないコードだな
792デフォルトの名無しさん
2021/11/22(月) 11:21:13.08ID:JeDQJ1PF 対象のファイル存在判定判定を行いたいんだけど
get-childitemで「〜が存在しない為検出できません」と表示されてFalseが返ってくる時と、対象ファイルはないけど何も表示されずにTrueが返ってくる時の違いって何でしょうか?
正規表現で複数のファイルを探してる時と限定して一つを探してる時の差って認識で合ってますでしょうか
認識が合ってるのであれば、Falseが返ってくる際のファイル存在判定ってどうやって行ったらいいですかね
get-childitemで「〜が存在しない為検出できません」と表示されてFalseが返ってくる時と、対象ファイルはないけど何も表示されずにTrueが返ってくる時の違いって何でしょうか?
正規表現で複数のファイルを探してる時と限定して一つを探してる時の差って認識で合ってますでしょうか
認識が合ってるのであれば、Falseが返ってくる際のファイル存在判定ってどうやって行ったらいいですかね
793デフォルトの名無しさん
2021/11/22(月) 11:32:08.25ID:y2hovgGl >>792
Test-Path
Test-Path
794デフォルトの名無しさん
2021/11/22(月) 11:57:50.46ID:vpaN3qMO robocopyという既存で使えるコマンドがあることはわかりました。
しかし、それを承知の上で、純PowerShellのコマンドで実現できる方法を探していました。
ストレージにも容量があるため、抽出とコピーを同時に済ませたかった次第です。
しかし、それを承知の上で、純PowerShellのコマンドで実現できる方法を探していました。
ストレージにも容量があるため、抽出とコピーを同時に済ませたかった次第です。
795デフォルトの名無しさん
2021/11/22(月) 12:33:14.41ID:DJE+GLbt あ、やっぱスクリプト書くのが目的なんですね
それならそれでよいと思います
ぱぱっと仕事を済ませるために使えるものを使うのであれば
そういう考え方もあるってことで
もちろん、コピー不要なファイルのサイズが大きすぎたりしたときは使えませんが
ただ、エラー時のリトライとかマルチスレッドをpowershellで実装するのは面倒なのでrobocopyかrsync使うことをお勧めします
自分しかアクセスしない領域を扱うなら、ここに書かれていた例でも十分かと思います
それならそれでよいと思います
ぱぱっと仕事を済ませるために使えるものを使うのであれば
そういう考え方もあるってことで
もちろん、コピー不要なファイルのサイズが大きすぎたりしたときは使えませんが
ただ、エラー時のリトライとかマルチスレッドをpowershellで実装するのは面倒なのでrobocopyかrsync使うことをお勧めします
自分しかアクセスしない領域を扱うなら、ここに書かれていた例でも十分かと思います
796デフォルトの名無しさん
2021/11/22(月) 12:46:04.31ID:JeDQJ1PF >>793
test-pathって複数ファイル判定できるのか?
test-pathって複数ファイル判定できるのか?
797デフォルトの名無しさん
2021/11/22(月) 13:07:04.73ID:DJE+GLbt test-pathはstring[]を引数に取れて、それぞれの判定結果を返しますね
798デフォルトの名無しさん
2021/11/22(月) 13:52:50.70ID:jUHFyU9k >>791
SSDを殺すツールでも作るのかね?
SSDを殺すツールでも作るのかね?
799デフォルトの名無しさん
2021/11/22(月) 20:21:46.68ID:nGTeQ/fQ 仕事で使うならrobocopyだな
800デフォルトの名無しさん
2021/11/22(月) 22:15:42.91ID:EOO8UMxm 今回の目的だとRobocopyで良いんだが
Powershellなら複数の条件のandでフィルターしたり正規表現でのフィルターやらリネームしながらのコピーとか活用シーンはあるわ
Powershellなら複数の条件のandでフィルターしたり正規表現でのフィルターやらリネームしながらのコピーとか活用シーンはあるわ
801デフォルトの名無しさん
2021/11/23(火) 00:34:07.96ID:co/a4Nbp >>787
大文字小文字の差異が発生したときにちゃんと動かないと思う
大文字小文字の差異が発生したときにちゃんと動かないと思う
802デフォルトの名無しさん
2021/11/23(火) 17:04:45.84ID:d0x80b5K じゃあ -reprace 演算子で
803デフォルトの名無しさん
2021/11/23(火) 20:11:06.49ID:LL+Lkvmb せめて-creplaceと書いとけ
804デフォルトの名無しさん
2021/11/23(火) 21:13:38.28ID:td4eh3RA Copy-Itemって時刻や属性とかACLやらもコピーされるんかな
同じにしといてや
同じにしといてや
805デフォルトの名無しさん
2021/11/23(火) 21:15:13.83ID:d0x80b5K >>803
大文字と小文字の差を無視したいんじゃないの?
大文字と小文字の差を無視したいんじゃないの?
806デフォルトの名無しさん
2021/11/25(木) 06:55:00.80ID:wkKQrHcX 質問です / たとえば…
膨大にファイルがあるディレクトリ以下から 古いファイルを探そうと思って
ls -r |? lastwritetime -lt "2015/10/10"
などとしたら…思いがけなく 沢山のファイルが該当したとき、
「この結果…変数に入れとけばよかったなぁ…そうすれば後で絞り込んだりできるし」
と思うことが あるのですが
でも、あらかじめ
$list = ls -r |? lastwritetime -lt "2015/10/10"
などとすると、検索中は 表示が見えない.
…というわけで、変数に入れつつ 表示させる手段を 今、探していますが なんだか分からず.
今のところは、「ファイルにリダイレクトしながら tee」ってのが、近いけど
使うかどうかわからない結果について、いちいちファイル作りたく無い気持ち(笑)はあったり
膨大にファイルがあるディレクトリ以下から 古いファイルを探そうと思って
ls -r |? lastwritetime -lt "2015/10/10"
などとしたら…思いがけなく 沢山のファイルが該当したとき、
「この結果…変数に入れとけばよかったなぁ…そうすれば後で絞り込んだりできるし」
と思うことが あるのですが
でも、あらかじめ
$list = ls -r |? lastwritetime -lt "2015/10/10"
などとすると、検索中は 表示が見えない.
…というわけで、変数に入れつつ 表示させる手段を 今、探していますが なんだか分からず.
今のところは、「ファイルにリダイレクトしながら tee」ってのが、近いけど
使うかどうかわからない結果について、いちいちファイル作りたく無い気持ち(笑)はあったり
807デフォルトの名無しさん
2021/11/25(木) 07:19:34.90ID:wkKQrHcX (これも 検索でも分からなかったのですが)
昔unixを使ってた慣れから pushd と popd を使うことがあるのですが
スタックの中身って見れないのでしょうか (dirsみたいな)
昔unixを使ってた慣れから pushd と popd を使うことがあるのですが
スタックの中身って見れないのでしょうか (dirsみたいな)
808デフォルトの名無しさん
2021/11/25(木) 07:47:43.37ID:tyDWZMxk >>806
Where-Object -OutVariableとかでできなかったっけ
Where-Object -OutVariableとかでできなかったっけ
809デフォルトの名無しさん
2021/11/25(木) 09:20:52.19ID:e/X72gP4 >>808 ありがとうございました
ls -r |? lastwritetime -lt "2015/10/10" -OutVariable list
知らなかった…調べてみると すべてのコマンドレットに備わってるんですね
ls -r |? lastwritetime -lt "2015/10/10" -OutVariable list
知らなかった…調べてみると すべてのコマンドレットに備わってるんですね
810デフォルトの名無しさん
2021/11/25(木) 09:38:35.33ID:e/X72gP4811デフォルトの名無しさん
2021/11/26(金) 10:20:48.79ID:ncT7Zn6W >>807
gl -stack
gl -stack
812デフォルトの名無しさん
2021/11/26(金) 11:04:55.34ID:ncT7Zn6W 遅レスだけど>>583にも関連ありそうなのでアンカー付けとく、slじゃなくてpush/pop-locationだけど
CDPATH的なモノはsl -で参照できることから存在してるとおもうけど、もっと柔軟に数の引数取りたい、とかなら簡単なシェル関数書けば良いかと
function cd($bwd=1){iex "cd -;" * $bwd}
さらに
{iex "sl ..;" * $up},
{iex "sl +;" * $fwd}…等
(cdのremove-alias、引数を読んでディスパッチ等はよしなに)
まあ気が散るからlocationスタックに慣れた方がいいとは思う
CDPATH的なモノはsl -で参照できることから存在してるとおもうけど、もっと柔軟に数の引数取りたい、とかなら簡単なシェル関数書けば良いかと
function cd($bwd=1){iex "cd -;" * $bwd}
さらに
{iex "sl ..;" * $up},
{iex "sl +;" * $fwd}…等
(cdのremove-alias、引数を読んでディスパッチ等はよしなに)
まあ気が散るからlocationスタックに慣れた方がいいとは思う
813デフォルトの名無しさん
2021/11/29(月) 19:58:38.42ID:FW3KUWhD $hoge = Invoke-Command -ComputerName 192.168.0.1 -Credential $cred -ScriptBlock {C:\script\cpu.bat}
こんな感じでリモートPCのCPUの情報を取得したんだけど、
リモート側では返り値の型が Hashtable で連想配列なんだけど、実行する側のPCだと Object[] になって配列になるんだけど
これって仕様なの?
連想配列のまま$hogeで受け取る方法とかない?
こんな感じでリモートPCのCPUの情報を取得したんだけど、
リモート側では返り値の型が Hashtable で連想配列なんだけど、実行する側のPCだと Object[] になって配列になるんだけど
これって仕様なの?
連想配列のまま$hogeで受け取る方法とかない?
814デフォルトの名無しさん
2021/11/29(月) 20:04:41.43ID:xU0y2yzX 無い
815デフォルトの名無しさん
2021/11/29(月) 20:07:54.41ID:FW3KUWhD 無いのかw
PowerShell初めて触ってるんだけど、こいつ癖が強いなぁw
PowerShell初めて触ってるんだけど、こいつ癖が強いなぁw
816デフォルトの名無しさん
2021/12/04(土) 15:49:34.45ID:3yJp3Bv8 パイプのあくの強さに辟易してからが本番
817デフォルトの名無しさん
2021/12/04(土) 15:57:56.73ID:lpLqhZbS パイプの魅力に取り憑かれたらもう後には戻れない
818デフォルトの名無しさん
2021/12/04(土) 20:29:02.53ID:dom41WHA819デフォルトの名無しさん
2021/12/04(土) 20:33:23.88ID:12OWCJtV パイプラインが気に入らなかったら使わなきゃ良いんだけど
配列は気に入らなくても使わざるを得ないんだよな
配列は気に入らなくても使わざるを得ないんだよな
820デフォルトの名無しさん
2021/12/04(土) 20:59:45.48ID:NLsksufL 初代プレステみたいな拡張子以外ないの?
もうちょっとかっちょいい拡張子使いたい
もうちょっとかっちょいい拡張子使いたい
821デフォルトの名無しさん
2021/12/04(土) 21:10:22.01ID:jlXR6Mjx pwshも起動遅いよな
NGenも上手く行かんし。起動の遅さには目をつぶって使ってる感じ?
NGenも上手く行かんし。起動の遅さには目をつぶって使ってる感じ?
822デフォルトの名無しさん
2021/12/04(土) 22:01:12.10ID:3yJp3Bv8 毎回pwsh起動時に最新バージョンのpwshかWebサイトに確認しにいってる予感
823デフォルトの名無しさん
2021/12/05(日) 16:39:28.02ID:iTfrMGLj 24時間ごとに最初のセッションでバージョンチェックが走るので、テレメトリーを無効にすればちょっとだけ起動が速くなるかも
https://github.com/PowerShell/PowerShell/issues/16234
POWERSHELL_UPDATECHECKは通知の制御だけで、バージョンチェック(を含む通信)はテレメトリー自体を止めないとダメみたい
https://github.com/PowerShell/PowerShell/issues/16234
POWERSHELL_UPDATECHECKは通知の制御だけで、バージョンチェック(を含む通信)はテレメトリー自体を止めないとダメみたい
824デフォルトの名無しさん
2021/12/05(日) 21:30:10.95ID:4E92Wydv PowerShellを使っている人はWindows Terminalも使っていること多いでしょ
どっちも素のコマンドプロンプトに比べて起動に時間がかかる
どっちも素のコマンドプロンプトに比べて起動に時間がかかる
825デフォルトの名無しさん
2021/12/05(日) 22:44:22.34ID:MGzOS3+Z WSL2 で、Linux も使っている人は、Windows Terminal が便利。
ctrl + c でコピーできる
Linux の端末では、右クリックメニューからコピーしないといけない
ctrl + c でコピーできる
Linux の端末では、右クリックメニューからコピーしないといけない
826デフォルトの名無しさん
2021/12/05(日) 23:06:07.82ID:2W/PRbgG 無変換キーで@が入力されるの治ってほしい…
827デフォルトの名無しさん
2021/12/05(日) 23:08:46.06ID:EbpaPfY1 >>826
なにそれ
なにそれ
828デフォルトの名無しさん
2021/12/05(日) 23:17:25.58ID:2W/PRbgG Windows Terminal上でPowershellを使ってるとき、IME OFFに割り当てた無変換キーを空打ちすると@が入力されちゃう
829デフォルトの名無しさん
2021/12/05(日) 23:46:17.42ID:EbpaPfY1 >>828
再現せんなあ
再現せんなあ
830デフォルトの名無しさん
2021/12/06(月) 00:19:03.74ID:l+QuXC+3 これか
https://twitter.com/nejigami/status/1381587748260249601
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/nejigami/status/1381587748260249601
https://twitter.com/5chan_nel (5ch newer account)
831デフォルトの名無しさん
2021/12/06(月) 16:19:41.17ID:eOuwgSss psreadlineでバインドし直せばいいんでないの?
832デフォルトの名無しさん
2021/12/06(月) 16:45:47.86ID:RFIhcWIP >>828
Ahkで無変換をime off機能に割り当てて対策してる。
Ahkで無変換をime off機能に割り当てて対策してる。
833デフォルトの名無しさん
2021/12/06(月) 16:54:29.37ID:eOuwgSss psreadlineに渡る前にwtに吸われてるのなら無力だったな
めんご
めんご
834デフォルトの名無しさん
2021/12/08(水) 18:02:05.74ID:fwBoA4il >>832
AutoHotkeyで解決した、ありがとう
AutoHotkeyで解決した、ありがとう
835デフォルトの名無しさん
2021/12/11(土) 17:33:02.92ID:lpfa5wkz 今回リモートPCの使用状況をlog化して通知するシステムに利用したんだけど、
みんなは何にPowerShell使ってんの?やっぱり反復処理とか?イマイチ使いみちが思いつかないw
みんなは何にPowerShell使ってんの?やっぱり反復処理とか?イマイチ使いみちが思いつかないw
836デフォルトの名無しさん
2021/12/11(土) 18:31:42.90ID:l4zQKEWJ 分かってる人には当たり前のことなのかもしれないけど、 Set-PSReadLineOption -EditMode Emacs で
Emacs風味キーバインドにしたらCtrl+DでPowerShellが終了するね
Emacs風味キーバインドにしたらCtrl+DでPowerShellが終了するね
837デフォルトの名無しさん
2021/12/11(土) 19:33:39.75ID:Jze+N/0t Ctrl+Dでの終了はzshでも有効にしてるので、違和感なく使ってました
838デフォルトの名無しさん
2021/12/11(土) 19:42:02.74ID:Jze+N/0t 日常的に使ってるのは、VPN接続とリモート接続のログイン自動化スクリプトですね
839デフォルトの名無しさん
2021/12/11(土) 21:55:48.50ID:vdCi5/VF >>834
そんな大層なことしなくても
gci -pa HKLM:/system -rec -inc keyboard* -ea ignore
とかでキーマップが引っかかったと思うから、$profileにブチこんどけばいいんじゃないの、シェル閉じた時のリストア処理も書けるし
そんな大層なことしなくても
gci -pa HKLM:/system -rec -inc keyboard* -ea ignore
とかでキーマップが引っかかったと思うから、$profileにブチこんどけばいいんじゃないの、シェル閉じた時のリストア処理も書けるし
840デフォルトの名無しさん
2021/12/11(土) 21:58:38.54ID:vdCi5/VF ターミナル(wt.exe)の問題なら.jsonにキーマップ書けたはずで、それが一番礼儀正しいが
841デフォルトの名無しさん
2021/12/11(土) 22:11:14.55ID:T5tvegM+ レジストリはすぐどこ触ったか分からんくなるから$profileか、pwshの外ならuser\**\startupにコマンド書いて設定した方がいい
少なくとも何を触ったかは記録に残る
できれば初期値についてのコメントも
シェル/環境変数みたいにシャドウイングできるといいんだけど
少なくとも何を触ったかは記録に残る
できれば初期値についてのコメントも
シェル/環境変数みたいにシャドウイングできるといいんだけど
842デフォルトの名無しさん
2021/12/12(日) 00:04:01.85ID:kmuza9nw wsl --help の出力結果をパイプやファイルにリダイレクトすると、PowerShellとWSLが不?戴天の仇らしいことがよくわかる
843デフォルトの名無しさん
2021/12/12(日) 21:13:44.01ID:tlt3McAx Windows PowerShell Inventor Jeffrey Snover Interview
https://evrone.com/jeffrey-snover-interview
https://evrone.com/jeffrey-snover-interview
844デフォルトの名無しさん
2021/12/13(月) 13:52:11.42ID:MDj1w4qb >>842
とりあえず|out-file -enc 色々噛ませてみては
とりあえず|out-file -enc 色々噛ませてみては
845デフォルトの名無しさん
2021/12/14(火) 06:17:10.79ID:5jyEPH53 なんで不?戴天になってしまったのかと思ったら環境依存文字使ってたからか
不倶戴天 (環境依存文字なし)
不俱戴天 (環境依存文字あり)
不倶戴天 (環境依存文字なし)
不俱戴天 (環境依存文字あり)
846デフォルトの名無しさん
2021/12/14(火) 15:19:22.77ID:6iAGSMwm お前らlinuxマシンにpwsh入れてる?
847デフォルトの名無しさん
2021/12/14(火) 15:49:09.33ID:mpAOsF0a 入れるわけないだろ
こんなもんWindows以外では絶対使わん
こんなもんWindows以外では絶対使わん
848デフォルトの名無しさん
2021/12/14(火) 15:54:44.60ID:vLIDlmgW たぶん、PowerShell が、UTF-8 だからじゃないの?
コマンドプロンプトで、
wsl --help > a.txt
とすると、UTF-16LE になり、VSCode・サクラエディタでも見れる
でも、Windows Terminal(WT)では、PowerShell・コマンドプロンプト・WSL のLinux の3つが使えるけど、
そのコマンドプロンプトでやったら、文字化けして見れない
WT は、UTF-8 だから文字化けするのかも
だから、アプリによる
コマンドプロンプトで、
wsl --help > a.txt
とすると、UTF-16LE になり、VSCode・サクラエディタでも見れる
でも、Windows Terminal(WT)では、PowerShell・コマンドプロンプト・WSL のLinux の3つが使えるけど、
そのコマンドプロンプトでやったら、文字化けして見れない
WT は、UTF-8 だから文字化けするのかも
だから、アプリによる
849デフォルトの名無しさん
2021/12/14(火) 16:00:11.41ID:5jyEPH53850デフォルトの名無しさん
2021/12/14(火) 19:12:38.50ID:HCC7MYbd パワーー
851デフォルトの名無しさん
2021/12/14(火) 20:06:47.20ID:lHfIhTrg はい
852デフォルトの名無しさん
2021/12/15(水) 12:02:30.22ID:PaPmsmcA まあでもWindows上で使ってるぶんには安定してるな。
当たり前だけどw
当たり前だけどw
853デフォルトの名無しさん
2021/12/15(水) 20:55:34.12ID:zohMO0ui854デフォルトの名無しさん
2021/12/16(木) 03:32:22.22ID:V72yjyE9 PowerShell上で非ANSIコードページ文字列をパイプやリダイレクトするには以下のようにcmd /C を使うしかない
cmd /C 'wsl --help > aaa.txt'
「ねぇどんな気持ち?」のクマAAをPowerShell愛好家に贈りたい
cmd /C 'wsl --help > aaa.txt'
「ねぇどんな気持ち?」のクマAAをPowerShell愛好家に贈りたい
855848
2021/12/16(木) 12:30:02.79ID:pA5H+adw コマンドプロンプトを使わずに、PowerShell で、
wsl --help を文字化けせずに、ファイルへ保存する方法はないのか?
>>848
修正
>でも、Windows Terminal(WT)では、PowerShell・コマンドプロンプト・WSL のLinux の3つが使えるけど、
>そのコマンドプロンプトでやったら、文字化けして見れない。
>WT は、UTF-8 だから文字化けするのかも
Windows Terminal(WT)のコマンドプロンプトで、
もう一度やってみたら、正常に表示された!
ちなみにコマンドプロンプトも、WTのコマンドプロンプトも、両方とも、CP932 でした
chcp
#=> 932
wsl --help を文字化けせずに、ファイルへ保存する方法はないのか?
>>848
修正
>でも、Windows Terminal(WT)では、PowerShell・コマンドプロンプト・WSL のLinux の3つが使えるけど、
>そのコマンドプロンプトでやったら、文字化けして見れない。
>WT は、UTF-8 だから文字化けするのかも
Windows Terminal(WT)のコマンドプロンプトで、
もう一度やってみたら、正常に表示された!
ちなみにコマンドプロンプトも、WTのコマンドプロンプトも、両方とも、CP932 でした
chcp
#=> 932
856デフォルトの名無しさん
2021/12/16(木) 14:46:23.47ID:fd1vO2kC Correct output in CMD, but incorrect output to a file in PowerShell #16012
https://github.com/PowerShell/PowerShell/issues/16012
https://github.com/PowerShell/PowerShell/issues/16012
857デフォルトの名無しさん
2021/12/16(木) 15:06:10.72ID:V72yjyE9 PowerShellの定番質問に知ったかぶりしてOutputEncodingを変えろと回答する人って自分で試さないんだろうか?
それとも質問を理解できるだけの国語力がないのか?
それとも質問を理解できるだけの国語力がないのか?
858デフォルトの名無しさん
2021/12/16(木) 15:11:12.80ID:ywwvfrpp 負けた気がするけどロケールはもう諦めてen_us、圧力掛けるのはおまいらに任せた
あえて真っ白linuxでは使わんけどwslは快適になるな
$profile |add-member -noteprop
で属性付けて
. $profile.common; .$profile.platform
とそーすしてる
あえて真っ白linuxでは使わんけどwslは快適になるな
$profile |add-member -noteprop
で属性付けて
. $profile.common; .$profile.platform
とそーすしてる
859デフォルトの名無しさん
2021/12/16(木) 15:23:47.31ID:9aNyIMSV そんなことより
左辺コレクションの-eqのフィルタの罠に見事に引っ掛かったわ
左辺コレクションの-eqのフィルタの罠に見事に引っ掛かったわ
860デフォルトの名無しさん
2021/12/16(木) 15:41:05.53ID:ywwvfrpp -eq(ual elements are...)と読み慣わしてる
861848
2021/12/16(木) 16:19:44.83ID:pA5H+adw OutputEncoding を変えるぐらいでは、出来ないだろ。
PowerShell(PS)は、迷走しまくっている
UTF-16LE とか、あるのか?
PS 6 では、BOM 無しUTF-8 も出来るらしいけど
PowerShell(PS)は、迷走しまくっている
UTF-16LE とか、あるのか?
PS 6 では、BOM 無しUTF-8 も出来るらしいけど
862848
2021/12/16(木) 16:24:12.96ID:pA5H+adw Windows は、CP932, BOM 有りUTF-8/BOM 無しUTF-8, UTF-16LE が入り乱れて、
外部と日本語でやり取りできないw
一方、Linux は、UTF-8 で統一されているから、全く問題ない。
Ubuntu は、UTF-32 らしいけど、外部には関係ない
外部と日本語でやり取りできないw
一方、Linux は、UTF-8 で統一されているから、全く問題ない。
Ubuntu は、UTF-32 らしいけど、外部には関係ない
863デフォルトの名無しさん
2021/12/16(木) 16:37:31.00ID:V72yjyE9 >>861
Input Encodingがシステムコードページ一択(日本語版Windowsだと932)になってることが原因だよ
UTF16-LEの文字列をSJISとみなしてOutputEncodingに変換するから文字化けしているのが真相
このPowerShellのおバカ仕様のせいでMINGWのUTF-8対応済みアプリの恩恵をまったく活かせない
Input Encodingがシステムコードページ一択(日本語版Windowsだと932)になってることが原因だよ
UTF16-LEの文字列をSJISとみなしてOutputEncodingに変換するから文字化けしているのが真相
このPowerShellのおバカ仕様のせいでMINGWのUTF-8対応済みアプリの恩恵をまったく活かせない
864848
2021/12/16(木) 18:10:47.68ID:pA5H+adw >UTF16-LEの文字列を、SJISとみなして
すごい。文字化けの謎を解明してくれたのか!
すごい。文字化けの謎を解明してくれたのか!
865848
2021/12/16(木) 18:13:34.65ID:pA5H+adw と言うことは、逆変換すればどうかな?
SJIS → UTF16-LE
SJIS → UTF16-LE
866848
2021/12/16(木) 18:19:40.99ID:pA5H+adw それか、あらかじめデータを、SJIS へ変換しておいてから渡すとか
Ruby では、色々な携帯の機種依存の日本語を変換するのに、
最長6パスとか掛かるものもあるらしい
Ruby では、色々な携帯の機種依存の日本語を変換するのに、
最長6パスとか掛かるものもあるらしい
867デフォルトの名無しさん
2021/12/16(木) 18:50:41.75ID:qMSlwGZE [console]::OutputEncoding = [System.Text.Encoding]::Unicode
v5環境だけどこれでファイル出力の文字化けは解消できた
ただ改行コード\nが全部\r\nになる
v5環境だけどこれでファイル出力の文字化けは解消できた
ただ改行コード\nが全部\r\nになる
868デフォルトの名無しさん
2021/12/16(木) 18:55:45.31ID:bRV7vQKn v7だと多分問題はない、よろしくやってくれてるんだと思う
mingwは使ってないから知らんが少なくとも標準パッケマネのwingetで入るやつ(gnuwinポート)でエンコで困った事はない
mingwは使ってないから知らんが少なくとも標準パッケマネのwingetで入るやつ(gnuwinポート)でエンコで困った事はない
869デフォルトの名無しさん
2021/12/16(木) 19:06:43.69ID:V72yjyE9870デフォルトの名無しさん
2021/12/16(木) 19:15:07.46ID:bRV7vQKn とりあえず環境を(ターミナルも)書いてくれないとアドバイスのしようがない
>>856の対処は試した?
>>856の対処は試した?
871デフォルトの名無しさん
2021/12/16(木) 19:24:43.19ID:V72yjyE9872デフォルトの名無しさん
2021/12/16(木) 19:27:32.35ID:V72yjyE9 マイクロソフトが関与するオープンソース・コミュニティーは問題が解決してないのに解決したことにしてしまうずさんな所が多い
バグ票を閉じることを優先する隠蔽体質あると思う
バグ票を閉じることを優先する隠蔽体質あると思う
873デフォルトの名無しさん
2021/12/16(木) 19:34:07.64ID:V72yjyE9 共産圏の人間が仕切ってるのかと思うような閉じられ方する、まさにノルマ
874デフォルトの名無しさん
2021/12/16(木) 20:11:17.38ID:q0ua6jst そうだね
875デフォルトの名無しさん
2021/12/16(木) 20:20:13.49ID:Y2CVy/MB マイクロソフト文化圏。
876デフォルトの名無しさん
2021/12/16(木) 21:09:01.98ID:VSm+B60n >>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()
> 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デフォルトの名無しさん
2021/12/16(木) 21:15:42.41ID:V72yjyE9 従来型のパイプラインを選べない時点で設計思想がおかしいんですよ
$(xxx) みたいな特殊表現によるパイプが提供されてしかるべき
というかPowerShellのパイプラインを特殊表現に閉じ込めるべき
$(xxx) みたいな特殊表現によるパイプが提供されてしかるべき
というかPowerShellのパイプラインを特殊表現に閉じ込めるべき
878デフォルトの名無しさん
2021/12/16(木) 21:56:24.21ID:V72yjyE9 OutputEncodingとコードページがごっちゃになってるのもよくない
OutputEncodingをUTF8に指定したら、cmd /? で英語ヘルプが返されるようになってしまう
この挙動は、コマンドプロンプト上のchcp コマンドでコードページを変えたときのcmd /?の挙動と同じ
OutputEncodingをUTF8に指定したら、cmd /? で英語ヘルプが返されるようになってしまう
この挙動は、コマンドプロンプト上のchcp コマンドでコードページを変えたときのcmd /?の挙動と同じ
879デフォルトの名無しさん
2021/12/16(木) 22:23:10.88ID:ywwvfrpp >>877
そもそも従来型のパイプラインは生バイト晒してたように聞こえるんだが、テキストモード(ascii)IOを忘れてないか
fopen等システムコールに行儀良く"b"フラグ渡してれば問題はないが、そうでない時にcmdはtypeや |を処理する際にコンソールのファント設定見に行く等奇怪な挙動をしてた
でもたまに制御文字をtypeして死んだり…
テキストモードを排除できれば可能かも
そもそも従来型のパイプラインは生バイト晒してたように聞こえるんだが、テキストモード(ascii)IOを忘れてないか
fopen等システムコールに行儀良く"b"フラグ渡してれば問題はないが、そうでない時にcmdはtypeや |を処理する際にコンソールのファント設定見に行く等奇怪な挙動をしてた
でもたまに制御文字をtypeして死んだり…
テキストモードを排除できれば可能かも
880デフォルトの名無しさん
2021/12/16(木) 22:31:55.77ID:ywwvfrpp gnuとかのプログラムは今でもioモード切り替えフラグ付いてたりするね
生バイトが欲しければProcessInfoとかからstdin/stdout引っこ抜いてIO.BinaryWriterに渡すとか
生バイトが欲しければProcessInfoとかからstdin/stdout引っこ抜いてIO.BinaryWriterに渡すとか
881デフォルトの名無しさん
2021/12/16(木) 22:47:57.71ID:peIHdemY 文字列中に紛れたeof文字相当のバイトを見ても読み込みを続ける挙動は多分windows的には正しくないよな
そんな文字無くしてしまえ、と思うけど
そんな文字無くしてしまえ、と思うけど
882デフォルトの名無しさん
2021/12/17(金) 06:27:47.69ID:cFRRrt8D wsl --helpのみっともない改行はUTF-16のL"\r\n"をテキストモードで出力するwslの変態行為がそもそもの原因だし
https://docs.microsoft.com/en-us/cpp/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes?view=msvc-170
https://docs.microsoft.com/en-us/cpp/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes?view=msvc-170
883デフォルトの名無しさん
2021/12/17(金) 06:36:45.15ID:cFRRrt8D PowerShell固有のパイプラインに、|, >, >> を使うのをやめて
例えば $|, $>, $>> のような特殊表現に閉じ込めてほしいんだが
今さら無理か
例えば $|, $>, $>> のような特殊表現に閉じ込めてほしいんだが
今さら無理か
884デフォルトの名無しさん
2021/12/17(金) 07:27:36.04ID:cFRRrt8D 昔、MINGWのcatコマンドが0x0aを勝手に0x0d,0x0aへテキストモード変換する迷惑行為で人知れず苦しんだ人は多かったと思う
885デフォルトの名無しさん
2021/12/17(金) 08:47:10.04ID:+hqMWYwb c標準ライブラリの"t"フラグはホスト側でよしなに変換してくれという表明だけど、たぶん行論理セパレータ\n↔\r\n変換してくれるやつくらいに考えてる人が多いんじゃねえかな
886デフォルトの名無しさん
2021/12/17(金) 09:02:49.38ID:z0PRPnA0 "t"はc規格には無いか、無指定の"w"フラグ等がテキストモードにデフォルトするというだけで
cっぽいopen関数備えてる言語(pythonとか)だと"b"との区別を意識させる為に"wt"とか受け付けるけど
cっぽいopen関数備えてる言語(pythonとか)だと"b"との区別を意識させる為に"wt"とか受け付けるけど
887デフォルトの名無しさん
2021/12/17(金) 09:38:27.97ID:cFRRrt8D マイクロソフト謹製アプリが率先してやらかしてるってところが肝
888デフォルトの名無しさん
2021/12/17(金) 10:04:59.46ID:YK+z10uu それと直接関係あるかは再現しないのでちょっと不明
>>871はconhostをsjisに設定してない?
>>871はconhostをsjisに設定してない?
889デフォルトの名無しさん
2021/12/17(金) 10:07:35.81ID:YK+z10uu v7.2/wt(preview)
[console]のioデフォルトはutf8(=旧nobom)になってた
[console]のioデフォルトはutf8(=旧nobom)になってた
890デフォルトの名無しさん
2021/12/17(金) 10:09:02.77ID:cFRRrt8D891デフォルトの名無しさん
2021/12/17(金) 10:14:30.90ID:YK+z10uu892デフォルトの名無しさん
2021/12/17(金) 10:27:09.40ID:YK+z10uu あとwin11非対応マシンでms配布のロールバック用iso(非ローカライズ版)イメージで再インストール→日本語パック選択した人も該当するはず
oem版はsjisが多いと思う
oem版はsjisが多いと思う
893デフォルトの名無しさん
2021/12/17(金) 10:32:50.05ID:cFRRrt8D >>891
Windows Terminalでも起きるんだからconhost.exeは関係ないぞ
Windows Terminalでも起きるんだからconhost.exeは関係ないぞ
894デフォルトの名無しさん
2021/12/17(金) 10:42:00.46ID:YK+z10uu >>893
conhostも[console]もシステムのcpから拾ってくる
wtに関してはsetting.jsonからも設定できる
様々なエンコーディング切り替えられないソフトが混在してて、グローバルに切り替えるのがためらわれるならば
ps/cmd>ms-settings:~(スタート>歯車のやつ)からアプリ毎にエンコーディング設定するのがおすすめ
conhostも[console]もシステムのcpから拾ってくる
wtに関してはsetting.jsonからも設定できる
様々なエンコーディング切り替えられないソフトが混在してて、グローバルに切り替えるのがためらわれるならば
ps/cmd>ms-settings:~(スタート>歯車のやつ)からアプリ毎にエンコーディング設定するのがおすすめ
895デフォルトの名無しさん
2021/12/17(金) 10:56:53.95ID:cFRRrt8D エンコーディング機能にAutoDetectがあれば良いだけなんだがな
簡単なことを難しくしてしまうのは無能の証なんだよ
PowerShellみててつくづくそう思う
簡単なことを難しくしてしまうのは無能の証なんだよ
PowerShellみててつくづくそう思う
896デフォルトの名無しさん
2021/12/17(金) 11:26:52.18ID:aYaid5rJ オートディテクトはギルティ、頭抱える事になるぞ
素性の良いデータで大体動けばいいような自動化なら、古き良きnkfでも噛ませ
ポータブルにしたいならPSGalleryに純pwsh実装のモジュールが転がってる、クオリティは知らん
i/oエンコーディングをシェルレベルで扱えるのはバベルの塔なwindows環境では重宝する
素性の良いデータで大体動けばいいような自動化なら、古き良きnkfでも噛ませ
ポータブルにしたいならPSGalleryに純pwsh実装のモジュールが転がってる、クオリティは知らん
i/oエンコーディングをシェルレベルで扱えるのはバベルの塔なwindows環境では重宝する
897デフォルトの名無しさん
2021/12/17(金) 11:27:13.62ID:cFRRrt8D PowerShellのパイプラインそれ自体がすでに低速なのに文字コードの自動判定すらないとか無能すぎでしょ
898デフォルトの名無しさん
2021/12/17(金) 11:29:06.56ID:cFRRrt8D899デフォルトの名無しさん
2021/12/17(金) 12:26:32.74ID:YK+z10uu リダイレクトの挙動が不自然に感じるのは、ホストの概念で躓いてるのでは
ホストはコンソールとも限らないし、coreバンドルのコンソールホスト以外にもiseやらaspやら色々あるわけで
なんで設定が分かれてるのか考えるべき
ホストはコンソールとも限らないし、coreバンドルのコンソールホスト以外にもiseやらaspやら色々あるわけで
なんで設定が分かれてるのか考えるべき
900デフォルトの名無しさん
2021/12/17(金) 12:35:31.53ID:cFRRrt8D901デフォルトの名無しさん
2021/12/17(金) 12:48:55.55ID:BQzVpcl1 >>900
>>856からrelatedで飛べる
https://github.com/PowerShell/PowerShell/issues/1908
で提案されてるような構文はあったら確かに便利かと思う
もちろんcoreの設計とは相容れないから、追加モジュールかwindows pwsh(新)でリリースすることになると思うけど
イイね押しとこう
>>856からrelatedで飛べる
https://github.com/PowerShell/PowerShell/issues/1908
で提案されてるような構文はあったら確かに便利かと思う
もちろんcoreの設計とは相容れないから、追加モジュールかwindows pwsh(新)でリリースすることになると思うけど
イイね押しとこう
902デフォルトの名無しさん
2021/12/17(金) 13:16:49.94ID:cFRRrt8D むしろPowerShelll固有の構文を新しい構文に移行させてほしいくらいだわ
パイプラインにテキスト縛りがある時点でPowerShellは欠陥品なんだよ
パイプラインにテキスト縛りがある時点でPowerShellは欠陥品なんだよ
903デフォルトの名無しさん
2021/12/29(水) 20:28:55.03ID:/Pws6ORw PowerShellは以下コマンドをFunction化できない。
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932); $OutputEncoding = [Text.Encoding]::GetEncoding(932);
Function内でしかスコープが有効でないことが原因。$global:OutputEncodingを変えてもダメ。
なのでchcpコマンド相当のことをやろうとしたら手入力するしかない
なんというか、PowerShellは他のシェル言語でできいることができない残念なシェル言語。
オワコン化待ったなし
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932); $OutputEncoding = [Text.Encoding]::GetEncoding(932);
Function内でしかスコープが有効でないことが原因。$global:OutputEncodingを変えてもダメ。
なのでchcpコマンド相当のことをやろうとしたら手入力するしかない
なんというか、PowerShellは他のシェル言語でできいることができない残念なシェル言語。
オワコン化待ったなし
904デフォルトの名無しさん
2021/12/29(水) 20:49:49.82ID:/Pws6ORw ([console])::OutputEncodingをFunction外にも適用できないことにはchcp相当の機能は実現できない
Powershellからchcpを呼ぶとcmdシェルを介してコマンドプロンプトの初期値が表示されるだけであり、グローバル設定とは無関係
([console])::OutputEncodingが効いたかどうかは、cmd /? で戻されるヘルプ文字列が日本語かどうかで判断できる
Powershellからchcpを呼ぶとcmdシェルを介してコマンドプロンプトの初期値が表示されるだけであり、グローバル設定とは無関係
([console])::OutputEncodingが効いたかどうかは、cmd /? で戻されるヘルプ文字列が日本語かどうかで判断できる
905デフォルトの名無しさん
2021/12/29(水) 20:57:34.10ID:7YDJokPl UNIXシェルは糞of糞
やっぱりPowerShellだよな
シェルスクリプトは文字通りの逐次実行
sleepy-yoshi.hatenablog.com/entry/20090917/p1
やっぱりPowerShellだよな
シェルスクリプトは文字通りの逐次実行
sleepy-yoshi.hatenablog.com/entry/20090917/p1
906デフォルトの名無しさん
2021/12/29(水) 23:03:59.28ID:wj529v9h907デフォルトの名無しさん
2021/12/29(水) 23:16:02.98ID:/Pws6ORw >>906
説明不足だった
やりたいことはコマンド入力じゃなくてSet-PSReadLineKeyHandler -Keyを使ったキーバインドなんだけど
ドット. で反映してくてもScriptBlockやFunctionのスコープに閉じ込められてしまうから解決にならない
説明不足だった
やりたいことはコマンド入力じゃなくてSet-PSReadLineKeyHandler -Keyを使ったキーバインドなんだけど
ドット. で反映してくてもScriptBlockやFunctionのスコープに閉じ込められてしまうから解決にならない
908デフォルトの名無しさん
2021/12/29(水) 23:39:26.16ID:/Pws6ORw ま、そういうエンコーディング切り替え機能をどれだけ充実させても既存のbashやCMDのようなプロセス間通信はできないのでやるだけ無駄ってのはわかってる
909デフォルトの名無しさん
2021/12/30(木) 08:42:29.02ID:InFuAQoQ PowerShellでバイナリ(もしくはエンコーディングが不明なデータ)を扱う
https://qiita.com/boukichi_numloc/items/0f4bb4e73f71c2f0a519
https://qiita.com/boukichi_numloc/items/0f4bb4e73f71c2f0a519
910デフォルトの名無しさん
2021/12/30(木) 21:35:12.30ID:FEP7eJXA powershell内部でcmd呼んだらいいのでは
何がしたいのかわからんけど
何がしたいのかわからんけど
911デフォルトの名無しさん
2021/12/30(木) 23:22:49.02ID:pA3aK4qE PowerShellからcmd を呼んだら負け、みたいな抵抗感が少しある
912デフォルトの名無しさん
2021/12/31(金) 19:53:42.99ID:YcD3GAD3 残念な仕様はあれども、ちゃんと書けば、ちゃんと動く
クソとは思わんな。便利は便利よ
クソとは思わんな。便利は便利よ
913デフォルトの名無しさん
2022/01/11(火) 22:54:51.08ID:rTZaFBoT CSVを項目で検索し、ヒットした列を編集したいんだけど、パイプが理解しきれてないせいで上手いこといかない
$ArrCsvData | Where-Object{$_.CodeNo -match $Code} |
このあとにカンマ区切りのテキストファイルを該当列に上書きしたいんだけど、どうすればいいのでしょうか?
$ArrCsvData | Where-Object{$_.CodeNo -match $Code} |
このあとにカンマ区切りのテキストファイルを該当列に上書きしたいんだけど、どうすればいいのでしょうか?
914デフォルトの名無しさん
2022/01/11(火) 23:45:14.22ID:1S8cvNBi >>913
まず、ArrCsvDataはCSVからオブジェクトに変換(ConverFrom-CSVやImport-CSV)した物なのかな
じゃないとプロパティで値を呼び出せないよ
「カンマ区切りのテキストファイルを該当列に上書きしたい」の意味が測り兼ねるけど、
条件に合致する行を編集したいなら
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
とやる。コツは編集後に「;$_ 」とやって出力する所。じゃないと編集だけして破棄する事になる。
さらにCSVで保存したいなら
〜 | Export-Csv -PSPath "保存先パス"
まず、ArrCsvDataはCSVからオブジェクトに変換(ConverFrom-CSVやImport-CSV)した物なのかな
じゃないとプロパティで値を呼び出せないよ
「カンマ区切りのテキストファイルを該当列に上書きしたい」の意味が測り兼ねるけど、
条件に合致する行を編集したいなら
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
とやる。コツは編集後に「;$_ 」とやって出力する所。じゃないと編集だけして破棄する事になる。
さらにCSVで保存したいなら
〜 | Export-Csv -PSPath "保存先パス"
915デフォルトの名無しさん
2022/01/11(火) 23:46:35.07ID:1S8cvNBi ミス
if文の閉じカッコ忘れてた
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
↓
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列"} ; $_ }
if文の閉じカッコ忘れてた
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
↓
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列"} ; $_ }
916デフォルトの名無しさん
2022/01/12(水) 00:21:17.01ID:B+xDwNUa いちいち空行挿むなスカスカ脳
917デフォルトの名無しさん
2022/01/12(水) 01:11:14.14ID:0oGT7bUk >>915
教えていただきありがとうございます
CSVは
「A001,,」
「B001,かきくけこ,12345」
のようなフィールドで
$Code = "A001"を検索し
「A001,あいうえお,12345」
のような内部のテキストファイルがあり、編集したい列名を指定せずにまとめて編集したいと思っています。
実際には編集する項目が多くループさせながら格納だと長くなってしまうため、省略できないかと思い相談させていただきました。
教えていただきありがとうございます
CSVは
「A001,,」
「B001,かきくけこ,12345」
のようなフィールドで
$Code = "A001"を検索し
「A001,あいうえお,12345」
のような内部のテキストファイルがあり、編集したい列名を指定せずにまとめて編集したいと思っています。
実際には編集する項目が多くループさせながら格納だと長くなってしまうため、省略できないかと思い相談させていただきました。
918デフォルトの名無しさん
2022/01/12(水) 21:13:44.63ID:vTY0CDWm 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:18.52ID:sU2jW0+6920デフォルトの名無しさん
2022/01/18(火) 20:28:41.01ID:4KOVvciD get-aliasをalias、またはget-serviceをservice、
自作の関数でもget-testとしたらtest、のように
エイリアス定義無しでも
get-を省略して実行出来てしまう(または、省略したらget-*扱いになる)のですが
これについて記載されたドキュメントが何処にあるか
教えて頂けないでしょうか
自作の関数でもget-testとしたらtest、のように
エイリアス定義無しでも
get-を省略して実行出来てしまう(または、省略したらget-*扱いになる)のですが
これについて記載されたドキュメントが何処にあるか
教えて頂けないでしょうか
921デフォルトの名無しさん
2022/01/19(水) 20:37:21.76ID:QgcNfSy6 >>920
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.2
PowerShell がコマンド入力を解析すると、コマンドレットまたはネイティブ実行可能ファイルへのコマンド名の解決が試みされます。 コマンド名が完全に一致しない場合、PowerShell は既定の動詞としてコマンドの前 Get- に付加されます。
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.2
PowerShell がコマンド入力を解析すると、コマンドレットまたはネイティブ実行可能ファイルへのコマンド名の解決が試みされます。 コマンド名が完全に一致しない場合、PowerShell は既定の動詞としてコマンドの前 Get- に付加されます。
922デフォルトの名無しさん
2022/01/20(木) 15:57:54.33ID:PUohEL+U PowerShellバカにしてたけど、安定性半端ないわ
適当にササッと書いたやつがなんのエラーもなくずっと正確に動いとる
適当にササッと書いたやつがなんのエラーもなくずっと正確に動いとる
923デフォルトの名無しさん
2022/01/20(木) 16:02:20.23ID:Aa91Vk9H924デフォルトの名無しさん
2022/01/20(木) 17:34:26.20ID:I7UNJZAr 正直、PowerShellって名前がダサいと思う
925デフォルトの名無しさん
2022/01/20(木) 19:23:46.46ID:qK2oGbTr チカラこそパワー!
926デフォルトの名無しさん
2022/01/20(木) 19:45:12.86ID:N7Uy6cYb ぱわわしぇる!
927デフォルトの名無しさん
2022/01/20(木) 19:54:27.39ID:INnqrIt/ 名前負けしてるなあ、とは思うけど
928デフォルトの名無しさん
2022/01/20(木) 20:28:47.30ID:Ibae9TV2 富士通が昔PowerCobolとか出してたからPowerなんちゃらは不安になる
929デフォルトの名無しさん
2022/01/20(木) 20:31:33.85ID:6YV8Mf/D うちはウルトラCとかいうインタープリターだったなー
930デフォルトの名無しさん
2022/01/20(木) 22:25:31.06ID:yvXRNpR1 力貝
宝貝みたいなもんだなきっと
宝貝みたいなもんだなきっと
931デフォルトの名無しさん
2022/01/20(木) 22:31:19.45ID:ogjAY3PM932デフォルトの名無しさん
2022/01/21(金) 14:41:49.71ID:Q8HlpjEI 質問です。
get-childitemのデフォルトのソート順は何でしょうか?(sort-objectを明示しない場合の並び順)
ソート順について記載されているドキュメントの所在でも良いです。
get-childitemのデフォルトのソート順は何でしょうか?(sort-objectを明示しない場合の並び順)
ソート順について記載されているドキュメントの所在でも良いです。
933デフォルトの名無しさん
2022/01/21(金) 20:37:48.38ID:QAFbTLmU934デフォルトの名無しさん
2022/01/21(金) 20:45:32.61ID:D6eDuhqM935デフォルトの名無しさん
2022/01/21(金) 22:44:52.31ID:Q8HlpjEI 932です。先ほどの質問についてご回答頂きありがとうございます。予めソートされていることがわかり、安心しました。
追加ですみませんが、もう1点質問をさせてください。(先ほどの質問は、当疑問からの派生でした。)
■前提事項
比較元と比較先でソート順を変えてdiffを取った場合、バイナリによる比較とハッシュ値による比較では結果が異なります。
具体的に申し上げますと、下記ディレクトリ構成の「file1.txt」を異なる内容にした場合、
バイナリ比較では、比較元の「修正前.xlsx」と比較先の「file1.txt」で差分を出力します。(ディレクトリの違いによるアンマッチを出力する。)
ハッシュ値の比較では、比較元の「file1.txt」と比較先の「file1.txt」で差分を出力します。(同ディレクトリ配下のアンマッチを出力する。)
■質問
なぜハッシュ値による比較では、比較元と比較先でソート順が違うのに同ディレクトリの差分のみを出力できるのか。(データ型の違いにヒントがあるのかなと思っていますが、解明まで至っておりません。)
■コード
$master = Get-ChildItem -LiteralPath [比較元ディレクトリ] -Recurse -File | Sort-Object{$_.LastWriteTime}
$work = Get-ChildItem -LiteralPath [比較先ディレクトリ] -Recurse -File | Sort-Object{$_.FullName}
@(Compare-Object (Get-Content -Encoding Byte $master.FullName) (Get-Content -Encoding Byte $work.FullName) -PassThru)
@(Compare-Object -Property Hash (Get-FileHash $master.FullName) (Get-FileHash $work.FullName) -PassThru)
■ディレクトリ構成(比較元と比較先で同一)
dir1
└─dir2
└─dir3
├─PG1
│ file1.txt
│ file2.txt
│ file3.txt
│
└─PG2
修正前.xlsx
追加ですみませんが、もう1点質問をさせてください。(先ほどの質問は、当疑問からの派生でした。)
■前提事項
比較元と比較先でソート順を変えてdiffを取った場合、バイナリによる比較とハッシュ値による比較では結果が異なります。
具体的に申し上げますと、下記ディレクトリ構成の「file1.txt」を異なる内容にした場合、
バイナリ比較では、比較元の「修正前.xlsx」と比較先の「file1.txt」で差分を出力します。(ディレクトリの違いによるアンマッチを出力する。)
ハッシュ値の比較では、比較元の「file1.txt」と比較先の「file1.txt」で差分を出力します。(同ディレクトリ配下のアンマッチを出力する。)
■質問
なぜハッシュ値による比較では、比較元と比較先でソート順が違うのに同ディレクトリの差分のみを出力できるのか。(データ型の違いにヒントがあるのかなと思っていますが、解明まで至っておりません。)
■コード
$master = Get-ChildItem -LiteralPath [比較元ディレクトリ] -Recurse -File | Sort-Object{$_.LastWriteTime}
$work = Get-ChildItem -LiteralPath [比較先ディレクトリ] -Recurse -File | Sort-Object{$_.FullName}
@(Compare-Object (Get-Content -Encoding Byte $master.FullName) (Get-Content -Encoding Byte $work.FullName) -PassThru)
@(Compare-Object -Property Hash (Get-FileHash $master.FullName) (Get-FileHash $work.FullName) -PassThru)
■ディレクトリ構成(比較元と比較先で同一)
dir1
└─dir2
└─dir3
├─PG1
│ file1.txt
│ file2.txt
│ file3.txt
│
└─PG2
修正前.xlsx
936デフォルトの名無しさん
2022/01/21(金) 22:50:11.95ID:Q8HlpjEI 長文になりすみませんでした。
ディレクトリ構成が崩れてしまいましたが、以下の通りです。
dir1\dir2\dir3\PG1\file*.txt
dir1\dir2\dir3\PG2\修正前.xlsx
別の場所で質問すべきということでしたら、その旨をお伝えください。
当スレに相応しくないようでしたら無視頂いて構いません。申し訳ございませんでした。
ディレクトリ構成が崩れてしまいましたが、以下の通りです。
dir1\dir2\dir3\PG1\file*.txt
dir1\dir2\dir3\PG2\修正前.xlsx
別の場所で質問すべきということでしたら、その旨をお伝えください。
当スレに相応しくないようでしたら無視頂いて構いません。申し訳ございませんでした。
937デフォルトの名無しさん
2022/01/21(金) 22:51:59.59ID:2Ya+eSMz 例えば、ソード結果が異なる、1,2,3 と、3,2,1 を比べれば、2しか一致しない
938デフォルトの名無しさん
2022/01/22(土) 18:26:51.31ID:wDrU8P/z >>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行ずつ処理する
if row[ 0 ] == csv_ary[ 0 ]
( 0...csv_ary.length ).each do |idx|
row[ idx ] = csv_ary[ idx ] # すべての列を差し替える
end
end
end
入力ファイル・input.csv
A001,,
B,1,2
A001,1,2
出力。A001で始まる、2行が置換された
A001,"あ,い
う'え""お",123
B,1,2
A001,"あ,い
う'え""お",123
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行ずつ処理する
if row[ 0 ] == csv_ary[ 0 ]
( 0...csv_ary.length ).each do |idx|
row[ idx ] = csv_ary[ idx ] # すべての列を差し替える
end
end
end
入力ファイル・input.csv
A001,,
B,1,2
A001,1,2
出力。A001で始まる、2行が置換された
A001,"あ,い
う'え""お",123
B,1,2
A001,"あ,い
う'え""お",123
939デフォルトの名無しさん
2022/01/22(土) 18:35:03.63ID:95Wn62Jb キチガイが来た
940デフォルトの名無しさん
2022/01/22(土) 18:54:41.80ID:MgA+2TRu キチガイは見えない
941デフォルトの名無しさん
2022/01/22(土) 19:21:27.37ID:kAQ/cYNL 目的とやってることがとっちらかってるな
なんで比較するのにLastWriteTimeでソートしてんの
なんで比較するのにLastWriteTimeでソートしてんの
942デフォルトの名無しさん
2022/01/26(水) 20:55:59.87ID:wcWyeiko https://i.imgur.com/uWA4d1c.png
タスクマネージャーから手動で子プロセスだけ終了させることはできるけど
PowerShellでやるには Get-Process -Name explorer のあと
どうやって子プロセスのPIDを取得すればいいでしょうか?教えてください
タスクマネージャーから手動で子プロセスだけ終了させることはできるけど
PowerShellでやるには Get-Process -Name explorer のあと
どうやって子プロセスのPIDを取得すればいいでしょうか?教えてください
943デフォルトの名無しさん
2022/01/26(水) 22:28:49.77ID:KYTViaCV944デフォルトの名無しさん
2022/01/26(水) 23:22:40.50ID:z4xHZvF2 最近PowerShell使い始めたんだけど
大きなシステムを作るとき、メインと複数のサブルーチンとかも基本1つのファイルで完結させるのか?それともファイルを何個も分けるのか?
どっちだとしても可読性下がる気がする
大きなシステムを作るとき、メインと複数のサブルーチンとかも基本1つのファイルで完結させるのか?それともファイルを何個も分けるのか?
どっちだとしても可読性下がる気がする
945デフォルトの名無しさん
2022/01/26(水) 23:29:53.21ID:z4xHZvF2 PowerShell ISEでスクリプトウィンドウは何で左側に表示できないんだろ
左側のほうが俺はやりやすいわ
左側のほうが俺はやりやすいわ
946デフォルトの名無しさん
2022/01/26(水) 23:54:26.65ID:BYfIsc0u >>945
Microsoftはpowershell開発にはvscodeの方がおすすめだと言ってるよ
https://docs.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/using-vscode?view=powershell-7.2
Microsoftはpowershell開発にはvscodeの方がおすすめだと言ってるよ
https://docs.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/using-vscode?view=powershell-7.2
947デフォルトの名無しさん
2022/01/27(木) 02:33:22.29ID:sf3Kg0Os >>943
ありがとうございます。これで試してみます
ありがとうございます。これで試してみます
948デフォルトの名無しさん
2022/01/27(木) 08:04:44.84ID:EosWc+ux >>944
そもそも大きなシステムをPowerShellでは作らない
そもそも大きなシステムをPowerShellでは作らない
949デフォルトの名無しさん
2022/01/27(木) 09:23:06.79ID:p8Bx/YYe950デフォルトの名無しさん
2022/01/27(木) 10:21:25.25ID:tOnT0cfV powershellで大きめのものを組むならC#で組むときみたいな箱庭を作る発想は完全に捨てて、UNIX的な思考に切り替えるべき
完成度の高い単独で機能するコマンドを作って組み合わせていくようにすることで、ドメインを拡大させない
コマンド同士の細かい相互作用を作り込んではいけない
完成度の高い単独で機能するコマンドを作って組み合わせていくようにすることで、ドメインを拡大させない
コマンド同士の細かい相互作用を作り込んではいけない
951デフォルトの名無しさん
2022/01/29(土) 09:01:01.42ID:oEiS6XOx Unix コンポーネント: 小さいことは美徳である
https://web.archive.org/web/20080709051701/http://www.os-omicron.org/~takano/private/trans/bongo-bong_j.html#:~:text=%E3%82%92%E6%8E%A2%E3%81%9B)-,Unix%20%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88,-%3A%20%E5%B0%8F%E3%81%95%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF
https://web.archive.org/web/20080709051701/http://www.os-omicron.org/~takano/private/trans/bongo-bong_j.html#:~:text=%E3%82%92%E6%8E%A2%E3%81%9B)-,Unix%20%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88,-%3A%20%E5%B0%8F%E3%81%95%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF
952デフォルトの名無しさん
2022/01/30(日) 01:37:19.06ID:ZZo5v4fB >>951
ちょっと読んでみたらIEのCOMベースってすばらしいよね真似しよが結論になってて時代を感じた
さてBonoboはUnix界でうまくいったのでしょうか
https://en.wikipedia.org/wiki/Bonobo_(GNOME)
ちょっと読んでみたらIEのCOMベースってすばらしいよね真似しよが結論になってて時代を感じた
さてBonoboはUnix界でうまくいったのでしょうか
https://en.wikipedia.org/wiki/Bonobo_(GNOME)
953デフォルトの名無しさん
2022/02/02(水) 01:43:07.06ID:eLtuTeT2 Get-Contentで取得したテキストファイルが
処理終わっても自分自身で開いていることが多い
別の処理で終わったこのテキストファイルを削除しようとすると
自分で開いているので削除出来ないでエラーが出る
処理が終わっても閉じない原因か対処法はないでしょうか
処理終わっても自分自身で開いていることが多い
別の処理で終わったこのテキストファイルを削除しようとすると
自分で開いているので削除出来ないでエラーが出る
処理が終わっても閉じない原因か対処法はないでしょうか
954デフォルトの名無しさん
2022/02/02(水) 02:18:48.08ID:DC2596zT >>953
明示的にオブジェクトを破棄する。
明示的にオブジェクトを破棄する。
955デフォルトの名無しさん
2022/02/02(水) 07:51:22.34ID:eLtuTeT2956デフォルトの名無しさん
2022/02/02(水) 23:39:08.14ID:eLtuTeT2 すみません、オブジェクト破棄を以下のように解釈していたのですが
そうなるとRemobe-Itemでファイルを削除するとき、変数に入れずにフルパスで指定するのか?と思ったけどやっぱり違うと思うし
改めて変数に入れるのも多分違うと思い、すっきりしない状態です。
多分破棄するの意味を間違って、こちらが解釈してると思うのですが、この場合どう書いてますでしょうか?
$lines = (Get-content $FilePath-as [string[]]
Remove-Variable FilePath
Remobe-Item $FilePath
そうなるとRemobe-Itemでファイルを削除するとき、変数に入れずにフルパスで指定するのか?と思ったけどやっぱり違うと思うし
改めて変数に入れるのも多分違うと思い、すっきりしない状態です。
多分破棄するの意味を間違って、こちらが解釈してると思うのですが、この場合どう書いてますでしょうか?
$lines = (Get-content $FilePath-as [string[]]
Remove-Variable FilePath
Remobe-Item $FilePath
957デフォルトの名無しさん
2022/02/03(木) 07:21:37.66ID:OMU2Br15 remove variableであってるとおもう。
GCに回収させるとより安全。
$nullを代入でもいけるかな
GCに回収させるとより安全。
$nullを代入でもいけるかな
958デフォルトの名無しさん
2022/02/03(木) 07:41:16.46ID:OMU2Br15 ん?ファイル開いているのはlinesじゃないか?
linesを破棄しよう
linesを破棄しよう
959デフォルトの名無しさん
2022/02/03(木) 16:23:23.37ID:VbK4RRek gcでファイル開きっぱなしなんてないと思うけど
削除できないってパターンはありそうだな
削除できるまで無限ループでいいんじゃね
削除できないってパターンはありそうだな
削除できるまで無限ループでいいんじゃね
960デフォルトの名無しさん
2022/02/03(木) 20:01:53.14ID:gI5tR0VQ Get-content終わってもファイル開きっぱなしなんてあるの?
物凄いデカいファイルだったらあり得るのか?
物凄いデカいファイルだったらあり得るのか?
961デフォルトの名無しさん
2022/02/03(木) 23:08:22.41ID:mIHwLL5k Get-content(cat)はcat.exeと違うバッファリング方法だからユーザーから見れば開きっぱなしに感じる場合もあるかも
962デフォルトの名無しさん
2022/02/06(日) 00:04:34.70ID:D4g/hsrG 同じ変数を使い回すのにこだわっている阿呆だな
963デフォルトの名無しさん
2022/02/06(日) 01:29:48.39ID:2aKrrA/x ___ ━┓ ___ ━┓
/ ― \ ┏┛/ ―\ ┏┛
/ (●) \ヽ ・. /ノ (●)\ ・
/ (⌒ (●) /. | (●) ⌒)\
/  ̄ヽ__) / | (__ノ ̄ |
/´ ___/ \ /
| \ \ _ノ
| | /´ `\
--------------------------------------
このスレはあなたにとって役にたちましたか?
○ とても役にたった
○ 役にたった
○ どちらともいえない
○ 役にたたなかった
● 全く役にたたなかった
/ ― \ ┏┛/ ―\ ┏┛
/ (●) \ヽ ・. /ノ (●)\ ・
/ (⌒ (●) /. | (●) ⌒)\
/  ̄ヽ__) / | (__ノ ̄ |
/´ ___/ \ /
| \ \ _ノ
| | /´ `\
--------------------------------------
このスレはあなたにとって役にたちましたか?
○ とても役にたった
○ 役にたった
○ どちらともいえない
○ 役にたたなかった
● 全く役にたたなかった
964デフォルトの名無しさん
2022/02/06(日) 14:34:16.42ID:m5li3VVD そもそもファイルを削除できなかったことが無い
965デフォルトの名無しさん
2022/02/07(月) 07:35:36.67ID:83JX6KKe 削除できないのは他の要因で起こり得るから何とも
966デフォルトの名無しさん
2022/02/09(水) 12:21:56.14ID:3KsDo8lO gcに-waitとか-tailとか付けると開きっぱなしになるけど、明示的に離せってスイッチは無かったっけ?
付けなけりゃ閉じてるものかと思ってた
付けなけりゃ閉じてるものかと思ってた
967デフォルトの名無しさん
2022/02/09(水) 23:40:08.91ID:WBXgVt22 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)
}
$label1 = [System.Windows.Forms.Label]@{
location = New-Object System.Drawing.point(10,30)
size = New-Object system.drawing.size(250,20)
}
$form.Controls.Add($label1)
$form.Controls.Add($textbox1)
$textbox1.leave
({
$label1.text = "テスト"
})
$result = $form.ShowDialog()
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)
}
$label1 = [System.Windows.Forms.Label]@{
location = New-Object System.Drawing.point(10,30)
size = New-Object system.drawing.size(250,20)
}
$form.Controls.Add($label1)
$form.Controls.Add($textbox1)
$textbox1.leave
({
$label1.text = "テスト"
})
$result = $form.ShowDialog()
968デフォルトの名無しさん
2022/02/10(木) 19:36:03.95ID:/6XFwXXi >>967
>$textbox1.leave
ここで行を分けてしまうとpowershellのパーサは一旦解釈を終えてしまうからイベントハンドラとして登録できてない。
それとイベンントハンドラの名前は頭にadd_〜を付ける決まりになってる(なぜかは知らない)
従って下のように記述する。
$textbox1.add_leave({
$label1.text = "テスト"
})
それとテキストボックスだけではフォーカスの移動が確認できないから
ボタンとか適当なフォーカスを持つコントロールを配置しておく
$button1 = [System.Windows.Forms.Button]@{ Location="10,50"; Size="80,20"; Text="ボタン"; FlatStyle="popup"}
$form.Controls.Add($button1)
$textbox1.add_leave({ $label1.text = "leave" })
$textbox1.add_enter({ $label1.text = "enter" })
$label1.text = "テスト"
$result = $form.ShowDialog()
>$textbox1.leave
ここで行を分けてしまうとpowershellのパーサは一旦解釈を終えてしまうからイベントハンドラとして登録できてない。
それとイベンントハンドラの名前は頭にadd_〜を付ける決まりになってる(なぜかは知らない)
従って下のように記述する。
$textbox1.add_leave({
$label1.text = "テスト"
})
それとテキストボックスだけではフォーカスの移動が確認できないから
ボタンとか適当なフォーカスを持つコントロールを配置しておく
$button1 = [System.Windows.Forms.Button]@{ Location="10,50"; Size="80,20"; Text="ボタン"; FlatStyle="popup"}
$form.Controls.Add($button1)
$textbox1.add_leave({ $label1.text = "leave" })
$textbox1.add_enter({ $label1.text = "enter" })
$label1.text = "テスト"
$result = $form.ShowDialog()
969デフォルトの名無しさん
2022/02/11(金) 00:44:40.14ID:xWKZ1gm4970デフォルトの名無しさん
2022/02/12(土) 03:20:20.24ID:NDMck+ft ネタだろ
971デフォルトの名無しさん
2022/02/12(土) 16:09:12.24ID:8ted8XK+ 入力コントロールがフォーカスを失ったという、イベントは無いの?
972デフォルトの名無しさん
2022/02/12(土) 21:15:19.39ID:JXSQUy8V973デフォルトの名無しさん
2022/02/13(日) 17:33:00.74ID:zeKJdxT+ よろしくお願いします。
現在開いているexcelのアクティブブックを捕まる方法ないでしょうか??
例えば、アクティブブックのアクティブシートにのってるグラフの軸を全て変更したい時に、
excelからpowershell ISEに画面を変えて操作したいのです。
現在開いているexcelのアクティブブックを捕まる方法ないでしょうか??
例えば、アクティブブックのアクティブシートにのってるグラフの軸を全て変更したい時に、
excelからpowershell ISEに画面を変えて操作したいのです。
974デフォルトの名無しさん
2022/02/13(日) 17:40:39.22ID:0qwas07F >>973
Pythonおすすめ
Pythonおすすめ
975デフォルトの名無しさん
2022/02/13(日) 17:44:20.75ID:zeKJdxT+ >974
ありがとうございます。
xlwingsだとアクティブブックつかめるけど、グラフの細かな設定がない
openpyxlだとアクティブブックをつかめなさそう、
でpowershellでできないかな、と。
ありがとうございます。
xlwingsだとアクティブブックつかめるけど、グラフの細かな設定がない
openpyxlだとアクティブブックをつかめなさそう、
でpowershellでできないかな、と。
976デフォルトの名無しさん
2022/02/13(日) 17:47:29.32ID:0qwas07F >>975
グラフもPythonで描けばいい
グラフもPythonで描けばいい
977デフォルトの名無しさん
2022/02/13(日) 17:55:51.10ID:lPImUKwL pandasに無いような高等な統計関数が必要でないかぎりpythonで完結したほうが楽なんじゃね
978デフォルトの名無しさん
2022/02/13(日) 18:02:06.97ID:zeKJdxT+ ありがとうございます。
まぁ、会社でみながexcel使ってるので、、こんな質問をしている次第です、、
まぁ、会社でみながexcel使ってるので、、こんな質問をしている次第です、、
979デフォルトの名無しさん
2022/02/13(日) 18:06:52.02ID:PEAS4D91 シートの名前やらインデックスがpwshでわかれば、その情報をpythonに渡してmatplotlibでtemp.jpgとかで吐き出したグラフをまたpwshで貼れば行ける気がする
980デフォルトの名無しさん
2022/02/13(日) 18:34:35.90ID:Z5jSGqeY ActiveWorkBookプロパティで捕まえられるでしょ
VBAから呼んでもPowershellから呼んでもPythonから呼んでもいい
VBAから呼んでもPowershellから呼んでもPythonから呼んでもいい
981デフォルトの名無しさん
2022/02/13(日) 18:37:17.22ID:LaQ04ZoE982デフォルトの名無しさん
2022/02/13(日) 18:41:38.57ID:LaQ04ZoE 余計なお世話ついでに
ISEはもう終わったプロジェクトなので
後継のVSCode+Powershellプラグインに乗り換えるのがオススメ
ISEはもう終わったプロジェクトなので
後継のVSCode+Powershellプラグインに乗り換えるのがオススメ
983デフォルトの名無しさん
2022/02/13(日) 20:32:19.65ID:zeKJdxT+ 色々アドバイスありがとうございました。
それもそだな、と下記でいけました。お騒がせいたしました
$Excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
$Excel.ActiveWorkbook.ActiveSheet.name
それもそだな、と下記でいけました。お騒がせいたしました
$Excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
$Excel.ActiveWorkbook.ActiveSheet.name
984デフォルトの名無しさん
2022/02/21(月) 13:09:23.89ID:jIppNsU3 教えて下さい
powershellで再帰処理をしたいんですが、
"The script failed due to call depth overflow"
と言うエラーで最後まで処理してくれません。
再帰回数のスタックオーバーフローで
トランポリン処理が有効とまでは調べたのですが
上手く理解出来ず
↓↓
https://qiita.com/yumura_s/items/8a44a70e3e11c4eb1464
詳しい方、よろしくお願いします
powershellで再帰処理をしたいんですが、
"The script failed due to call depth overflow"
と言うエラーで最後まで処理してくれません。
再帰回数のスタックオーバーフローで
トランポリン処理が有効とまでは調べたのですが
上手く理解出来ず
↓↓
https://qiita.com/yumura_s/items/8a44a70e3e11c4eb1464
詳しい方、よろしくお願いします
985デフォルトの名無しさん
2022/02/21(月) 13:24:10.95ID:Vv5lB4cH そのメッセージの言わんとするところは、すげー効率悪いので再帰で書くな
というアドバイスです
というアドバイスです
986デフォルトの名無しさん
2022/02/21(月) 13:39:08.84ID:jIppNsU3 対象データが階層構造になっていて、
網羅的に処理したいんですが、うーん
網羅的に処理したいんですが、うーん
987デフォルトの名無しさん
2022/02/21(月) 14:08:41.32ID:Vv5lB4cH 500階層あるデータ構造はさすがに扱ったことがない…
そもそも特定の枝が底なし沼なのだとしたら、それでも延々と潜り続ける、というのは本当に意図した挙動なのか?
底なし沼が時々存在して、それに興味が無いのならば素直な余再帰で書ける幅優先探索を勧める
深さ優先で頑張りたいなら、スタックとしてコールスタックを流用するのでなくて、明示的にスタックにpush/popすると少しは経済的
特定の深さに達したら諦める決め打ちもあり
トランポリンで遅延評価を積む利点は、入力データ構造を処理するというより、需要に応じて任意の深さのデータを出力できるという点にあるので、悪手かと
そもそも特定の枝が底なし沼なのだとしたら、それでも延々と潜り続ける、というのは本当に意図した挙動なのか?
底なし沼が時々存在して、それに興味が無いのならば素直な余再帰で書ける幅優先探索を勧める
深さ優先で頑張りたいなら、スタックとしてコールスタックを流用するのでなくて、明示的にスタックにpush/popすると少しは経済的
特定の深さに達したら諦める決め打ちもあり
トランポリンで遅延評価を積む利点は、入力データ構造を処理するというより、需要に応じて任意の深さのデータを出力できるという点にあるので、悪手かと
988デフォルトの名無しさん
2022/02/21(月) 14:17:30.40ID:+uSXi1Gh トランポリン?のやってることはSchemeで言うCPS相当だね。まずCPSを理解しないと何が起きてるのか判らないと思う。
であるならば理屈ではトランポリンなんて変な事しなくてもスクリプトブロックをクロージャにするやつだけで再帰をクロージャの連鎖呼び出しに置き換えることはできると思う。
であるならば理屈ではトランポリンなんて変な事しなくてもスクリプトブロックをクロージャにするやつだけで再帰をクロージャの連鎖呼び出しに置き換えることはできると思う。
989デフォルトの名無しさん
2022/02/21(月) 14:38:31.70ID:Vv5lB4cH (実装は暗黙のCPSかもしれないけど) schemeだとdelay/forceそのまんまじゃね
イテレータとかストリームとか色んな言い方があるけど、何にせよ処理すべきデータがまだ存在していないような時にのみ有効
もし処理対象のデータが既に存在しているのなら、単に無駄な計算を増やすだけだよ
イテレータとかストリームとか色んな言い方があるけど、何にせよ処理すべきデータがまだ存在していないような時にのみ有効
もし処理対象のデータが既に存在しているのなら、単に無駄な計算を増やすだけだよ
990デフォルトの名無しさん
2022/02/21(月) 14:43:51.48ID:+uSXi1Gh 再帰処理したいつってる本人が理解できないと意味ないからな
再帰が軽い言語で処理すりゃいいんじゃねーの
再帰が軽い言語で処理すりゃいいんじゃねーの
991デフォルトの名無しさん
2022/02/21(月) 15:22:36.66ID:002PyiUh コールスタック制限してない言語の方が珍しいと思うがね、スクリプト言語なら500-1000くらいが標準的か
とりあえず言語によって課される安全装置としてのコールスタック制限を回避したいのなら、>>984が求めている資料はこれだと思うhttps://www.python.org/doc/essays/graphs/(pwshじゃなくてすまん)
生リスト(配列)を使ってもいいけど、現実的な時間で可能なのか怪しい程の難問なので、これの出番かも
https://docs.microsoft.com/en-us/dotnet/api/system.collections.stack?view=net-6.0
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.stack-1?view=net-6.0
とりあえず言語によって課される安全装置としてのコールスタック制限を回避したいのなら、>>984が求めている資料はこれだと思うhttps://www.python.org/doc/essays/graphs/(pwshじゃなくてすまん)
生リスト(配列)を使ってもいいけど、現実的な時間で可能なのか怪しい程の難問なので、これの出番かも
https://docs.microsoft.com/en-us/dotnet/api/system.collections.stack?view=net-6.0
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.stack-1?view=net-6.0
992デフォルトの名無しさん
2022/02/21(月) 15:34:29.48ID:002PyiUh ごめんdfsだわこれ
全要素網羅したい、という要求だからどっちでもいいと思うけど
queueはこれ使うと配列よりかなり速いはず
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.queue-1?view=net-6.0
全要素網羅したい、という要求だからどっちでもいいと思うけど
queueはこれ使うと配列よりかなり速いはず
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.queue-1?view=net-6.0
993デフォルトの名無しさん
2022/02/21(月) 16:03:11.06ID:jIppNsU3 すみません、めちゃくちゃ難しいっす
なんとなくリンク先のスクリプトが
動かせればと思ったのですが…
やはり悪手なんですかね
なんとなくリンク先のスクリプトが
動かせればと思ったのですが…
やはり悪手なんですかね
994デフォルトの名無しさん
2022/02/21(月) 16:22:43.74ID:Vv5lB4cH データのサンプル、期待する出力を書いてくれれば具体的なコード提案できるかも(たぶん)
995デフォルトの名無しさん
2022/02/21(月) 18:40:11.40ID:jIppNsU3 色々回答してありがとうございました
結局再帰を使わずループで代用する
こととしました
トランポリンはもう少し
勉強してみたいと思います
結局再帰を使わずループで代用する
こととしました
トランポリンはもう少し
勉強してみたいと思います
996デフォルトの名無しさん
2022/02/21(月) 20:07:10.97ID:+uSXi1Gh powershell内でC#埋め込めばいいんじゃないの
あいにくpowershellのクロージャはダイナミックスコープで使えたもんじゃないのでC#のサンプルだけ
Add-Type -TypeDefinition @"
using System;
public static class test {
static int fib(int n) { //普通の再帰
if (n < 2) {
return n;
} else {
return fib(n - 1) + fib(n - 2);
}
}
static void fibcps(int n, Action<int> cont) { // CPS(継続渡しスタイル)
if (n < 2) {
cont(n);
} else {
fibcps(n - 1, n1 =>
fibcps(n - 2, n2 =>
cont(n1 + n2)));
}
}
public static void recurse() {
for (var n = 0; n <= 20; ++n) {
Console.WriteLine("fib {0}: {1}",n,fib(n)); //普通の再帰
fibcps(n, r => Console.WriteLine("fibcps {0}: {1}",n,r)); // CPS(継続渡しスタイル)
}
}
}
"@
[test]::recurse()
あいにくpowershellのクロージャはダイナミックスコープで使えたもんじゃないのでC#のサンプルだけ
Add-Type -TypeDefinition @"
using System;
public static class test {
static int fib(int n) { //普通の再帰
if (n < 2) {
return n;
} else {
return fib(n - 1) + fib(n - 2);
}
}
static void fibcps(int n, Action<int> cont) { // CPS(継続渡しスタイル)
if (n < 2) {
cont(n);
} else {
fibcps(n - 1, n1 =>
fibcps(n - 2, n2 =>
cont(n1 + n2)));
}
}
public static void recurse() {
for (var n = 0; n <= 20; ++n) {
Console.WriteLine("fib {0}: {1}",n,fib(n)); //普通の再帰
fibcps(n, r => Console.WriteLine("fibcps {0}: {1}",n,r)); // CPS(継続渡しスタイル)
}
}
}
"@
[test]::recurse()
997デフォルトの名無しさん
2022/02/21(月) 21:16:04.35ID:+uSXi1Gh 一応powershell版。ただしpowershell関数は末尾再帰の最適化をしてくれないためCPSで書いてもただの効率悪い再帰にしかならない。
上のC#も32bit環境だと末尾再帰の最適化が働かないため64bit環境でのみ有効なコード。
function fib($n) {
if ($n -lt 2) {
$n
} else {
(fib ($n - 1)) + (fib ($n - 2))
}
}
function fibcps($n, $cont) {
if ($n -lt 2) {
& $cont $n
} else {
fibcps ($n - 1) {param($fib1); $cont = $cont
fibcps ($n - 2) {param($fib2);
& $cont ($fib1 + $fib2) }.GetNewClosure()}.GetNewClosure()
}
}
1..10 | %{ $r=fib $_; "fib($_):$r" }
1..10 | %{ fibcps $_ {param([int]$r) "fibcps($_):$r"}.GetNewClosure() }
上のC#も32bit環境だと末尾再帰の最適化が働かないため64bit環境でのみ有効なコード。
function fib($n) {
if ($n -lt 2) {
$n
} else {
(fib ($n - 1)) + (fib ($n - 2))
}
}
function fibcps($n, $cont) {
if ($n -lt 2) {
& $cont $n
} else {
fibcps ($n - 1) {param($fib1); $cont = $cont
fibcps ($n - 2) {param($fib2);
& $cont ($fib1 + $fib2) }.GetNewClosure()}.GetNewClosure()
}
}
1..10 | %{ $r=fib $_; "fib($_):$r" }
1..10 | %{ fibcps $_ {param([int]$r) "fibcps($_):$r"}.GetNewClosure() }
998デフォルトの名無しさん
2022/02/21(月) 21:38:24.93ID:MnJW8OUO 変なやり方を広めようとするやつの典型例
999デフォルトの名無しさん
2022/02/22(火) 00:12:46.08ID:wYlI3N7E あえて混乱させようとしてるようにしか思えない
仮に末尾最適化でシリアルなコードを得たとして、まさかそれが木の探索に有利だとでも?
呼び出しをstart-(thread)jobで行ってスレッド/プロセスをばら撒けば済む話じゃないの
コールスタック溢れるような計算であればあるほど、スケーラブルで高速
仮に末尾最適化でシリアルなコードを得たとして、まさかそれが木の探索に有利だとでも?
呼び出しをstart-(thread)jobで行ってスレッド/プロセスをばら撒けば済む話じゃないの
コールスタック溢れるような計算であればあるほど、スケーラブルで高速
1000デフォルトの名無しさん
2022/02/22(火) 02:35:33.30ID:LHZaRsEg スタックを使わない再帰呼び出しならスタックは溢れないなw
個々の再帰呼び出しをStart-ThreadJob/Wait/Receiveで機械的に置き換えればとりあえず動く雛形にはなる
代わりにプロセス/スレッドが溢れるけど、スレッドなら単に順番待ちに入るだけで悪さはしない
個々のワーカーが自身の子をwaitしている限りはオーバーヘッドでしかないので、メインプロセスを設けStart時に-StreamingHostで直接報告を挙げさせるべき
長く走ってる枝を殺す等、最適化の可能性は大
メモ化や大域脱出程度で済むような問題には薦めない
個々の再帰呼び出しをStart-ThreadJob/Wait/Receiveで機械的に置き換えればとりあえず動く雛形にはなる
代わりにプロセス/スレッドが溢れるけど、スレッドなら単に順番待ちに入るだけで悪さはしない
個々のワーカーが自身の子をwaitしている限りはオーバーヘッドでしかないので、メインプロセスを設けStart時に-StreamingHostで直接報告を挙げさせるべき
長く走ってる枝を殺す等、最適化の可能性は大
メモ化や大域脱出程度で済むような問題には薦めない
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 341日 2時間 5分 41秒
新しいスレッドを立ててください。
life time: 341日 2時間 5分 41秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【NHK】10月からのネット受信規約素案を発表。「解約は受信機廃止の場合と同様に規定」 [香味焙煎★]
- 「ダウンタウン」芸能活動復帰へ 今夏“新機軸”独自配信サービス開設目指す 吉本興業認める [おっさん友の会★]
- 永野芽郁の不倫報道火消しへ 永野の自宅マンションには「母親がいた」 永野、田中、キムの所属事務所発表★3 [ネギうどん★]
- 不倫疑惑の永野芽郁、母親が自宅にいる話を“文春砲”の2日前にラジオで連発 [ネギうどん★]
- 中居正広、水面下で反撃の準備か 第三者委員会の報告書での“性暴力者”認定に強い抵抗感、自らの口で真相を明らかにする考えも ★3 [Ailuropoda melanoleuca★]
- トランプ米大統領 「中国を債務不履行にすべき」 [お断り★]
- ♪「万博が雇用を産んでしまうwwww大阪だけバブルに突入」 [834922174]
- 【悲報】万博デザイナー「もし社会に不平不満を持ってても匿名で愚痴るな😤お前らはロックじゃない!」 [359965264]
- 吉本興業、去年既にダウンタウンのために動画制作ファンドを立ち上げ国内外の企業から数十億を集めていた… [731544683]
- 【速報】吉本興業、ダウンタウン復帰を正式に発表 [333919576]
- 【画像】万博、こち亀の予想通りになる [834922174]
- 【朗報】暇空茜の被害者、これを機に反転攻勢に出るwwwwwwwwwwww [599152272]