X



【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0655デフォルトの名無しさん
垢版 |
2018/04/01(日) 11:44:34.33ID:XEaAmQBZ
エディタすら選べない様な残念な環境で頑張るのがPSですから
ってのは置いといてadd-typeで強引に解決するのは割と好き
0658デフォルトの名無しさん
垢版 |
2018/04/01(日) 12:23:46.08ID:P1fWuhY2
つうかこれでええやんwwww
誰だよC#とか言ったアホwwwww

function Update-LastTest ([IO.FileInfo]$file) {
$s = Get-Content $file | Out-String
$s = ($s.TrimEnd() -replace '[^\n]*てすと$', '') + 'てすと'
$s | Out-File $file
}

Update-LastTest (Get-ChildItem ./test.txt)
0659639
垢版 |
2018/04/01(日) 12:23:50.08ID:y3W5ZkrO
何言われようと、めげずに
どうでしゃろ
$list=Get-Content test.txt
$text="てすと"
foreach($line in $list){
$newline=$line
if($line.length -gt 2){
$str=$line.Substring($line.length-3)
if($str -eq $text){ $newline=$str}
else{$newline=$line}
}
$newline
}
if($str -ne $text){$text}
0660639
垢版 |
2018/04/01(日) 12:29:46.66ID:y3W5ZkrO
>>658
てすとしてないけど、すばらしそう
0661639
垢版 |
2018/04/01(日) 12:38:23.68ID:y3W5ZkrO
>>658
あれ?
要求されてる仕様の理解が私とちがうな
どっちだろう?
0662639
垢版 |
2018/04/01(日) 12:42:58.03ID:y3W5ZkrO
ABCDてすと => てすと
XYX123 => XYX123
てすとのてすと => てすと
てすとのabc => てすとのabc

みたいな要望じゃないかな?
0663デフォルトの名無しさん
垢版 |
2018/04/01(日) 12:54:30.97ID:GlQ4Mmqm
2回実行したら全部の行がてすとになって区別付かなくなるけどそれでいい?
0664デフォルトの名無しさん
垢版 |
2018/04/01(日) 12:56:34.68ID:QUrQa6Zt
>>662
>>632の質問投げた本人ですけど最後はてすとでいいです
つまり
ABCDてすと => てすと
XYX123 => XYX123
てすとのてすと => てすと
てすとのabc => てすと
空行 => なにもしない
0665デフォルトの名無しさん
垢版 |
2018/04/01(日) 12:59:57.46ID:QUrQa6Zt
>>664に追記すると最後"だけ"を置換したいんです
途中に"〇〇てすと〇〇"
みたいな感じでてすとってワードが含まれていてもそれは無視したいんです
0666639
垢版 |
2018/04/01(日) 13:00:29.09ID:y3W5ZkrO
確認ですが

てすとのabc => てすと  

これあってます?
これだと単に文字列 "てすと" が含まれていたら "てすと" と
出力するように思うんですが。
0667デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:02:37.55ID:QUrQa6Zt
>>666
はいそれで良いです
0669デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:13:00.52ID:QUrQa6Zt
>>632
ごめんこれ質問が悪かったです
最終行が"てすと"ならじゃなくて最後の空行じゃ無い文字列に"てすと"が含まれていなかったら"てすと"を追記したい
が正しい
0670デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:15:43.22ID:GlQ4Mmqm
だめだこりゃ
0671639
垢版 |
2018/04/01(日) 13:29:09.09ID:y3W5ZkrO
これはどうでしょう。
行に"てすと"という文字列が含まれていたら"てすと"だけを出力
含まれていなければ、そのまま出力
最後の行に"てすと"が含まれていなければ、その行はその出力し
つぎの行に"てすと"を追加
結果は$newlistに出力

function newfile{
param($text="てすと")
process{
if($_.ToString().Contains($text)){$newline=$text}
else{$newline=$_}
$newline
}
end{ if( -NOT $newline.Contains($text)){$text} }
}

