[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/13 09:52 / Filesize : 263 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【最強CUI】PowerShell -Part 2



1 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 06:30:02.67 ID:pZYy6q7Y.net]
前スレ
【最強CUI】PowerShell -Part 1
echo.2ch.net/test/read.cgi/tech/1378978504/

577 名前:切使われない。

ちなみに、句読点が一般的に使われるようになったのは、
明治半ば以降だそうだ。
[]
[ここ壊れてます]

578 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 15:34:24.24 ID:mJRDcTgH.net]
読みづらくなきゃなんでもいいと思うよ
クッソ読みづらくても句読点のあるなしにしか拘らん方が問題ある
読みやすい文の組み立てを心がければいいでしょう

579 名前:デフォルトの名無しさん [2018/03/01(木) 15:34:48.45 ID:Bn8v5XdY.net]
感謝状、招待状等あえて句読点をつけない文章の共通点とは?
https://woman.mynavi.jp/article/150205-71/

かつて、句読点を付けるのは『相手を見下す』
要は、句読点がないと文章も読めないだろうと相手を見なすことに
なることだったようだ。

ま、当時は漢字の利用頻度も高く、漢字ひらがな混じりでも
読みやすかったのでしょう。今はひらがななどの割合が高いので
やはり適切に句読点を使う必要あるんでしょうね。

580 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 15:40:17.42 ID:mJRDcTgH.net]
長文でひらがな比率高いと文の区切りが分からなくなりますからね。

581 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 19:01:36.71 ID:5P8YUW6k.net]
>>550
句読点の、打ち方が下手な香具師もよく、見かける

582 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 19:41:09.89 ID:Bj3H1eP5.net]
単に句読点はこのスレで低レベルな煽りを繰り返してるキチガイの特徴ってことだろ
IDかわってもすぐわかる

583 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 19:50:29.18 ID:dLJOyeYF.net]
句読点を適切に付与するスクリプト書いてよ

584 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 20:40:16.88 ID:yqOkTTLk.net]
powershellだけでプロジェクト組むとしたらどういうフォルダ構造にする?

585 名前:デフォルトの名無しさん mailto:sage [2018/03/01(木) 21:33:08.36 ID:cFY6likq.net]
中東あたりだと母音を省略してしまうんだよね?



586 名前:デフォルトの名無しさん mailto:sage [2018/03/02(金) 12:53:13.17 ID:Bue9fMqJ.net]
煽りうざいから話題換えよう

>>559
良い質問な気がする

ただオレ自身は単ファイルで済むバッチ
みたいなのを書くのがほとんどだから

もし本格的なプロジェクトのフォルダ構成を組むなら
JavaとかRubyとか他言語の構成をマネするかな

587 名前:デフォルトの名無しさん mailto:sage [2018/03/03(土) 09:41:45.03 ID:7F+xAEZY.net]
PSCustomObjectで特定のinterfaceを実装したいんだがやりかたわからん

public interface IFoo {
int Bar(int x);
}

public static class Hoge {
public static void Fuga(IFoo foo) {
Console.WriteLine(foo.Bar(100));
}

$foo = new-object pscustomobject |
add-member -passthru -membertype scriptmethod -name Bar -value { param($p)
return 200 }

[Hoge]::Fuga($foo)

こういうことしたい

588 名前:デフォルトの名無しさん mailto:sage [2018/03/03(土) 22:48:42.40 ID:ApJ804E1.net]
GoやTypeScriptじゃないんだからメソッドを持ってるからってinterfaceを実装してることにはならんよ
素直にIFooを実装するclassを定義すれば?

589 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 08:59:59.87 ID:DH1b2y4q.net]
>>563
そのやり方を知りたい

590 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 09:31:45.51 ID:6fb5BRTO.net]
>>564
実装されたインターフェイスの宣言
https://docs.microsoft.com/ja-jp/powershell/wmf/5.0/class_interface

591 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 09:49:31.76 ID:DH1b2y4q.net]
>>565
2.0でもできる方法教えてください

592 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 10:53:23.51 ID:8KjE9Kl8.net]
条件後出しというやつか

