X



【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0600デフォルトの名無しさん
垢版 |
2018/03/22(木) 01:00:47.33ID:arhMS6Ve
部分実行できる言語もあるしできない言語もある
対象言語にも触れず「これは便利!」っつってる>>598もアホだし、対象言語もわかってないのに「バージョンアップで不要になったプラグイン」っつってる>>599もアホ
0602598
垢版 |
2018/03/22(木) 04:55:52.14ID:tdHViWJs
VSCode の、Code Runner
ソースコードの範囲を選択して、右クリックメニューから実行できる

便利なプラグイン!

PowerShell にも対応している
0604デフォルトの名無しさん
垢版 |
2018/03/24(土) 09:35:21.60ID:9NxgdLlD
powershell coreでNuGetパッケージを使いたい場合ってどうすればいいの
Dapperを使う時にC#だったらdotnet add package Dapper; dotnet restoreだけどpowershellプロジェクトだとどうするのかな
0605デフォルトの名無しさん
垢版 |
2018/03/25(日) 17:30:21.30ID:rN4AhykW
dotnet add package Dapper
dotnet restore --packages ./packages
Add-Type $source -ReferencedAssemblies netstandard, ./packages/.../Dapper.dll

これでできたわ
お前らまじで使えねえなー
0607デフォルトの名無しさん
垢版 |
2018/03/28(水) 21:08:11.49ID:rexEOFUm
とあるフォルダ配下にあるテキストファイルだけ抽出して配列に格納
別のフォルダ配下にあるテキストファイルだけ抽出して配列に格納し配列同士を比較して同じファイルのみを抜き出してCompare-Objectで比較したいんですけどどうやったらできますか?
0608デフォルトの名無しさん
垢版 |
2018/03/28(水) 22:43:30.34ID:WBaBvJPO
>>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 }
0610デフォルトの名無しさん
垢版 |
2018/03/29(木) 04:02:59.38ID:63+/4se6
>>608
似たようなことよくやるが、やっぱ癖が出るね
自分なら最初こうやるかな
@(
Get-ChildItem "フォルダ1" *.txt
Get-ChildItem "フォルダ2" *.txt
)|

変数あまり使いたくないし、lsは動作がUNIXとは違うから紛らわしくて
0611デフォルトの名無しさん
垢版 |
2018/03/29(木) 07:16:54.73ID:V1TivHhi
>>609
ありゃconemuだと折返し部分に勝手にスペース入っちゃうんだな

>>610
そのへんは好みだとしてもそれ見て気づいたけどファイルが一つしかなくて$aが配列じゃない場合 $a + $b だとエラーになるね
@($a; $b) とすべきだったか
0613デフォルトの名無しさん
垢版 |
2018/03/29(木) 12:10:52.44ID:ZJ5ir4HC
そういう細かい変な挙動がめんどくさいからC#で書いてAdd-Typeしてるわ
Linqあれば大抵の処理はPowerShellより書きやすいし読みやすい
0614デフォルトの名無しさん
垢版 |
2018/03/29(木) 21:42:00.78ID:QJhSKNI2
>>608
ありがとうございます
これやったんですけどcountのところで型エラーになっちゃいました
>>610>>611でもダメみたいです
0616デフォルトの名無しさん
垢版 |
2018/03/29(木) 22:51:24.43ID:V1TivHhi
>>614
powershellのバージョンは?
古いのはよくわからんけど Group-Object -Property Name とかしたらできるんかね 
0617デフォルトの名無しさん
垢版 |
2018/03/29(木) 22:57:06.82ID:V1TivHhi
もし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 }
0618デフォルトの名無しさん
垢版 |
2018/03/29(木) 23:14:54.79ID:cCEUqbyZ
>>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
0619デフォルトの名無しさん
垢版 |
2018/03/29(木) 23:18:05.53ID:cCEUqbyZ
>>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
0621デフォルトの名無しさん
垢版 |
2018/03/29(木) 23:54:26.21ID:cCEUqbyZ
>>620
空ファイルとの差分も比較したいっす
0622デフォルトの名無しさん
垢版 |
2018/03/30(金) 00:15:02.11ID:8/UdoTgk
-ReferenceObject $(if ($_.Group[0].Length -eq 0) {"空ファイル"} else {Get-Content $_.Group[0].Fullname})
とかすればいい-DifferenceObjectも同様に
0623デフォルトの名無しさん
垢版 |
2018/03/30(金) 00:55:45.74ID:1oIUHR4g
>>622
おお!なんか求めてるものができました
ありがとうございます
0625デフォルトの名無しさん
垢版 |
2018/03/30(金) 12:46:33.65ID:MnRWcQoL
>>624
> PSVersion 2.0 って、古いな
Windows 7 の標準装備だから会社によっては今でもその縛りがあるところは珍しくない
0627デフォルトの名無しさん
垢版 |
2018/03/30(金) 15:57:34.95ID:BIk3pBCX
標準で入ってるから使うんであって
わざわざ入れるなんて許されない
それがPowershellの掟
0630デフォルトの名無しさん
垢版 |
2018/03/31(土) 09:12:34.80ID:9aphfiP0
2.0でも問題ないように勉強しつつ、案件が始まったら最新版のインストールを駄目元でお願いする感じ
0632デフォルトの名無しさん
垢版 |
2018/03/31(土) 20:24:07.76ID:xiXxh7KM
ファイルの最後の文字のみ読み込んで
例えば最後の文字が