$list=Get-Content ファイル指定
$newlist=$list|newfile
0672639
垢版 |
2018/04/01(日) 13:30:56.72ID:y3W5ZkrO
さいごに空の行もあり得るわけだ。<=これは入れていない
とするとそのはんていを1行追加するようだな。
0673デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:54:17.68ID:Huwl0iS3
これだから日本語の仕様書は役に立たないって言われるんだな
テストケースを10個ぐらい書いてくれないと伝わらないパターンだ
コーディングはそれから始めても遅くない
0674639
垢版 |
2018/04/01(日) 14:11:02.57ID:y3W5ZkrO
最後の空白行orNull行の判定もいれてみたんだけど

function newfile{
param($text="てすと")
process{
if($_.ToString().Contains($text)){$newline=$text}
else{$newline=$_}
$newline
}
#end{ if( -NOT $newline.Contains($text)){$text} }
end{ if(-NOT($newline.Contains($text) -or [string]::IsNullOrWhiteSpace($newline)) ){$text}}
}
$list=Get-Content 入力ファイル
$newlist=$list|newfile
0675639
垢版 |
2018/04/01(日) 14:12:35.94ID:y3W5ZkrO
あってるかな?
あとは >>658 の方が綺麗なのを書いてくれることを期待。
0676デフォルトの名無しさん
垢版 |
2018/04/01(日) 14:20:36.23ID:IR/E13YL
>>674
空行は置いといて、最終行以外のとこに”てすと”が入ってても書き換わってしまうが
ただそれが望んだ動作かもしれん
もう分からんw
0677639
垢版 |
2018/04/01(日) 14:51:08.96ID:y3W5ZkrO
>>676
"てすと"という文字列を含む行は、"てすと"という文字列に置き換える
そうですよ。
0678デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:08:33.93ID:IR/E13YL
>>677
>>665と矛盾してると思うが
"最後だけを置き換えたい" で行の最後か文章の最後か分からんが、
てすとのabc => てすと  
がOKなら行の最後じゃない、なら文章の最後だけって事じゃね?
なんか論理パズルやってる気になってきたなw
0679デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:17:38.93ID:D0kqpvo1
>>676
最後に出てくる"てすと"以外は"てすと"があっても置き変えたくないです
あくまで最後だけ置き換えてください
>>677
置き換えないでそのままでいいです
0680デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:19:24.07ID:D0kqpvo1
>>677
あー間違えた最後に出てくる"てすと"以外は"そのまま"でいいです
0681デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:23:08.10ID:IR/E13YL
>>679
あ、来た
それと最後の空行はどうなの?
@"
aaa
bbbてすと

"@
が元ソースだとして

@"
aaa
てすと

"@

@"
aaa
bbbてすと

てすと
"@

@"
aaa
てすと
"@
の3パターンあるが、どれ?
0682デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:31:18.80ID:D0kqpvo1
>>681
一番最初がいいですね


@"
aaa
てすと

"@
0684639
垢版 |
2018/04/01(日) 15:39:47.10ID:y3W5ZkrO
>>679
最後に出てくる"てすと"という意味ですが、したのようなとき
"てすと"を含む最後の行は5行目という意味ですか?

1行目 abmてすとxyz
2行目 1239xxxx
3行目 yyyyyてすと
4行目 xxxxyyてすとyy
5行目 てすとuuuu   <== "てすと"を含む最後の行
6行目 zzyyvv
7行目 練習123
0685デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:47:44.82ID:D0kqpvo1
>>684
その場合だと7行目を判断して"てすと"以外の文字列なので"てすと"を追記してください。
0686デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:51:05.88ID:IR/E13YL
>>684
君も読解力に問題あるぞw
途中の行は無視でしょ、「"てすと"を含む最後の行」なんて君しか言ってない
5行目はそのままで、8行目に"てすと"が加わるんでしょ
0687639
垢版 |
2018/04/01(日) 15:52:48.10ID:y3W5ZkrO
>>685
追記とは
8行目に"てすと"という文字列の1行ができるでよろしいですか?
0688デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:53:31.12ID:D0kqpvo1
>>687
はいその認識で間違いありません
0690デフォルトの名無しさん
垢版 |
2018/04/01(日) 16:05:52.05ID:QUrQa6Zt
>>689
語彙が足らなくてごめんなさい。
最後っていうのをなんて伝えていいのかよくわからなかった
最終行っていうのも違うし、最後の文字列が入ってる行って言えばよかったんかな…
0692デフォルトの名無しさん
垢版 |
2018/04/01(日) 16:11:53.66ID:QUrQa6Zt
>>691
空行っていうのもなんか曖昧というか例えばスペース一個あって改行したらそれも空行だし
0693639
垢版 |
2018/04/01(日) 16:21:25.05ID:y3W5ZkrO
>>692
それははっきりした方がいいと思うよ。
一番最後の行が、スペースとしたとき
スペースとは、空白文字がありうるのか、nullなのかなど。
0694デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:51:38.49ID:ih9TVGcf
>>688
ところであっちのスレと同一人物?
BATでも解決してたはずだけど、なんでまた同じ質問をこっちに?
0695デフォルトの名無しさん
垢版 |
2018/04/02(月) 01:08:53.03ID:4AdYvMWY
仕様があいまい