593 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 11:29:41.66 ID:xMU3H7cs.net]
>>566
むしろ今の内に5.1以降(できれば最新の6.0.1)に慣れておくほうが良いと思うけどな

594 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 12:58:31.78 ID:D98mTqXy.net]
業務で使うマシンはOSが最新

595 名前:ニは限らない
PSもほとんどアップデートされてない
だから低いバージョンでも使えるように訓練したほうがいい
最新版は追いかけるメリットがない
[]
[ここ壊れてます]



596 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 13:10:20.82 ID:7vnf9POv.net]
企業ならクライアントもWindows 7とか珍しくないから配布するようなスクリプトだと2.0前提

597 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 13:58:40.18 ID:9+M4xykP.net]
>>566
add-typeあるんだから普通にC#で書けば良くね
https://pastebin.com/mnvdH77F
PSCustomObjectに実装しないといけないなら知らんけど

598 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 15:05:09.28 ID:IHwduGqd.net]
Windows PowerShell 2.0 Deprecation
https://blogs.msdn.microsoft.com/powershell/2017/08/24/windows-powershell-2-0-deprecation/

599 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 17:24:27.69 ID:D98mTqXy.net]
>>571
それじゃpowershellコマンド使えないじゃん

600 名前:デフォルトの名無しさん [2018/03/04(日) 21:56:10.13 ID:hNuDXfDM.net]
句読点を多用するのは下手な日本語で嫌われる。

もともとどこが句切りかわからないひと向けの記号だから、句読点の使用は馬鹿にされることもある。

601 名前:デフォルトの名無しさん mailto:sage [2018/03/04(日) 22:04:18.45 ID:E9oZl2pC.net]
pushd/popd 便利やなあ
わしゃずっとcd使っとったぞい

602 名前:デフォルトの名無しさん [2018/03/05(月) 05:26:47.07 ID:ZV3N5zu0.net]
>>575
わたしゃ多用してますわ
push-location
pop-location
と省略せずにつかっておりますです

603 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 18:11:54.95 ID:QwFmEXbL.net]
c# scriptingのほうが楽とちゃうか?
ネイティヴコマンド連携だけは若干ps有利かなといった印象

604 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 20:17:46.87 ID:Xwb93uOm.net]
その時々で都合の良いほうを使えばいいよ
同じ.NETなんだから否定する理由も無い

605 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 07:41:36.43 ID:E7Qx2uww.net]
>>578
あ、議論から逃げたw



606 名前:デフォルトの名無しさん [2018/03/07(水) 07:47:27.99 ID:Bp6mjckS.net]
>>577
C# scriptingその後の話題が無いところをみると
どうも今一つなんかな

607 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 21:20:29.09 ID:6bAELGui.net]
>>577
シェルのlsやらcatやらみたいなのもc# scriptingのほうが楽なの?

608 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 00:59:56.29 ID:D0NacyLc.net]
bashとかが駄目な理由に、bashで書きづらくても、そこからpythonとか他の言語にするなら全部書き直しになる

609 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 01:13:22.32 ID:uJW9EWjF.net]
CLIが嬉しいと言いたいのかな。ちょっと論旨が理解できないが。

610 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 04:26:04.35 ID:OsiEjbqp.net]
script vs shell scriptとか何十年前の話題だよ
進歩のない連中だ

611 名前:デフォルトの名無しさん [2018/03/15(木) 06:42:05.85 ID:D4RVJiAa.net]
OSのシェルとプログラミング言語の区別がない人間ばかりだから仕方ない。

612 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 12:26:16.83 ID:Vp0MsA86.net]
シェルスクリプトをどちらかに分類したがるのは無理なのでは。

613 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 15:36:12.78 ID:BVhm+pK4.net]
basicはどっちなん?

614 名前:デフォルトの名無しさん [2018/03/15(木) 16:51:24.16 ID:2jkAdz6t.net]
単に、UNIXなどで単機能インタープリターをシェルと
呼び始めたんで、シェルは別物と思う人たちが出てきて
しまっただけ。

