Powershell 仅当变量不';文件中不存在

Powershell 仅当变量不';文件中不存在,powershell,file-io,unique,Powershell,File Io,Unique,目标:仅当文本文件中不存在变量时,才将变量写入该文本文件 我在做什么: if (! (Get-Content "C:\historique.txt" | Where-Object {$_ -like $var})) { $var | Out-File -Encoding Ascii -FilePath "C:\historique.txt" -Append -Force } “如果在文件中找不到$var,则输出文件…” 这是可行的,但这是最好/最快的方法吗?文件不会太大,但我希望它尽可

目标:仅当文本文件中不存在变量时,才将变量写入该文本文件

我在做什么:

if (! (Get-Content "C:\historique.txt" | Where-Object {$_ -like $var})) {
    $var | Out-File -Encoding Ascii -FilePath "C:\historique.txt" -Append -Force
}
“如果在文件中找不到$var,则输出文件…”


这是可行的,但这是最好/最快的方法吗?文件不会太大,但我希望它尽可能优化。

您可以使用
-notmatch
正则表达式比较,查看文件内容是否没有
$var
中所需的字符串,如下所示:

$file = 'C:\historique.txt'
$var  = 'blah'
if ((Get-Content -Path $file -Raw) -notmatch [regex]::Escape($var)) {
    Add-Content -Path $file -Value $var -Encoding Ascii -Force
}

您可以使用
-notmatch
regex比较来查看文件内容在
$var
中是否没有所需的字符串,如下所示:

$file = 'C:\historique.txt'
$var  = 'blah'
if ((Get-Content -Path $file -Raw) -notmatch [regex]::Escape($var)) {
    Add-Content -Path $file -Value $var -Encoding Ascii -Force
}

我会用文本的内容创建一个变量,并在最后写为一行,而不是一次又一次地添加一行。我会用文本的内容创建一个变量,并在最后写为一行,而不是一次又一次地添加一行。好的,非常感谢。好的,非常感谢。