我有这段代码可以更改字符串(如果存在)。它完美地运作。但是,即使文件中不存在Server1字符串,它也会更改文件的修改日期。我需要它做的是如果字符串Server1不存在忽略并转移到文件夹中的其余文件。
有谁在这里知道如何实现这个目标?
$filenames = Get-ChildItem "C:\test\*.dtsconfig" -Recurse |
select -Expand FullName
foreach ($filename in $filenames) {
(Get-Content $filename) -replace 'Server1', 'Server2' | Set-Content $filename
}
答案 0 :(得分:0)
仅当文件实际包含字符串“Server1”时才写入文件:
$txt = Get-Content $filename
if ($txt -like '*Server1*') {
$txt -replace 'Server1', 'Server2' | Set-Content $filename
}
答案 1 :(得分:-1)
$fileNames = Get-ChildItem "C:\test\*.dtsconfig" -Recurse | Select -Expand FullName
foreach ($filename in $filenames) {
$file = Get-Content $fileName
If ($file -like "*Server1*") {
Get-Content $fileName -replace 'Server1', 'Server2' | Set-Content $fileName
}
}
我在if语句中添加了它,因此在进行任何更改之前会进行检查。