615 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:19:45.69 ID:NI14hTsx.net]
OSのシステムコールとプログラミング言語の区別がない人間も多い



616 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 08:54:28.41 ID:T21mXgK0.net]
システムコールとライブラリ関数
http://

617 名前:jibun.atmarkit.co.jp/lskill01/rensai/fulinux/02/01.html

システムコールとライブラリ関数の区別は曖昧で、
昔はシステムコールだった手続きも今はライブラリ関数として実装されていることがありますし、その逆もあります。
そういった意味では、システムコールとライブラリ関数の違いを本気で意識しなければならないのは
カーネルや基幹ライブラリを書くプログラマくらいと言えるかもしれません。

システムコールとライブラリ関数の違いが実際に役に立つのは、manページを参照するときです。
例えば「printf」にはコマンドのprintfとライブラリ関数のprintfがあるので、
ライブラリ関数のprintfの解説が見たければ「man 3 printf」と入力しないといけません。
「write」にはコマンドのwriteとシステムコールのwriteがあるので、
システムコールのほうが読みたければ「man 2 write」と入力しないといけません。
[]
[ここ壊れてます]

618 名前:デフォルトの名無しさん [2018/03/17(土) 11:59:28.36 ID:4+yOSMEm.net]
>>586
おまえはシェルがシェルスクリプトだと思っているのか?

619 名前:デフォルトの名無しさん [2018/03/17(土) 12:01:46.42 ID:4+yOSMEm.net]
シェル用のスクリプトだからシェルスクリプトなのに。

620 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 16:54:33.86 ID:gmKtMsY0.net]
史上嘗て無い頭の悪そうな突っ込み

621 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 11:12:47.74 ID:yOhpRYak.net]
ps coreイイね

622 名前:デフォルトの名無しさん [2018/03/21(水) 12:31:30.05 ID:U1NUu6zm.net]
>>594
そっすか

623 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 12:38:11.67 ID:sjE01Nui.net]
powershell_ise coreとかあったら良いのに
と思ったけど流石に需要ないか

624 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 12:51:05.01 ID:kSqnsZIp.net]
>>596
俺も欲しい
vscodeでも出来るけど、捨てコード書くには面倒なんだよね

625 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 00:18:59.44 ID:tdHViWJs.net]
VSCode の、Code Runner
ソースコードの範囲を選択して、実行できる

これは、便利なプラグイン!



626 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 00:26:12.80 ID:2RoYBMkH.net]
>>598
それ入れてないけど、範囲選択+F8で部分実行できたぞ
多分バージョンアップで不要になったプラグインだね

627 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 01:00:47.33 ID:arhMS6Ve.net]
部分実行できる言語もあるしできない言語もある
対象言語にも触れず「これは便利!」っつってる>>598もアホだし、対象言語もわかってないのに「バージョンアップで不要になったプラグイン」っつってる>>599もアホ

628 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 01:18:02.22 ID:2RoYBMkH.net]
スレタイも読んでない600が一番アホでは?

629 名前:598 [2018/03/22(木) 04:55:52.14 ID:tdHViWJs.net]
VSCode の、Code Runner
ソースコードの範囲を選択して、右クリックメニューから実行できる

便利なプラグイン!

PowerShell にも対応している

630 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 06:41:35.55 ID:G0SZ4nh0.net]
宣伝

631 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 09:35:21.60 ID:9NxgdLlD.net]
powershell coreでNuGetパッケージを使いたい場合ってどうすればいいの
Dapperを使う時にC#だったらdotnet add package Dapper; dotnet restoreだけどpowershellプロジェクトだとどうするのかな

632 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:30:21.30 ID:rN4AhykW.net]
dotnet add package Dapper
dotnet restore --packages ./packages
Add-Type $source -ReferencedAssemblies netstandard, ./packages/.../Dapper.dll

これでできたわ
お前らまじで使えねえなー

633 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 07:20:39.22 ID:90OCo3hj.net]
すみません。。

