我的脚本运行正常,并根据需要进行更改。只发出它确实是我的输入文件大小保持不变,输出文件保持加倍。我怎么能阻止它?输入是我的原始文件!!当我比较我可以看到变化,但我的输出ctg文件加倍!请帮忙
$data = @(
@{
pattern = "LACTION 'SQL\(''logility_prod_scp_logility'',"
replacement = "LACTION 'SQL(''LOGILITY_PROD_SCP_LOGILITY'',"
inputFile = "C:\files\DW_FEI_input.ctg"
outputFile = "C:\files\DW_FEI_output.ctg"
},
@{
pattern = "LACTION 'SQL\(''dwfei'',"
replacement = "LACTION 'SQL(''DW_FEI'',"
inputFile = "C:\files\DW_FEI_input.ctg"
outputFile = "C:\files\DW_FEI_output.ctg"
},
@{
pattern = "LACTION 'SQL\(''DWFEI'',"
replacement = "LACTION 'SQL(''DW_FEI'',"
inputFile = "C:\files\DW_FEI_input.ctg"
outputFile = "C:\files\DW_FEI_output.ctg"
}
)
$data |
ForEach-Object {
(Get-Content $_.inputFile) -replace $_.pattern, $_.replacement | Out-File $_.outputFile
}
答案 0 :(得分:0)
今天,您正在运行此过程以在源.ctg
文件中交换一系列令牌。我建议将每个步骤移动到.CSV
文件中的行中,如下所示:
#This
$pattern = "LACTION 'SQL\(''logility_prod_scp_logility'',"
$replacement = "LACTION 'SQL(''LOGILITY_PROD_SCP_LOGILITY'',"
我们会将这两个字符串移动到.CSV
文件中的列中,如下所示。请注意,由于您的字段中有逗号很多,我建议使用分号代替:
Source;Target
"LACTION 'SQL\(''logility_prod_scp_logility'',";"LACTION 'SQL(''LOGILITY_PROD_SCP_LOGILITY'',"
我们可以像这样检索这些值:
$strings | convertfrom-csv -Delimiter ';'
首先,您应该将所有令牌从这九个步骤手动移动到分号分隔值列表中。
其次,完成此操作后,您可以遍历.CSV
中的每一行,只用六行替换所有令牌。
$string = Import-Csv -Delimiter ';' -Path c:\PathTo\YourFile.csv
ForEach($string in $strings){
(Get-Content "C:\files\DW_FEI_DEV_input.ctg") -replace $string.Source,$string.Target |
Out-File "C:\files\DW_FEI_DEV_output.ctg"
}