powershell - 使用以下命令的 Powershell 自动化脚本可一次性更新
问题描述
我的脚本工作正常,并根据需要进行更改。唯一的问题是我的输入文件大小保持不变,输出文件不断加倍。我怎么能阻止它?输入是我的原始文件!!当我比较时,我可以看到变化,但我的输出 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
}
解决方案
.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"
}
推荐阅读
- css - 当我将鼠标悬停在按钮上时,左侧下拉边框未显示在页面上
- r - 如何在 R 中将 NetCDF 文件“NDVI NOAA AVHRR”读取为栅格?
- python - spark python读取多个csv到数据框
- keras - LSTM 输入比输出长
- amazon-web-services - AWS.CloudWatch SDK 与 CLI 产生不同的结果
- r - 在 R 中使用 cut 作为函数的一部分来计算五分位数
- android - “无法播放此视频”错误使用带有 VideoView 和 Mediacontroller 的 URL
- javascript - 即使使用了回调,函数也在异步函数之前执行
- ios - 快速创建具有第三方依赖项的 iOS 编译 SDK(使用 CocoaPods)
- file - 如何在 Unix 命令行中查看任何文件(例如纯文本)中的隐藏格式元素(例如换行符或制表符)?