634 名前:デフォルトの名無しさん [2018/03/28(水) 21:08:11.49 ID:rexEOFUm.net]
とあるフォルダ配下にあるテキストファイルだけ抽出して配列に格納
別のフォルダ配下にあるテキストファイルだけ抽出して配列に格納し配列同士を比較して同じファイルのみを抜き出してCompare-Objectで比較したいんですけどどうやったらできますか?

635 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:43:30.34 ID:WBaBvJPO.net]
>>607
$a = ls "フォルダ1" *.txt
$b = ls "フォルダ2" *.txt
$a + $b | group name | where count -eq 2 | foreach { $_.name; compare (gc $_.group[0] .fullname) (gc $_.group[1].fullname) | ft }



636 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 01:53:06.95 ID:0KWZ/AkQ.net]
>>608
>gc $_.group[0] .fullname

.fullname の前に、半角空白が入っているから、エラーになる

637 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 04:02:59.38 ID:63+/4se6.net]
>>608
似たようなことよくやるが、やっぱ癖が出るね
自分なら最初こうやるかな
@(
Get-ChildItem "フォルダ1" *.txt
Get-ChildItem "フォルダ2" *.txt
)|

変数あまり使いたくないし、lsは動作がUNIXとは違うから紛らわしくて

638 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 07:16:54.73 ID:V1TivHhi.net]
>>609
ありゃconemuだと折返し部分に勝手にスペース入っちゃうんだな

>>610
そのへんは好みだとしてもそれ見て気づいたけどファイルが一つしかなくて$aが配列じゃない場合 $a + $b だとエラーになるね
@($a; $b) とすべきだったか

639 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 07:57:32.30 ID:0KWZ/AkQ.net]
1つか複数かで、オブジェクトの型が違うのか

ややこしい言語やな

640 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:10:52.44 ID:ZJ5ir4HC.net]
そういう細かい変な挙動がめんどくさいからC#で書いてAdd-Typeしてるわ
Linqあれば大抵の処理はPowerShellより書きやすいし読みやすい

641 名前:デフォルトの名無しさん [2018/03/29(木) 21:42:00.78 ID:QJhSKNI2.net]
>>608
ありがとうございます
これやったんですけどcountのところで型エラーになっちゃいました
>>610>>611でもダメみたいです

642 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 22:03:31.09 ID:AdhamQsX.net]
& {
ls foo
ls bar
}

643 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 22:51:24.43 ID:V1TivHhi.net]
>>614
powershellのバージョンは?
古いのはよくわからんけど Group-Object -Property Name とかしたらできるんかね 

644 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 22:57:06.82 ID:V1TivHhi.net]
もしpowershell2ならこれなら動くんじゃないかな、試してないけど
@($a; $b) | Group-Object -Property Name | Where-Object { $_.Count -eq 2 } | Foreach-Object { $_.Name; Compare-Object -ReferenceObject $(Get-Content $_.Group[0].Fullname) -DifferenceObject $(Get-Content $_.Group[1].Fullname) | Format-Table }

645 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 23:14:54.79 ID:cCEUqbyZ.net]
>>616

バージョンこんな感じです
> $PSVersionTable

Name Value
---- -----
CLRVersion 2.0.50727.8762
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1



646 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 23:18:05.53 ID:cCEUqbyZ.net]
>>617
やると↓

$a=Get-ChildItem "D:\test\*.*" -include *.txt,*.dat
$b=Get-ChildItem "G:\test\*.*" -include *.txt,*.dat
@($a; $b) | Group-Object -Property Name | Where-Object { $_.Count -eq 2 } | Foreach-Object { $_.Name;
ompare-Object -ReferenceObject $(Get-Content $_.Group[0].Fullname) -DifferenceObject $(Get-Content $_.Group[1].Fullname
| Format-Table }

b.txt
Compare-Object : 引数が null であるため、パラメーター 'ReferenceObject' にバインドできません。
発生場所 行:1 文字:134
+ @($a; $b) | Group-Object -Property Name | Where-Object { $_.Count -eq 2 } | Foreach-Object { $_.Name; Compare-Object
-ReferenceObject <<<< $(Get-Content $_.Group[0].Fullname) -DifferenceObject $(Get-Content $_.Group[1].Fullname) | Form
at-Table }
+ CategoryInfo : InvalidData: (:) [Compare-Object]、ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObje
ctCommand

647 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 23:45:57.68 ID:V1TivHhi.net]
それ単に空ファイルだからでしょ

