Ce face Test-Path
Test-Path întoarce True dacă toate elementele căii există și False dacă lipsește vreunul. Este verificarea standard înainte de a crea, citi sau șterge un fișier, de obicei într-un if.
-PathType Leaf cere ca ultimul element să fie un fișier, -PathType Container un folder. -IsValid verifică doar dacă sintaxa căii e corectă, nu și dacă există. Un șir format doar din spații întoarce False, iar $null produce o eroare.
-NewerThan și -OlderThan compară data ultimei modificări. Din PowerShell 7.5 pot fi folosite împreună (un interval), cu orice -PathType și pentru foldere; în versiunile mai vechi, în aceste cazuri erau ignorate.
Parametri
| Parametru | Descriere |
|---|---|
-Path |
Calea de verificat; acceptă wildcard-uri și intrare din pipeline. |
-PathType |
Any, Container (folder) sau Leaf (fișier). Alias -Type. |
-IsValid |
Verifică doar sintaxa căii, indiferent dacă există. |
-NewerThan / -OlderThan |
Elementul trebuie să fie modificat după / înainte de data dată (doar în sistemul de fișiere). |
-Include / -Exclude / -Filter |
Verifică doar elementele care se potrivesc tiparului. |
-LiteralPath |
Calea folosită exact cum e scrisă, fără wildcard-uri. |
Ce returnează
Un Boolean: True sau False.
Exemple
Exemplul 1: Există sau nu?
Primul folder există, al doilea nu.
Test-Path -Path C:\Proiecte\facturi
Test-Path -Path C:\Proiecte\contracte
Ieșire în terminal
True
False
Exemplul 2: Fișier sau folder
C:\Proiecte\facturi este un folder, deci Leaf întoarce False și Container întoarce True.
Test-Path -Path C:\Proiecte\facturi -PathType Leaf
Test-Path -Path C:\Proiecte\facturi -PathType Container
Ieșire în terminal
False
True
Exemplul 3: Creează folderul doar dacă lipsește
Un tipar des întâlnit în scripturi: verifici, creezi dacă e nevoie, și ascunzi ieșirea lui New-Item cu Out-Null.
$dosar = 'C:\Proiecte\facturi\2027'
if (-not (Test-Path -Path $dosar)) {
New-Item -Path $dosar -ItemType Directory | Out-Null
Write-Output "Am creat $dosar"
} else {
Write-Output "$dosar există deja"
}
Ieșire în terminal
Am creat C:\Proiecte\facturi\2027
Greșeli frecvente
- Între
Test-Pathși operația următoare fișierul poate apărea sau dispărea (de exemplu alt proces îl șterge). Pentru operații critice, tratează și erorile cutry/catchși-ErrorAction Stop. Test-Path $calecu$caleegal cu$nullnu întoarceFalse, ci o eroare. Verifică întâi variabila (if ($cale -and (Test-Path $cale))).- Un nume cu
[]poate întoarceFalsedeși fișierul există, pentru că parantezele sunt wildcard-uri. Folosește-LiteralPath.
Comenzi înrudite
New-Item: Creează un fișier, un folder sau un link; poate pune și conținut inițial în fișierul nou.Remove-Item: Șterge fișiere și foldere (și alte elemente, ca chei de registry); ștergerea este definitivă, nu în Coșul de reciclare.if / elseif / else: if rulează un bloc de cod doar când condiția e adevărată; elseif și else tratează celelalte cazuri, iar ?: (din PowerShell 7.0) e forma scurtă.try / catch / finally: try/catch prinde erorile care opresc o comandă, iar finally rulează mereu; pentru erorile obișnuite ale cmdlet-urilor pui -ErrorAction Stop.Get-Date: Get-Date întoarce data și ora curentă (sau una dată) ca obiect [datetime], pe care îl formatezi cu -Format și îl calculezi cu .AddDays().