2017-06-01 104 views
1

我有這段代碼,如果它存在更改字符串。它完美的作品。但是,即使文件中不存在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

寫,只有當它實際上包含字符串「服務器1」的文件:

$txt = Get-Content $filename 
if ($txt -like '*Server1*') { 
    $txt -replace 'Server1', 'Server2' | Set-Content $filename 
} 
-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語句添加,因此在進行任何更改之前檢查。

+0

只有在沒有其他文本與「Server1」一詞排成一行時,纔會起作用,這對於* .dtsconfig文件來說不太可能。 –

+0

啊,是的非常真實!我已更新爲使用類似的運算符,並在值的任何一側都包含通配符。 – Random206