お時間をいただきありがとうございます。
私はPowerShellに慣れていないので、一連のテキストファイルを検索して特定の要素を選択し、それらを使用して他の要素を置き換えることができるスクリプトを作成しようとしています。コンテンツの例を次に示します。
OrderLine="0002" <Image>11770060002_outside.jpg</Image><Image>11770060002_inside.jpg</Image>
OrderLine="0003" <Image>11770060003_outside.jpg</Image><Image>11770060003_inside.jpg</Image>
したがって、私がやりたいことは、ステップスルーし、「OrderLine」値を選択して変数に入れ、「Image」値を置き換えることです。説明するよりも、意図した出力を表示する方がおそらく簡単です!
OrderLine="0002" <Image>11770060002.pdf</Image>
OrderLine="0003" <Image>11770060003.pdf</Image>
ご覧のとおり、ファイル名は置き換えられており、名前の末尾は OrderLine と同じです。ファイル内のオーダー ラインは 1 つだけの場合もあれば、150 の場合もありますが、ルールは常に同じです。
XML のように見えることはわかっていますが、有効ではない (聞かないでください) ため、そのままでは解析されず、テキスト ベースのソリューションである必要があります。
どんな助けでも感謝します!
編集:これは私がこれまでに持っているものです。これは機能しますが、ファイル名(ファイルの最初のエントリ、つまり0001と同じ)から値を取得するため、単一の注文のファイルでのみ機能します。上記のように、複数の OrderLine エントリに対処するためにルーチンを更新する必要があります。
$File_Folder = "C:\PSTEST\TEST\"
$Output_Folder = "C:\PSTEST\TEST\OUTPUT\"
$array = Get-ChildItem $File_Folder\*.xml
foreach($item in $array){
$xml_filename = $item.FullName.substring($File_Folder.Length)
$just_filename = $xml_filename -replace ".xml", ""
$just_filename = $just_filename -replace "Order_PO", ""
$replace_outside_original = '<image>' + $just_filename + '_outside.jpg</Image>'
$replace_outside_with = '<image>' + $just_filename + '.pdf</image>'
$replace_inside_original = '<image>' + $just_filename + '_inside.jpg</Image>'
$replace_inside_with = ''
$destination_file = $Output_Folder + 'Order_PO' + $just_filename + '.xml'
(Get-Content $File_Folder\$xml_filename) | Foreach-Object {
$_ -replace $replace_outside_original, $replace_outside_with `
-replace $replace_inside_original, $replace_inside_with `
} | Set-Content $destination_file
}