前スレ
【最強CUI】PowerShell -Part 1
http://echo.2ch.net/test/read.cgi/tech/1378978504/
【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/11/26(土) 06:30:02.67ID:pZYy6q7Y
563デフォルトの名無しさん
2018/03/03(土) 22:48:42.40ID:ApJ804E1 GoやTypeScriptじゃないんだからメソッドを持ってるからってinterfaceを実装してることにはならんよ
素直にIFooを実装するclassを定義すれば?
素直にIFooを実装するclassを定義すれば?
564デフォルトの名無しさん
2018/03/04(日) 08:59:59.87ID:DH1b2y4q >>563
そのやり方を知りたい
そのやり方を知りたい
565デフォルトの名無しさん
2018/03/04(日) 09:31:45.51ID:6fb5BRTO566デフォルトの名無しさん
2018/03/04(日) 09:49:31.76ID:DH1b2y4q >>565
2.0でもできる方法教えてください
2.0でもできる方法教えてください
567デフォルトの名無しさん
2018/03/04(日) 10:53:23.51ID:8KjE9Kl8 条件後出しというやつか
568デフォルトの名無しさん
2018/03/04(日) 11:29:41.66ID:xMU3H7cs >>566
むしろ今の内に5.1以降(できれば最新の6.0.1)に慣れておくほうが良いと思うけどな
むしろ今の内に5.1以降(できれば最新の6.0.1)に慣れておくほうが良いと思うけどな
569デフォルトの名無しさん
2018/03/04(日) 12:58:31.78ID:D98mTqXy 業務で使うマシンはOSが最新とは限らない
PSもほとんどアップデートされてない
だから低いバージョンでも使えるように訓練したほうがいい
最新版は追いかけるメリットがない
PSもほとんどアップデートされてない
だから低いバージョンでも使えるように訓練したほうがいい
最新版は追いかけるメリットがない
570デフォルトの名無しさん
2018/03/04(日) 13:10:20.82ID:7vnf9POv 企業ならクライアントもWindows 7とか珍しくないから配布するようなスクリプトだと2.0前提
571デフォルトの名無しさん
2018/03/04(日) 13:58:40.18ID:9+M4xykP572デフォルトの名無しさん
2018/03/04(日) 15:05:09.28ID:IHwduGqd Windows PowerShell 2.0 Deprecation
https://blogs.msdn.microsoft.com/powershell/2017/08/24/windows-powershell-2-0-deprecation/
https://blogs.msdn.microsoft.com/powershell/2017/08/24/windows-powershell-2-0-deprecation/
573デフォルトの名無しさん
2018/03/04(日) 17:24:27.69ID:D98mTqXy >>571
それじゃpowershellコマンド使えないじゃん
それじゃpowershellコマンド使えないじゃん
574デフォルトの名無しさん
2018/03/04(日) 21:56:10.13ID:hNuDXfDM 句読点を多用するのは下手な日本語で嫌われる。
もともとどこが句切りかわからないひと向けの記号だから、句読点の使用は馬鹿にされることもある。
もともとどこが句切りかわからないひと向けの記号だから、句読点の使用は馬鹿にされることもある。
575デフォルトの名無しさん
2018/03/04(日) 22:04:18.45ID:E9oZl2pC pushd/popd 便利やなあ
わしゃずっとcd使っとったぞい
わしゃずっとcd使っとったぞい
576デフォルトの名無しさん
2018/03/05(月) 05:26:47.07ID:ZV3N5zu0577デフォルトの名無しさん
2018/03/06(火) 18:11:54.95ID:QwFmEXbL c# scriptingのほうが楽とちゃうか?
ネイティヴコマンド連携だけは若干ps有利かなといった印象
ネイティヴコマンド連携だけは若干ps有利かなといった印象
578デフォルトの名無しさん
2018/03/06(火) 20:17:46.87ID:Xwb93uOm その時々で都合の良いほうを使えばいいよ
同じ.NETなんだから否定する理由も無い
同じ.NETなんだから否定する理由も無い
579デフォルトの名無しさん
2018/03/07(水) 07:41:36.43ID:E7Qx2uww >>578
あ、議論から逃げたw
あ、議論から逃げたw
580デフォルトの名無しさん
2018/03/07(水) 07:47:27.99ID:Bp6mjckS581デフォルトの名無しさん
2018/03/07(水) 21:20:29.09ID:6bAELGui >>577
シェルのlsやらcatやらみたいなのもc# scriptingのほうが楽なの?
シェルのlsやらcatやらみたいなのもc# scriptingのほうが楽なの?
582デフォルトの名無しさん
2018/03/08(木) 00:59:56.29ID:D0NacyLc bashとかが駄目な理由に、bashで書きづらくても、そこからpythonとか他の言語にするなら全部書き直しになる
583デフォルトの名無しさん
2018/03/08(木) 01:13:22.32ID:uJW9EWjF CLIが嬉しいと言いたいのかな。ちょっと論旨が理解できないが。
584デフォルトの名無しさん
2018/03/08(木) 04:26:04.35ID:OsiEjbqp script vs shell scriptとか何十年前の話題だよ
進歩のない連中だ
進歩のない連中だ
585デフォルトの名無しさん
2018/03/15(木) 06:42:05.85ID:D4RVJiAa OSのシェルとプログラミング言語の区別がない人間ばかりだから仕方ない。
586デフォルトの名無しさん
2018/03/15(木) 12:26:16.83ID:Vp0MsA86 シェルスクリプトをどちらかに分類したがるのは無理なのでは。
587デフォルトの名無しさん
2018/03/15(木) 15:36:12.78ID:BVhm+pK4 basicはどっちなん?
588デフォルトの名無しさん
2018/03/15(木) 16:51:24.16ID:2jkAdz6t 単に、UNIXなどで単機能インタープリターをシェルと
呼び始めたんで、シェルは別物と思う人たちが出てきて
しまっただけ。
呼び始めたんで、シェルは別物と思う人たちが出てきて
しまっただけ。
589デフォルトの名無しさん
2018/03/15(木) 22:19:45.69ID:NI14hTsx OSのシステムコールとプログラミング言語の区別がない人間も多い
590デフォルトの名無しさん
2018/03/16(金) 08:54:28.41ID:T21mXgK0 システムコールとライブラリ関数
http://jibun.atmarkit.co.jp/lskill01/rensai/fulinux/02/01.html
システムコールとライブラリ関数の区別は曖昧で、
昔はシステムコールだった手続きも今はライブラリ関数として実装されていることがありますし、その逆もあります。
そういった意味では、システムコールとライブラリ関数の違いを本気で意識しなければならないのは
カーネルや基幹ライブラリを書くプログラマくらいと言えるかもしれません。
システムコールとライブラリ関数の違いが実際に役に立つのは、manページを参照するときです。
例えば「printf」にはコマンドのprintfとライブラリ関数のprintfがあるので、
ライブラリ関数のprintfの解説が見たければ「man 3 printf」と入力しないといけません。
「write」にはコマンドのwriteとシステムコールのwriteがあるので、
システムコールのほうが読みたければ「man 2 write」と入力しないといけません。
http://jibun.atmarkit.co.jp/lskill01/rensai/fulinux/02/01.html
システムコールとライブラリ関数の区別は曖昧で、
昔はシステムコールだった手続きも今はライブラリ関数として実装されていることがありますし、その逆もあります。
そういった意味では、システムコールとライブラリ関数の違いを本気で意識しなければならないのは
カーネルや基幹ライブラリを書くプログラマくらいと言えるかもしれません。
システムコールとライブラリ関数の違いが実際に役に立つのは、manページを参照するときです。
例えば「printf」にはコマンドのprintfとライブラリ関数のprintfがあるので、
ライブラリ関数のprintfの解説が見たければ「man 3 printf」と入力しないといけません。
「write」にはコマンドのwriteとシステムコールのwriteがあるので、
システムコールのほうが読みたければ「man 2 write」と入力しないといけません。
591デフォルトの名無しさん
2018/03/17(土) 11:59:28.36ID:4+yOSMEm >>586
おまえはシェルがシェルスクリプトだと思っているのか?
おまえはシェルがシェルスクリプトだと思っているのか?
592デフォルトの名無しさん
2018/03/17(土) 12:01:46.42ID:4+yOSMEm シェル用のスクリプトだからシェルスクリプトなのに。
593デフォルトの名無しさん
2018/03/17(土) 16:54:33.86ID:gmKtMsY0 史上嘗て無い頭の悪そうな突っ込み
594デフォルトの名無しさん
2018/03/21(水) 11:12:47.74ID:yOhpRYak ps coreイイね
595デフォルトの名無しさん
2018/03/21(水) 12:31:30.05ID:U1NUu6zm >>594
そっすか
そっすか
596デフォルトの名無しさん
2018/03/21(水) 12:38:11.67ID:sjE01Nui powershell_ise coreとかあったら良いのに
と思ったけど流石に需要ないか
と思ったけど流石に需要ないか
597デフォルトの名無しさん
2018/03/21(水) 12:51:05.01ID:kSqnsZIp598デフォルトの名無しさん
2018/03/22(木) 00:18:59.44ID:tdHViWJs VSCode の、Code Runner
ソースコードの範囲を選択して、実行できる
これは、便利なプラグイン!
ソースコードの範囲を選択して、実行できる
これは、便利なプラグイン!
599デフォルトの名無しさん
2018/03/22(木) 00:26:12.80ID:2RoYBMkH600デフォルトの名無しさん
2018/03/22(木) 01:00:47.33ID:arhMS6Ve601デフォルトの名無しさん
2018/03/22(木) 01:18:02.22ID:2RoYBMkH スレタイも読んでない600が一番アホでは?
602598
2018/03/22(木) 04:55:52.14ID:tdHViWJs VSCode の、Code Runner
ソースコードの範囲を選択して、右クリックメニューから実行できる
便利なプラグイン!
PowerShell にも対応している
ソースコードの範囲を選択して、右クリックメニューから実行できる
便利なプラグイン!
PowerShell にも対応している
603デフォルトの名無しさん
2018/03/22(木) 06:41:35.55ID:G0SZ4nh0 宣伝
604デフォルトの名無しさん
2018/03/24(土) 09:35:21.60ID:9NxgdLlD powershell coreでNuGetパッケージを使いたい場合ってどうすればいいの
Dapperを使う時にC#だったらdotnet add package Dapper; dotnet restoreだけどpowershellプロジェクトだとどうするのかな
Dapperを使う時にC#だったらdotnet add package Dapper; dotnet restoreだけどpowershellプロジェクトだとどうするのかな
605デフォルトの名無しさん
2018/03/25(日) 17:30:21.30ID:rN4AhykW dotnet add package Dapper
dotnet restore --packages ./packages
Add-Type $source -ReferencedAssemblies netstandard, ./packages/.../Dapper.dll
これでできたわ
お前らまじで使えねえなー
dotnet restore --packages ./packages
Add-Type $source -ReferencedAssemblies netstandard, ./packages/.../Dapper.dll
これでできたわ
お前らまじで使えねえなー
606デフォルトの名無しさん
2018/03/26(月) 07:20:39.22ID:90OCo3hj すみません。。
607デフォルトの名無しさん
2018/03/28(水) 21:08:11.49ID:rexEOFUm とあるフォルダ配下にあるテキストファイルだけ抽出して配列に格納
別のフォルダ配下にあるテキストファイルだけ抽出して配列に格納し配列同士を比較して同じファイルのみを抜き出してCompare-Objectで比較したいんですけどどうやったらできますか?
別のフォルダ配下にあるテキストファイルだけ抽出して配列に格納し配列同士を比較して同じファイルのみを抜き出してCompare-Objectで比較したいんですけどどうやったらできますか?
608デフォルトの名無しさん
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 }
$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 }
609デフォルトの名無しさん
2018/03/29(木) 01:53:06.95ID:0KWZ/AkQ610デフォルトの名無しさん
2018/03/29(木) 04:02:59.38ID:63+/4se6 >>608
似たようなことよくやるが、やっぱ癖が出るね
自分なら最初こうやるかな
@(
Get-ChildItem "フォルダ1" *.txt
Get-ChildItem "フォルダ2" *.txt
)|
変数あまり使いたくないし、lsは動作がUNIXとは違うから紛らわしくて
似たようなことよくやるが、やっぱ癖が出るね
自分なら最初こうやるかな
@(
Get-ChildItem "フォルダ1" *.txt
Get-ChildItem "フォルダ2" *.txt
)|
変数あまり使いたくないし、lsは動作がUNIXとは違うから紛らわしくて
611デフォルトの名無しさん
2018/03/29(木) 07:16:54.73ID:V1TivHhi612デフォルトの名無しさん
2018/03/29(木) 07:57:32.30ID:0KWZ/AkQ 1つか複数かで、オブジェクトの型が違うのか
ややこしい言語やな
ややこしい言語やな
613デフォルトの名無しさん
2018/03/29(木) 12:10:52.44ID:ZJ5ir4HC そういう細かい変な挙動がめんどくさいからC#で書いてAdd-Typeしてるわ
Linqあれば大抵の処理はPowerShellより書きやすいし読みやすい
Linqあれば大抵の処理はPowerShellより書きやすいし読みやすい
614デフォルトの名無しさん
2018/03/29(木) 21:42:00.78ID:QJhSKNI2615デフォルトの名無しさん
2018/03/29(木) 22:03:31.09ID:AdhamQsX & {
ls foo
ls bar
}
ls foo
ls bar
}
616デフォルトの名無しさん
2018/03/29(木) 22:51:24.43ID:V1TivHhi617デフォルトの名無しさん
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 }
@($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 }
618デフォルトの名無しさん
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
バージョンこんな感じです
> $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
619デフォルトの名無しさん
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
やると↓
$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
620デフォルトの名無しさん
2018/03/29(木) 23:45:57.68ID:V1TivHhi それ単に空ファイルだからでしょ
621デフォルトの名無しさん
2018/03/29(木) 23:54:26.21ID:cCEUqbyZ >>620
空ファイルとの差分も比較したいっす
空ファイルとの差分も比較したいっす
622デフォルトの名無しさん
2018/03/30(金) 00:15:02.11ID:8/UdoTgk -ReferenceObject $(if ($_.Group[0].Length -eq 0) {"空ファイル"} else {Get-Content $_.Group[0].Fullname})
とかすればいい-DifferenceObjectも同様に
とかすればいい-DifferenceObjectも同様に
623デフォルトの名無しさん
2018/03/30(金) 00:55:45.74ID:1oIUHR4g624デフォルトの名無しさん
2018/03/30(金) 12:24:41.58ID:87KFZNYL PSVersion 2.0 って、古いな
漏れは、Windows10 で、5.1
漏れは、Windows10 で、5.1
625デフォルトの名無しさん
2018/03/30(金) 12:46:33.65ID:MnRWcQoL626デフォルトの名無しさん
2018/03/30(金) 13:31:52.36ID:CA1T1+Qn むしろwin10なのに5.1は古い
6.01入れちまえ
6.01入れちまえ
627デフォルトの名無しさん
2018/03/30(金) 15:57:34.95ID:BIk3pBCX 標準で入ってるから使うんであって
わざわざ入れるなんて許されない
それがPowershellの掟
わざわざ入れるなんて許されない
それがPowershellの掟
628デフォルトの名無しさん
2018/03/30(金) 16:03:03.73ID:GA8gSqY/ 常時最新版は入れるけど開発は2.0で
629デフォルトの名無しさん
2018/03/30(金) 23:23:41.80ID:v3STFQKk 個人で使う分にはいいんだろうけどね
630デフォルトの名無しさん
2018/03/31(土) 09:12:34.80ID:9aphfiP0 2.0でも問題ないように勉強しつつ、案件が始まったら最新版のインストールを駄目元でお願いする感じ
631デフォルトの名無しさん
2018/03/31(土) 09:41:50.71ID:PackIPAm632デフォルトの名無しさん
2018/03/31(土) 20:24:07.76ID:xiXxh7KM ファイルの最後の文字のみ読み込んで
例えば最後の文字が
〇〇てすと
だったら
てすと
に置換して元から"てすと"だったそのままにしたいんだけどどうすればできますか?
ただし最終行が"てすと"じゃなかった場合は"てすと"を追記したいです
個人的にはループ処理で最終行から読み込んで意図した文字列なら置換って事がやれればいいと思ってます
※バージョンは2.0でお願いします!
例えば最後の文字が
〇〇てすと
だったら
てすと
に置換して元から"てすと"だったそのままにしたいんだけどどうすればできますか?
ただし最終行が"てすと"じゃなかった場合は"てすと"を追記したいです
個人的にはループ処理で最終行から読み込んで意図した文字列なら置換って事がやれればいいと思ってます
※バージョンは2.0でお願いします!
633デフォルトの名無しさん
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)
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)
634デフォルトの名無しさん
2018/03/31(土) 23:55:40.86ID:jgzyYqDp >>633
ここPowershellスレなんだが…
ここPowershellスレなんだが…
635デフォルトの名無しさん
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}
}
最後に出力された文字列だけを置換しての部分がうまくいかない
置換自体は出来るんだけどその部分だけ文字列に書き込む方法が分からん。。。
(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}
}
636633
2018/04/01(日) 00:36:26.53ID:ECJY99tL >その部分だけ、文字列に書き込む方法が分からん
Ruby でも、ファイルを読み書き両用で開くと、
現在のシーク位置を、あれこれ移動しないといけないから、非常にややこしい。
シーク位置を変数に入れておいて、あれこれ考えるのは、ややこしい
だから、テキスト全体を改行区切りの配列に入れて、最後の行だけを変更してから、
全部を書き込む方が簡単
633 では、そうしている
Ruby でも、ファイルを読み書き両用で開くと、
現在のシーク位置を、あれこれ移動しないといけないから、非常にややこしい。
シーク位置を変数に入れておいて、あれこれ考えるのは、ややこしい
だから、テキスト全体を改行区切りの配列に入れて、最後の行だけを変更してから、
全部を書き込む方が簡単
633 では、そうしている
637デフォルトの名無しさん
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
}
$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
}
638637
2018/04/01(日) 01:18:30.22ID:XTr+hbom 最後の行についてわすれてた
639637
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}
$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}
640デフォルトの名無しさん
2018/04/01(日) 01:34:17.86ID:VsRAmkXY ぱわーしぇる風にパイプかつメモリ最小で作ってほしーなんつって
641デフォルトの名無しさん
2018/04/01(日) 01:37:20.38ID:VsRAmkXY つーかバッチファイルスレで似たような質問してたアホだなこいつ
642637
2018/04/01(日) 02:13:27.25ID:XTr+hbom パイプよりこのほうがずっと高速なもんで
643デフォルトの名無しさん
2018/04/01(日) 02:32:32.46ID:QUrQa6Zt >>639
いいんだけどこれだと空白行全部"てすと"になっちゃてね?
いいんだけどこれだと空白行全部"てすと"になっちゃてね?
644639
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}
空白行は空白のままでよかったんだ
じゃ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}
645デフォルトの名無しさん
2018/04/01(日) 02:46:44.02ID:XTr+hbom 考えたらこれだと文字数が3文字未満だとエラーになるな
ねむいが・・書き換えてみるかな
ねむいが・・書き換えてみるかな
646639
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}
$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}
647デフォルトの名無しさん
2018/04/01(日) 03:12:47.24ID:QUrQa6Zt >>646
最終行だけてすとじゃなくてその上にてすとの文字列が有るとそのあと全部てすとになっちゃうね
最終行だけてすとじゃなくてその上にてすとの文字列が有るとそのあと全部てすとになっちゃうね
648デフォルトの名無しさん
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
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
649デフォルトの名無しさん
2018/04/01(日) 07:43:52.97ID:dufOVYHg >>641
あっちは、「最終行」じゃなくて「空行を除く最終行」だったからちょっと面倒だ
あっちは、「最終行」じゃなくて「空行を除く最終行」だったからちょっと面倒だ
650639
2018/04/01(日) 07:45:20.17ID:UUJ9t7Bj651デフォルトの名無しさん
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))
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))
652デフォルトの名無しさん
2018/04/01(日) 10:49:38.76ID:IR/E13YL653デフォルトの名無しさん
2018/04/01(日) 11:08:43.29ID:P1fWuhY2654デフォルトの名無しさん
2018/04/01(日) 11:37:50.84ID:QUrQa6Zt >>648
これだと"てすと"の後に無駄な空行があるとその無駄な空行の後に"てすと"って出力されちゃうね
これだと"てすと"の後に無駄な空行があるとその無駄な空行の後に"てすと"って出力されちゃうね
655デフォルトの名無しさん
2018/04/01(日) 11:44:34.33ID:XEaAmQBZ エディタすら選べない様な残念な環境で頑張るのがPSですから
ってのは置いといてadd-typeで強引に解決するのは割と好き
ってのは置いといてadd-typeで強引に解決するのは割と好き
656デフォルトの名無しさん
2018/04/01(日) 11:56:29.10ID:IR/E13YL >>654
最初の条件では空行を無視するとか書いてないけど
最初の条件では空行を無視するとか書いてないけど
657デフォルトの名無しさん
2018/04/01(日) 12:07:38.92ID:IR/E13YL658デフォルトの名無しさん
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)
誰だよ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)
659639
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}
どうでしゃろ
$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}
660639
2018/04/01(日) 12:29:46.66ID:y3W5ZkrO >>658
てすとしてないけど、すばらしそう
てすとしてないけど、すばらしそう
661639
2018/04/01(日) 12:38:23.68ID:y3W5ZkrO662639
2018/04/01(日) 12:42:58.03ID:y3W5ZkrO ABCDてすと => てすと
XYX123 => XYX123
てすとのてすと => てすと
てすとのabc => てすとのabc
みたいな要望じゃないかな?
XYX123 => XYX123
てすとのてすと => てすと
てすとのabc => てすとのabc
みたいな要望じゃないかな?
663デフォルトの名無しさん
2018/04/01(日) 12:54:30.97ID:GlQ4Mmqm 2回実行したら全部の行がてすとになって区別付かなくなるけどそれでいい?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【愛国者速報】フィフィ、中国の“日本産水産物輸入停止”措置に私見「中国依存しないとやっていけない企業は考えを改めて」 [856698234]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
- おさかなさんあつまれえ
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
