я думаю, что это то, что вы пытаетесь сделать:
$SEL = Select-String -Path C:\Temp\File.txt -Pattern "Test"
if ($SEL -ne $null)
{
echo Contains String
}
else
{
echo Not Contains String
}
в вашем примере, вы определяете строку с именем $SEL
, а затем проверка I е равно $null
(которые, конечно, всегда будут вычисляться false
, потому что строка вы определяете не $null
!)
Кроме того, если файл содержит шаблон, он будет возвращать что-то вроде:
C:\Temp\File.txt:1:Test
Поэтому убедитесь, чтобы переключить ваш -eq
в -ne
или поменять местами if/else
команды вокруг, потому что в настоящее время вы вторя Contains String
когда $SEL
является $null
, что в обратном направлении.
Проверить SS64 для объяснения и полезные примеры для всего в PowerShell
и cmd
Другой способ проверки, если существует строка в файле будет:
If (Get-Content C:\Temp\File.txt | %{$_ -match "test"})
{
echo Contains String
}
else
{
echo Not Contains String
}
, но это не дайте указатель где в файле есть файл. Этот метод также работает по-другому, поскольку вы сначала получаете содержимое файла с Get-Contents
, поэтому это может быть полезно, если вам нужно выполнить другие операции над ними, после проверки наличия вашей строки.
Хорошо, что работает для меня Thx :) –