最後と言う言葉があいまい。
全体の文章の最後なのか、最終行を指すのか、どちらか分からないから

最終行だけがチェック対象なのか?
それとも、最終行以外も対象になるのか?
0696デフォルトの名無しさん
垢版 |
2018/04/02(月) 01:16:27.17ID:4AdYvMWY
>>632
>最終行が"てすと"じゃなかった場合は、"てすと"を追記したいです

これも、最終行が改行で終わっている場合と、終わっていない場合で、動作が変わる

abc\n → abc\nテスト
abc → abcテスト

上は、最終行の次の行に追加されるけど、
下は、最終行に追加される
0697デフォルトの名無しさん
垢版 |
2018/04/02(月) 10:47:05.22ID:qOetNhN3
$path = "Documents\hoge.txt"
$text = "てすと"
$file = @(Get-Content $path)

for($i = $file.count; $i -ge 0; $i--)
{
if($file[$i] -match "^\s*$")
{
continue
}

if($file[$i] -match ".*$($text).*")
{
$file[$i] = $text
} else {
$file[$i] += "`n" + $text
}

break
}

$file | Out-File $path

Powershell勉強中なんだけどこんな感じ?
0702デフォルトの名無しさん
垢版 |
2018/04/06(金) 06:46:32.07ID:lsq7GlrL
PSはマルチスレッド気軽に使えないの?
ググるとリモート、マルチプロセスとRunspaceのサンプルばっかり出てくるんだが
2.0だとTaskも無いからキビシイのかね
0703デフォルトの名無しさん
垢版 |
2018/04/06(金) 09:32:58.70ID:j6pN+emA
>>702
つかえるんじゃない?
どんな処理をしたいということなの。
0704デフォルトの名無しさん
垢版 |
2018/04/07(土) 08:02:18.06ID:qEuioEYI
いやーなんかねHttpListenerのBeginGetContextでクラッシュするんです
マルチスレッド対応してないのかなと
0705デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:09:59.62ID:q5Iu4RDV
マルチスレッドというより(マルチスレッドだけど)
それが非同期に対応しているかという話ね。
0706デフォルトの名無しさん
垢版 |
2018/04/07(土) 21:26:24.68ID:qEuioEYI
原因わかった
別スレッドだとrunspaceが無いからpowershellコードが動かんのだとさ
0708デフォルトの名無しさん
垢版 |
2018/04/07(土) 23:31:41.22ID:qEuioEYI
>>707
今日はそれを調べてた
GetContext使ってメインスレッドで同期的にコンテキストを受けて
ルーティング処理〜レスポンス閉じるまでをrunspaceでOneWay非同期処理するといい感じで動作してるっぽい
0711デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:41:59.07ID:T8IjF/fs
TrustedInstallerのままなのはOS不具合かな
最近こういうの放置でアップグレードしてくから困る
0712デフォルトの名無しさん
垢版 |
2018/04/27(金) 00:02:08.86ID:H5AR7ZMg
聞いてくれやおじさん
UIautomationとやらを探して2日たらし回しにされた
psのgui自動化ツールはこれでええのか
0713デフォルトの名無しさん
垢版 |
2018/05/03(木) 08:13:52.50ID:Fo+ItQuC
確かに探すの難しくなってるな

