Out-File, только если переменная не существует в файле - PullRequest
0 голосов
/ 24 января 2019

Цель: записывать переменную в текстовый файл ТОЛЬКО, если он еще не существует в этом текстовом файле.

Что я делаю:

if (! (Get-Content "C:\historique.txt" | Where-Object {$_ -like $var})) {
    $var | Out-File -Encoding Ascii -FilePath "C:\historique.txt" -Append -Force
}

"Если $ var НЕ найден в файле, Out-File ..."

Это работает, но это лучший / самый быстрый подход? Файл не будет очень большим, но я хочу, чтобы он был максимально оптимальным.

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать регулярное выражение -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
}
...