在此先感谢您的时间。
我是 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 相同。文件中可能只有一个订单行,或者可能有 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
}