Aby sprawdzić w PowerShell, czy plik jest obecnie otwarty przez inną aplikację lub proces, można skorzystać z modułu Microsoft.PowerShell.Management
. Moduł ten dostarcza różne funkcje do zarządzania plikami i folderami. Jedną z tych funkcji jest Test-Path
, która może być wykorzystana do sprawdzenia, czy plik istnieje.
Oto przykład, jak można użyć Test-Path
do sprawdzenia, czy plik jest otwarty:
$filePath = "C:\ścieżka\do\pliku.txt"
if (Test-Path $filePath) {
try {
$fileStream = [System.IO.File]::Open($filePath, 'Open', 'Read', 'None')
$fileStream.Close()
Write-Host "Plik jest dostępny i nie jest obecnie otwarty."
}
catch {
Write-Host "Plik jest obecnie otwarty."
}
}
else {
Write-Host "Plik nie istnieje."
}
W tym przykładzie najpierw sprawdzamy, czy plik istnieje przy użyciu Test-Path
. Jeśli plik istnieje, próbujemy go otworzyć za pomocą [System.IO.File]::Open
z trybem „Open”, „Read” i „None”. Jeśli nie ma żadnych wyjątków, oznacza to, że plik jest dostępny i nie jest otwarty przez inną aplikację lub proces. W przeciwnym razie, jeśli wystąpi wyjątek, można stwierdzić, że plik jest obecnie otwarty.
Pamiętaj, że ta metoda nie jest w 100% niezawodna, ponieważ otwarcie pliku może zależeć od uprawnień użytkownika i innych czynników.