Если нужно проверить, существует ли папка или файл в скрипте PowerShell, то нужно воспользоваться командой «Test-Path». Она возвращает «True», если файл или папка существует, и «False», если файла или папки нет.
#Обновлено 21 мая 2020 года
$fpath = "C:\output.xml"
if ($isfile) {
Write-host "Файл существует"
}
else {
Write-host "Файл не существует"
}
Более подробную информацию о возможностях команды “Test-Path” можно узнать, введя в консоли PowerShell команду «man Test-Path». С помощью этой команды можно работать не только с папками и файлами, но и, к примеру, с переменными окружения Windows и ветками реестра.
Спасибо автору, выручил. Только у меня была проблема: «True» которая хранится в $isfile не равна строчной «True». решилось просто добавлением строки:
[string]$isfile = $(Test-Path $fpath)
Убейте автора поста! Кто так пишет?
Во первых: Test-Path $fpath возвращает значение $True или $False, но не «True» и не «False»
Во вторых: команда IF не нуждается в сравнении с $true или $false.
Правильная строка сравнения будет:
if ($isfile) {
Write-host «Файл существует»
}
else {
Write-host «Файл не существует»
}
Спасибо за более корректный код! Вообще, когда вижу свою исходники 2-3 летней давности, то прям ругаю себя. Этому посту уже более 4 лет, тогда с PowerShell я только знакомился.
Автор — чудак на букву М, код — НЕРАБОЧИЙ!НЕРАБОЧИЙ!НЕРАБОЧИЙ!НЕРАБОЧИЙ!НЕРАБОЧИЙ!НЕРАБОЧИЙ!НЕРАБОЧИЙ!
Как правильно заметил комментатор выше — там логическое Истина/Ложь, которое некорректно сравнивать со строкой
if (!(Test-Path $fpath)) — так будет работать.
Из-за этой говностатьи потратил полчаса пытаясь понять какого Х оно не работает, с приличного же вроде сайта копирнул.
Целых полчаса! ужас! 🙂
Я за 6 лет уже забыл, что там писал.
Вообще странно, что так ценящий время не знает английского 🙂
А где в примере, собственно, Test-Path? ¯\_(ツ)_/¯
Непонятно, что такое $isfile и каким образом он определяет, есть файл или нет.