648 名前:デフォルトの名無しさん [2018/03/29(木) 23:54:26.21 ID:cCEUqbyZ.net]
>>620
空ファイルとの差分も比較したいっす

649 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 00:15:02.11 ID:8/UdoTgk.net]
-ReferenceObject $(if ($_.Group[0].Length -eq 0) {"空ファイル"} else {Get-Content $_.Group[0].Fullname})
とかすればいい-DifferenceObjectも同様に

650 名前:デフォルトの名無しさん [2018/03/30(金) 00:55:45.74 ID:1oIUHR4g.net]
>>622
おお!なんか求めてるものができました
ありがとうございます

651 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:24:41.58 ID:87KFZNYL.net]
PSVersion 2.0 って、古いな

漏れは、Windows10 で、5.1

652 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:46:33.65 ID:MnRWcQoL.net]
>>624
> PSVersion 2.0 って、古いな
Windows 7 の標準装備だから会社によっては今でもその縛りがあるところは珍しくない

653 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 13:31:52.36 ID:CA1T1+Qn.net]
むしろwin10なのに5.1は古い
6.01入れちまえ

654 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 15:57:34.95 ID:BIk3pBCX.net]
標準で入ってるから使うんであって
わざわざ入れるなんて許されない
それがPowershellの掟

655 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 16:03:03.73 ID:GA8gSqY/.net]
常時最新版は入れるけど開発は2.0で



656 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:23:41.80 ID:v3STFQKk.net]
個人で使う分にはいいんだろうけどね

657 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:12:34.80 ID:9aphfiP0.net]
2.0でも問題ないように勉強しつつ、案件が始まったら最新版のインストールを駄目元でお願いする感じ

658 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:41:50.71 ID:PackIPAm.net]
いつの間にか6.0.2がリリースされてた

https://github.com/PowerShell/PowerShell/releases/tag/v6.0.2

659 名前:デフォルトの名無しさん [2018/03/31(土) 20:24:07.76 ID:xiXxh7KM.net]
ファイルの最後の文字のみ読み込んで
例えば最後の文字が

〇〇てすと

だったら

てすと

に置換して元から"てすと"だったそのままにしたいんだけどどうすればできますか?
ただし最終行が"てすと"じゃなかった場合は"てすと"を追記したいです
個人的にはループ処理で最終行から読み込んで意図した文字列なら置換って事がやれればいいと思ってます
※バージョンは2.0でお願いします!

660 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 23:42:23.39 ID:ZBdPbw02.net]
Ruby で作った

text = File.read ARGV[0] # 引数はファイル名

ary = []
# 文字列を1行ずつ、配列に入れる
text.each_line{ |line| ary << line }
p ary

# 戻り値は、置換が行われたときはレシーバ自身、置換されなかったときはnil
if ary[-1].sub!(/〇〇てすと$/, 'てすと')
# 処理なし。レシーバ自身を変更する
elsif /てすと$/ !~ ary[-1] # てすと で終わらない
ary[-1] += 'てすと'
else
return
end
p ary[-1]

File.write(ARGV[0], ary.join)

661 名前:デフォルトの名無しさん [2018/03/31(土) 23:55:40.86 ID:jgzyYqDp.net]
>>633
ここPowershellスレなんだが…

662 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 00:05:46.07 ID:QUrQa6Zt.net]
>632をなんとなく作ってみたんですけど、
最後に出力された文字列だけを置換しての部分がうまくいかない
置換自体は出来るんだけどその部分だけ文字列に書き込む方法が分からん。。。

(Get-Content D:\test\a.txt)[(Get-Content D:\test\a.txt).length..0] | Foreach-Object {
if( $_.length ){
if(!($_ -like "*てすと*")){
Add-Content -Path D:\test\a.txt -Value "てすと"
break
}
$_ -replace ".*てすと.*", "てすと"
break}
}