〇〇てすと

だったら

てすと

に置換して元から"てすと"だったそのままにしたいんだけどどうすればできますか?
ただし最終行が"てすと"じゃなかった場合は"てすと"を追記したいです
個人的にはループ処理で最終行から読み込んで意図した文字列なら置換って事がやれればいいと思ってます
※バージョンは2.0でお願いします!
0633デフォルトの名無しさん
垢版 |
2018/03/31(土) 23:42:23.39ID:ZBdPbw02
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)
0634デフォルトの名無しさん
垢版 |
2018/03/31(土) 23:55:40.86ID:jgzyYqDp
>>633
ここPowershellスレなんだが…
0635デフォルトの名無しさん
垢版 |
2018/04/01(日) 00:05:46.07ID:QUrQa6Zt
>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}
}
0636633
垢版 |
2018/04/01(日) 00:36:26.53ID:ECJY99tL
>その部分だけ、文字列に書き込む方法が分からん
Ruby でも、ファイルを読み書き両用で開くと、
現在のシーク位置を、あれこれ移動しないといけないから、非常にややこしい。
シーク位置を変数に入れておいて、あれこれ考えるのは、ややこしい

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

633 では、そうしている
0637デフォルトの名無しさん
垢版 |
2018/04/01(日) 01:17:13.74ID:XTr+hbom
趣旨に合っているかな?

$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
}
0638637
垢版 |
2018/04/01(日) 01:18:30.22ID:XTr+hbom
最後の行についてわすれてた
0639637
垢版 |
2018/04/01(日) 01:28:26.15ID:XTr+hbom
再度

$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}
0642637
垢版 |
2018/04/01(日) 02:13:27.25ID:XTr+hbom
パイプよりこのほうがずっと高速なもんで
0644639
垢版 |
2018/04/01(日) 02:44:04.47ID:XTr+hbom
そうしてる。
空白行は空白のままでよかったんだ
じゃ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}
0645デフォルトの名無しさん
垢版 |
2018/04/01(日) 02:46:44.02ID:XTr+hbom
考えたらこれだと文字数が3文字未満だとエラーになるな
ねむいが・・書き換えてみるかな
0646639
垢版 |
2018/04/01(日) 02:54:07.64ID:XTr+hbom
今度はどうだろう

$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}
0647デフォルトの名無しさん
垢版 |
2018/04/01(日) 03:12:47.24ID:QUrQa6Zt
>>646
最終行だけてすとじゃなくてその上にてすとの文字列が有るとそのあと全部てすとになっちゃうね
0648デフォルトの名無しさん
垢版 |
2018/04/01(日) 03:38:49.54ID:IR/E13YL
こんなもんかね
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
0650639
垢版 |
2018/04/01(日) 07:45:20.17ID:UUJ9t7Bj
>>647
なんと、寝ぼけてやってちゃだめだな。
あとで見直すわ
0651デフォルトの名無しさん
垢版 |
2018/04/01(日) 08:53:40.41ID:P1fWuhY2
PowerShellコード可読性低すぎワロタwww時代はC#ですわ

Add-Type -TypeDefinition @"
using System.IO;
using System.Text.RegularExpressions;
public class Hoge {
private static readonly Regex r = new Regex(@"[^\n]*てすと$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.CultureInvariant);
public static void ReplaceLastTest(FileInfo file) {
string s = File.ReadAllText(file.FullName);
s = r.Replace(s.TrimEnd(), string.Empty) + "てすと";
File.WriteAllText(file.FullName, s);
}
}
"@

[Hoge]::ReplaceLastTest((Get-ChildItem ./test.txt))
0653デフォルトの名無しさん
垢版 |
2018/04/01(日) 11:08:43.29ID:P1fWuhY2
>>648>>646のほうがよっぽど無駄なコード書いてるじゃんwww
ループインデックスとか久々に見たわwwwwベタループも条件分岐もくっそ読みにくいしwww

編集の補助ってインテリセンスの事ならこの程度のコードに必要ないだろw
つかpowershellerならVSCodeとっくに入っとるやろwww
C#もサポートされとるやんけwwww
0654デフォルトの名無しさん
垢版 |
2018/04/01(日) 11:37:50.84ID:QUrQa6Zt
>>648
これだと"てすと"の後に無駄な空行があるとその無駄な空行の後に"てすと"って出力されちゃうね
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勉強中なんだけどこんな感じ?
■ このスレッドは過去ログ倉庫に格納されています

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