UI Automation PowerShell ExtensionsのDownload(再配布)
ttps://www.code-lab.net/?page_id=21648
0715デフォルトの名無しさん
垢版 |
2018/05/05(土) 08:53:20.47ID:GHjIUW8T
UIautomationって旧来技術ってことでWin10では
あらたなことは行わないんじゃないのかな。
たしかGUIがWPFだよね。
0716デフォルトの名無しさん
垢版 |
2018/05/09(水) 04:43:48.03ID:EuvUccmD
ISE
VSCode
Visual Studio 2017
でPowerShell開発やってみたけど一番快適にDebugできるのはVSCodeだった
0717デフォルトの名無しさん
垢版 |
2018/05/10(木) 12:17:12.51ID:p0Nf4Eeh
実行ポリシーを変更をBypassに変更してるんだが
.ps1ファイルを実行しようとすると1日1回くらい(その日の最初?)は以下の文章が出る
出なくする方法ありますか?

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):

ちなみにGet-ExecutionPolicyすると
ちゃんとBypassと表示される
0718デフォルトの名無しさん
垢版 |
2018/05/10(木) 21:32:31.45ID:RfBSBg1R
コンテキストメニューから実行してるなら、関連付け設定が
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"
になってるから、Set-ExecutionPolicy -Scope Process Bypass を実行するところでそれが出るんだと思う
関連付け設定を変えれば出てこなくなるよ
0719デフォルトの名無しさん
垢版 |
2018/05/10(木) 22:47:10.05ID:p0Nf4Eeh
ありがとう
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "%1"に変えてみた
ついでにダブルクリックだけで実行できるように変えたら便利になった
0720デフォルトの名無しさん
垢版 |
2018/05/23(水) 08:17:44.44ID:fJ1IdiGY
csvの中に時間とデータの2列あって、それの直線近似した切片を取りたいんだけどアルゴリズム組まないとだめ?
なおエクセルは入ってないパソコンで使いたい。
0721デフォルトの名無しさん
垢版 |
2018/05/23(水) 12:32:03.51ID:p1Tm41m3
pythonでpandas+leastsquare
0722デフォルトの名無しさん
垢版 |
2018/05/23(水) 16:20:34.21ID:xYq3JC1R
>>720
単に公式に当てはめればいい

$data = import-csv "csvのパス" -Header X,Y

$meanX = $data.X | measure -Average | select -expand Average
$meanY = $data.Y | measure -Average | select -expand Average

$sd = $data | foreach { ($_.X - $meanX) * ($_.X - $meanX) } | measure -Average | select -expand Average
$cd = $data | foreach { ($_.X - $meanX) * ($_.Y - $meanY) } | measure -Average | select -expand Average
$slope = $cd / $sd

$meanY - $slope * $meanX
0724デフォルトの名無しさん
垢版 |
2018/05/23(水) 18:35:19.02ID:V6P0Rj+x
>>722
ありがとうございます。簡潔に書かれていてすごい。

>>721
pythonでも出来るのですが、エクセル含めソフトインストールできないPCでの運用なので
0726デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:19:58.76ID:PUSKgIep
エクセルも使えない環境でデータ分析なんて
とんでもなく非効率だな
現実にはよくありそうな話だけど
0727デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:26:40.12ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

GWRI8
0728デフォルトの名無しさん
垢版 |
2018/05/24(木) 07:56:41.44ID:zQgi4Vqc
>>726
装置とそれを制御するソフトウェアが入った専用PCが連動して動く仕組みのシステムで、そのPCのデータをその中で処理したいと思ってて。
大型の装置で、もし誤作動を起こしたら火災や死亡事故もあり得るのでソフト導入は難しい状況。エクセルくらいは問題ないと思うんだけど、許可下りず。
0729デフォルトの名無しさん
垢版 |
2018/05/24(木) 09:57:30.14ID:fftgGS82
人命にかかわるならPowerShellでもだめだろ
0730デフォルトの名無しさん
垢版 |
2018/05/24(木) 12:22:12.99ID:6ROz+TzN
線形回帰分析のためだけにエクセルを導入しようとする高レベルVBAエンジニアさん命を握られてしまった従業員さん
0732デフォルトの名無しさん
垢版 |
2018/05/24(木) 18:11:34.30ID:CzEEKu6Z
今回だけじゃなくて別のデータ分析する
機会も出てくるかもしれないだろ

