置換ファイル作成PGM


<p> PowerShellを利用したテンプレートファイルと置換パターンのリストから
置換後のファイルを複数個出力するスクリプトのサンプルです<br>
今回作成したソースはReplaceFile.ps1です.<br>
</p>

<p>内容</p>
 <ol>
   <li>参考サイト</li>
   <li>使い方</li>
   <li>ReplaceFile.ps1</li>
 </ol>
<hr>
<p>1.参考サイト</p>
<p>以下のサイトを参考に作成しました</p>
<a href="http://totech.hateblo.jp/entry/2017/09/29/162411">
PowerShell スクリプトの実行が無効となっている場合の対処法 - カタカタブログ
</a>
<br>
<a href="https://qiita.com/sukakako/items/ede96f6227f010a0f328">
PowerShell を使ってテキストファイル読み込み/書きこみ - Qiita
</a>
<br>
<a href="http://totech.hateblo.jp/entry/2017/09/29/162411">
PowerShell を使ってテキストファイル読み込み/書きこみ - Qiita
</a>
<br>
<a href="https://www.atmarkit.co.jp/ait/articles/1607/13/news026.html">
【 Remove-Item 】コマンドレット――ファイルやフォルダを削除する：Windows PowerShell基本Tips（4） - ＠IT
</a>
<br>
<a href="http://piyopiyocs.blog115.fc2.com/blog-entry-854.html">
Windows PowerShell、テキストファイルの書き込み｜マコトのおもちゃ箱　～ぼへぼへ自営業者の技術メモ～
</a>
<br>
<a href="https://qiita.com/acuo/items/a4f83d886c4b8a7fcf52">
Powershellでの高度な置換 - Qiita
</a>
<br>
<a href="http://www.hirno.net/~wind/blog/2016/10/powershell-1.html">
[PowerShell] ファイルを読み込む際のひと手間 - りゃうけのブログ。
</a>
<br>
<a href="https://qiita.com/diskn/items/0299c13e1a6e3652e621">
PowerShellでテキストファイルを結合する - Qiita
</a>
<br>
<a href="https://bayashita.com/p/entry/show/102">
ファイルを削除する方法[PowerShell] : バヤシタ
</a>
<br>
<hr>
<p>2.使い方</p>
<p>
スクリプト内の入力フォルダ・出力フォルダのパスを適宜設定し、
スクリプトでの置換対象の文字列のリスト、置換後の文字列のリストを変えたいものに変更し、
置換元のファイルを入力フォルダに置き、実行することで置換ができます。

</p>
<hr>
<p>3.ReplaceFile.ps1</p>
<pre>
<code class="PowerShell">
##出力ファイルを出すフォルダ(適宜変更)
$outputFolder = &quot;C:\hoge\powerShellScript\output&quot;;

##入力ファイル(テンプレート)を置くフォルダ(適宜変更)
$templateFolder = &quot;C:\hoge\powerShellScript\template&quot;;

##入力ファイル(テンプレート)のファイル名(適宜変更)
##$templateFileNm = &quot;template1.txt&quot;;
$templateFileNm = &quot;template2.txt&quot;;

&lt;#
##置換対象の文字列(適宜変更)
$repStrList = @(&quot;##タスクタイトル##&quot;, &quot;##頻度区分##&quot;,&quot;##復活指定曜日##&quot;,&quot;##完了日時##&quot;);


##$repValListの変数も適宜変更
##置き換えパターンのリスト(テストパターン)
$repValList = @(
@(&quot;Task1&quot;,&quot;0&quot;,&quot;[0,0,0,0,0,0,0]&quot;,&quot;2019/04/04 00:00&quot;),
@(&quot;Task2&quot;,&quot;1&quot;,&quot;[0,0,0,0,0,0,0]&quot;,&quot;2019/04/05 00:00&quot;),
@(&quot;Task3&quot;,&quot;1&quot;,&quot;[0,0,0,0,0,0,0]&quot;,&quot;2019/04/04 00:00&quot;)
);
#&gt;

##置換対象の文字列2
$repStrList = @(&quot;##URL##&quot;,&quot;##URLタイトル##&quot;);

&lt;#置き換え文字列リスト2#&gt;
&lt;#
$repValList = @(
@(&quot;http://oscdis.hatenablog.com/entry/2014/03/19/082015&quot;,&quot;JavaScriptのJSONでDate型を扱う - 自分探せ&quot;),
@(&quot;https://pgmemo.tokyo/data/archives/512.html&quot;,&quot;DOM要素（＜div＞タグ）をJavaScriptで削除する｜プログラムメモ&quot;),
@(&quot;https://liginc.co.jp/programmer/archives/4&quot;,&quot;JavaScriptでTABLEを作る時にTHを入れたい | 東京上野のWeb制作会社LIG&quot;),
@(&quot;https://teratail.com/questions/49894&quot;,&quot;JavaScript - 動的に生成したbuttonにonClickを追加したい｜teratail&quot;)
);
#&gt;

&lt;#置き換え文字列リスト3#&gt;
$repValList = @(
@(&quot;http://totech.hateblo.jp/entry/2017/09/29/162411&quot;,&quot;PowerShell スクリプトの実行が無効となっている場合の対処法 - カタカタブログ&quot;),
@(&quot;https://qiita.com/sukakako/items/ede96f6227f010a0f328&quot;,&quot;PowerShell を使ってテキストファイル読み込み/書きこみ - Qiita&quot;)
);

&lt;#
##出力フォルダの内容をクリア
$clearFolder = $outputFolder + &quot;\&quot; + &quot;*.txt&quot;;
Remove-Item $clearFolder;
#&gt;

$readFilePath = $templateFolder + &quot;\&quot; + $templateFileNm;
##入力ファイルの内容を格納
$inputFileLines = (Get-Content $readFilePath -Encoding UTF8) -as [string[]];

$outputFileCount = 1;
foreach($testPattern1 in $repValList){

    $outputFileName = &quot;output&quot;+$outputFileCount+&quot;.txt&quot;;
    $outputFilePath = $outputFolder + &quot;\&quot; + $outputFileName;
    $outputFile = New-Object System.IO.StreamWriter($outputFilePath, [System.Text.Encoding]::UTF8);

    for($j=0; $j -lt $inputFileLines.Length; $j++){
        $line2 = $inputFileLines[$j];
        for($i=0; $i -lt $repStrList.Length; $i++){
            $line2 = $line2.Replace($repStrList[$i], $testPattern1[$i]);
        }
        $outputFile.WriteLine($line2);

    }

    $outputFile.Close();
    $outputFileCount++;
}

</code>
</pre>
<hr>


<script src="jquery-3.3.1.min.js"></script>