2011-02-10 11 views
11

.txtドキュメントの各行の最後に文字を追加します。PowerShellを使用してテキストファイル内のすべての行にテキストを追加します。

#Define Variables 
$a = c:\foobar.txt 
$b = get-content $a 

#Define Functions 
function append-text 
    { 
    foreach-Object 
     { 
     add "*" 
     } 
    } 

#Process Code 
$b | append-text 

何かがそうです。基本的には、指定されたテキストファイルを読み込み、そのテキストファイル内のテキストの各行の末尾に「*」を追加して保存して閉じます。このような

答えて

4

Soemthingは動作するはずです:

function append-text { 
    process{ 
    foreach-object {$_ + "*"} 
    } 
    } 
+2

フィルタを使用する場合、 'process'ブロックはまったく必要ありません。 'Filter Append-Text {" $ _ * "}' –

+0

これは素晴らしい動作です!これに冗長チェックを追加することは可能ですか? "*"の存在をチェックする何か、そしてそれが行末になければそれを追加しますか? – Joshua

+2

確かに、 ''($ _ -match '\ * \ s * $'){$ _} else {"$ _ *"}} ' –

16

機能なし必要。これはそれを行うだろう: $ B | foreachの{$ _ + "*"}

+3

手首があなたを悩ましているなら 'gc c:\ foobar.txt |%{" $ _ * " } '。エイリアスを頻繁に使用していますが、コマンドラインでPowerShellを使用する傾向がありますし、手首が私を嫌うことはありません.-) –

+0

これは間違いなく動作しますが、しかし、私は、必要に応じてそれを再度呼び出すことができるように、関数形式にしておきたいと思っていましたが、おそらくそうかもしれませんが、このスクリプトの私の目標は、おそらく関数の必要性を不要にするでしょう。 – Joshua

1
PS> (gc c:\foobar.txt) -replace '\S+$','$&*' 
-1

は単に、それをうまくするのに約2時間かかった前Powershellを使用したことがありませんでしたが、ここに行く:

cls 
#Define Functions 
(gc g:\foobar.txt) -replace '\S+$','$& 1GB RAM 1x 1 GB Stick' | out-file "g:\ram 6400s.txt" 

ファイルの場所を変更します。最初のファイルは編集したいファイルです。セカンドファイルは出力ファイルです。

+0

私は、 \ S "(空白でない)?私は" + "が行く方法だと思います。 –

関連する問題