エクセルに限らずソフトがインストールできないんじゃ
いろいろ車輪の再発明することになりそう
0733デフォルトの名無しさん
垢版 |
2018/05/24(木) 18:17:30.66ID:5HLXkVSJ
そういう機会がなんども出てきてから検討すればいいよ
まあそうなったらエクセルじゃなくてデータ解析に適したツールを導入するべきだろうけどね
VBAerさんはとにかくVBAを使いたいって目的が先行するから困る
0734デフォルトの名無しさん
垢版 |
2018/05/24(木) 18:47:46.05ID:5HLXkVSJ
なんでもかんでも再発明が悪という風潮はよろしくない
少量の些細な再発明を避けるために大規模なソリューションを導入すると
そのソリューションの管理コストや障害リスクの方が高くなってしまう
0736デフォルトの名無しさん
垢版 |
2018/05/24(木) 19:37:16.12ID:8RmhyhjF
そういう設定なんだなというのは皆わかった上でディスカッションしてる
なので野暮なツッコミは無しにしようや
0738デフォルトの名無しさん
垢版 |
2018/05/24(木) 21:09:40.32ID:zQgi4Vqc
>>735
今はデータをUSBで他のPCに移してから処理してる。
制御PCでやりたい理由は、USBはパスワード付きっていうのもあって面倒で、しかも常に最新の情報を求められるため日に数回USBで出し入れすることになるのでより面倒。
それが毎日となるとめちゃくちゃ面倒。
ということで不慣れなpowershell でやろうとした次第です。
0739デフォルトの名無しさん
垢版 |
2018/05/24(木) 22:23:06.92ID:A0AqRoYu
別PCでC#の解析用アセンブリ作ってPowerShellから呼び出したらいいんじゃないの
0741デフォルトの名無しさん
垢版 |
2018/05/24(木) 22:42:20.58ID:OVWSg8Eh
オフラインです。C♯は難しそうなので。

すみません、私事を語り過ぎました。元の話題に戻ってどうぞ
0742デフォルトの名無しさん
垢版 |
2018/05/24(木) 22:53:30.12ID:6yspu/tD
死亡事故が起こるようなマシンだろ
俺なら通常はネットから切り離しとくわ
0744デフォルトの名無しさん
垢版 |
2018/05/25(金) 03:37:02.75ID:JRXZZDGl
会話がかみ合ってないな
頭悪そう
0745デフォルトの名無しさん
垢版 |
2018/05/25(金) 03:58:22.29ID:cDmsKy0H
いや現実の問題設定は良い刺激になったよ
そういうのないと同じ話題がループしちゃうし
0747デフォルトの名無しさん
垢版 |
2018/05/26(土) 18:35:06.63ID:2fyQupuv
AddTypeでNuGet Packageを参照に追加できれば便利だと思うんだがなぜないんだろ
いちいちpackageダウンロードしてzip解答してdll探してAddTypeするの面倒くさい

AddType -PackageSource https://api.nuget.org/v3/index.json -PackageName Oracle.ManagedDataAccess -Version 12.2.1100
$connection = New-Object -TypeName Oracle.ManagedDataAccess.Client.OracleConnection

こんなんできたら絶対便利だろ
0749デフォルトの名無しさん
垢版 |
2018/05/27(日) 10:22:45.07ID:FRc1Igvs
こういうのは末端のユーザーじゃなくMicrosoftが責任持って整備すべき仕事だよなぁ
0752デフォルトの名無しさん
垢版 |
2018/05/28(月) 20:48:57.60ID:ANh8mcyB
csv読み込みのときに、♯が入ってる行が消えるのですが回避方法あるでしょうか?
バージョンは2のため、cat|convertfrom- csv を使っています。
0754デフォルトの名無しさん
垢版 |
2018/05/29(火) 13:59:12.26ID:/wWb7+KW
半角井桁でも全角井桁でもなくシャープがダメ文字ってことなら、いわゆる機種依存文字に対して内部的に文字化けしてるのかね
Get-Contentの-Encodingパラメーターを変えて試行錯誤してみるのはどうだろ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況