作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一段 powershell 代码来搜索和替换文本文件中的某个字符串。在我的示例中,我想将 23-06-2016' 替换为 '24-06-2016'。下面的脚本完成这项工作:
$original_file = 'file.old'
$destination_file = 'file.new'
(Get-Content $original_file) | Foreach-Object {
$_ -replace '23-06-2016', '24-06-2016' `
} | Out-File -encoding default $destination_file
$dates = @("23-06-2016","24-06-2016","27-06-2016")
$original_file = 'file.old'
$destination_file = 'file.new'
foreach ($date in $dates) {
(Get-Content $original_file) | Foreach-Object {
$_ -replace 'date', 'date++' `
} | Out-File -encoding default $destination_file
}
最佳答案
您正在使用 $date
作为您的 foreach
中的实例变量循环,然后将其引用为 'date'
,这只是一个字符串。即使你使用了 '$date'
它不起作用,因为单引号字符串不会扩展变量。
此外,$date
不是数字,所以 date++
即使它被引用为变量 $date++
也不会做任何事情.更进一步,$var++
在递增之前返回原始值,因此您将引用相同的日期(而不是前缀版本 ++$var
)。
在 foreach
循环,在大多数情况下,引用其他元素不是很实用。
相反,您可以使用 for
环形:
for ($i = 0; $i -lt $dates.Count ; $i++) {
$find = $dates[$i]
$rep = $dates[$i+1]
}
[hashtable]
可能会更好它使用要查找的日期作为键,并使用替换日期作为值。当然,你会复制一些日期作为值和键,但我想我更想清楚:
$dates = @{
"23-06-2016" = "24-06-2016"
"24-06-2016" = "27-06-2016"
}
foreach ($pair in $dates.GetEnumerator()) {
(Get-Content $original_file) | Foreach-Object {
$_ -replace $pair.Key, $pair.Value
} | Out-File -encoding default $destination_file
}
关于powershell - 循环遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40000691/
我是一名优秀的程序员,十分优秀!