2016-08-10 9 views
4

私のPowerShellスクリプトで、複数のフォルダの異なる.ctlファイルの特定の行8を読み込み、プレミードテキストとユーザーが入力したテキストボックス。ユーザー入力でPowerShellを使用して複数のファイルの特定の行を上書きする

のPowerShellスクリプト:

$handler_button3_Click={ 
if ($textbox1.TextLength -eq 0) 
{ 
    $listBox1.Items.Add("Please Register your Release Number!") 
}else{ 
    #saving the number in releasenr 
    $releasenr = $textbox1.Text 

    #TODO: Loop which goes into every file on different Folders and replaces 
    #line 8 in all .ctl files with following text:  "rel_nr constant "$releasenr"" 

    $listBox1.Items.Clear() 
    $listBox1.Items.Add("Release Number has been overwritten") 
    $listBox1.Items.Add("You can now proceed your Upload") 
} 
} 

は、現在のフォルダ内にある上書き処理のforeachのファイルを実行するためにループためを使用する方法はありますか?

答えて

2

Get-Contentを使用してファイルの内容を読み、ForEach-Objectコマンドレットを使用して、それを反復処理、ファイルを取得するGet-ChildItemコマンドレットを使用して、特定の行を上書きし、最終的にSet-Contentコマンドレットを使用してバックファイルにテキストを書き込む:

Get-ChildItem 'yourFolder' -Filter '*.ctl' | ForEach-Object { 
    $content = Get-Content $_ 
    $content[7] = 'rel_nr constant "{0}"' -f $releasenr 
    $content | Set-Content -Path $_.FullName 
} 
+0

ありがとうございました!スクリプトを実行すると、すべてのファイルが読み込まれますが、RuntimeExceptionが発生します。ヌル配列にインデックスできません。申し訳ありませんが、PowerShellにはかなり新しいです。 –

+0

私はスクリプトをテストしませんでしたが、うまくいくはずです。それはファイルの内容を読み取ることができなかったように聞こえる。現在のファイル名を出力するforeach-objectの後の最初の行に '$ _。FullName'を追加すると、問題の原因となるファイルが表示されます –

+0

Get-ChildItemのフォルダ名を取り出したら魅力。本当にありがとう! –

関連する問題