2009-03-11 11 views
11

Ich beginne jetzt, PowerShell und nach einer Menge Zeit mit den Unix-Shells zu verwenden und möchte wissen, wie man nach dem Vorhandensein einer Datei oder eines Verzeichnisses sucht.Wie verwendet man das FileInfo-Objekt von Powershell

In Powershell warum gibt Exist false in dem folgenden Ausdruck zurück?

PS H:\> ([System.IO.FileInfo]"C:\").Exists 
False 

Und gibt es einen besseren Weg, um zu überprüfen, ob eine Datei ein Verzeichnis als ist:

PS H:\> ([System.IO.FileInfo]"C:\").Mode.StartsWith("d") 
True 

Antwort

20

Use 'Test-Pfad' statt System.IO.FileInfo.Exists

PS C:\Users\m> test-path 'C:\' 
True 

können Sie PSIsContainer verwenden, um zu bestimmen, ob eine Datei ein Verzeichnis ist:

PS C:\Users\m> (get-item 'c:\').PSIsContainer 
True 

PS C:\Users\m> (get-item 'c:\windows\system32\notepad.exe').PSIsContainer 
False 
7
Help Test-Path 

Test-Path Determines whether all elements of a path exist 

Test-Path -PathType Leaf C:\test.txt 
Test-Path -PathType Container C:\ 
Test-Path C:\ 
10

Neben Michael's answer Sie auch mit testen können:

PS H:> ([System.IO.DirectoryInfo]"C:\").Exists 
True 
7

In Powershell, warum in dem folgenden Ausdruck nicht gibt false zurück?

 
    PS H:> ([System.IO.FileInfo]"C:\").Exists 

Da keine Datei "C: \" genannt, gibt es - es ist ein Verzeichnis.

+0

ich Unix gewohnt bin, wo ein Verzeichnis zu einer Datei ist. – BeWarned

1

Sie können Get-Item verwenden, damit PowerShell zwischen FileInfo und DirectoryInfo auswählen kann. Es wird eine Ausnahme ausgelöst, wenn der Pfad nicht zu einem Ort aufgelöst wird.

PS> $(Get-Item "C:\").GetType() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  DirectoryInfo       System.IO.FileSystemInfo 

würde ich nur diese über Test-Path verwenden, wenn Sie den DirectoryInfo oder FileInfo Eintrag benötigen, wenn es vorhanden ist.

0

Beide bewerten, um wahr

$(Get-Item "C:\").GetType() -eq [System.IO.DirectoryInfo] 
$(Get-Item "C:\test.txt").GetType() -eq [System.IO.FileInfo] 
Verwandte Themen