663 名前:633 mailto:sage [2018/04/01(日) 00:36:26.53 ID:ECJY99tL.net]
>その部分だけ、文字列に書き込む方法が分からん
Ruby でも、ファイルを読み書き両用で開くと、
現在のシーク位置を、あれこれ移動しないといけないから、非常にややこしい。
シーク位置を変数に入れておいて、あれこれ考えるのは、ややこしい

だから、テキスト全体を改行区切りの配列に入れて、最後の行だけを変更してから、
全部を書き込む方が簡単

633 では、そうしている

664 名前:デフォルトの名無しさん [2018/04/01(日) 01:17:13.74 ID:XTr+hbom.net]
趣旨に合っているかな?

$list=Get-Content sample.txt
$text="てすと"
foreach($line in $list){
if([string]::IsNullOrEmpty($line)){$line=$text}
$str=$line.Substring($line.length-3)
if($str -eq $text){ $newline=$str}
else{ $newline=$line }
$newline
}

665 名前:637 [2018/04/01(日) 01:18:30.22 ID:XTr+hbom.net]
最後の行についてわすれてた



666 名前:637 [2018/04/01(日) 01:28:26.15 ID:XTr+hbom.net]
再度

$list=Get-Content test.txt
$text="てすと"
foreach($line in $list){
if([string]::IsNullOrEmpty($line)){$line=$text}
$str=$line.Substring($line.length-3)
if($str -eq $text){ $newline=$str}
else{ $newline=$line }
$newline
}
if($str -ne $text){$text}

667 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:34:17.86 ID:VsRAmkXY.net]
ぱわーしぇる風にパイプかつメモリ最小で作ってほしーなんつって

668 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:37:20.38 ID:VsRAmkXY.net]
つーかバッチファイルスレで似たような質問してたアホだなこいつ

669 名前:637 [2018/04/01(日) 02:13:27.25 ID:XTr+hbom.net]
パイプよりこのほうがずっと高速なもんで

670 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 02:32:32.46 ID:QUrQa6Zt.net]
>>639
いいんだけどこれだと空白行全部"てすと"になっちゃてね?

671 名前:639 [2018/04/01(日) 02:44:04.47 ID:XTr+hbom.net]
そうしてる。
空白行は空白のままでよかったんだ
じゃIFのところだけ書き換え

$list=Get-Content test.txt
$text="てすと"
foreach($line in $list){
if(-NOT [string]::IsNullOrEmpty($line)){
$str=$line.Substring($line.length-3)}
if($str -eq $text){ $newline=$str}
else{ $newline=$line }
$newline
}
if($str -ne $text){$text}

672 名前:デフォルトの名無しさん [2018/04/01(日) 02:46:44.02 ID:XTr+hbom.net]
考えたらこれだと文字数が3文字未満だとエラーになるな
ねむいが・・書き換えてみるかな

673 名前:639 [2018/04/01(日) 02:54:07.64 ID:XTr+hbom.net]
今度はどうだろう

$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}
}
$newline
}
if($str -ne $text){$text}

674 名前:デフォルトの名無しさん [2018/04/01(日) 03:12:47.24 ID:QUrQa6Zt.net]
>>646
最終行だけてすとじゃなくてその上にてすとの文字列が有るとそのあと全部てすとになっちゃうね

675 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 03:38:49.54 ID:IR/E13YL.net]
こんなもんかね
psv2.0に配列のcountあったっけか

$file = "test.txt"
$text = "てすと"
,@(Get-Content $file)|%{
foreach($i in 0..($_.count-1)){
if($i -eq ($_.count-1)){
if($_[$i] -like "*$text"){
$text
}else{
$_[$i];$text
}
}else{
$_[$i]
}
}
}|Out-File $file



676 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 07:43:52.97 ID:dufOVYHg.net]
>>641
あっちは、「最終行」じゃなくて「空行を除く最終行」だったからちょっと面倒だ

677 名前:639 [2018/04/01(日) 07:45:20.17 ID:UUJ9t7Bj.net]
>>647
なんと、寝ぼけてやってちゃだめだな。
あとで見直すわ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<263KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef