PowerShell Yolu Diziye Bölme [4 Yol]
PowerShell'de Yolu Diziye Böl
Split() Yöntemini Kullanma
Yolu PowerShell'de bir diziye bölmek için Split() yöntemini kullanın.
Split() Yöntemini kullanın:
$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathIntoArray = $path.Split("\")
$pathIntoArrayÇIKTI:
C:
Users
John
Desktop
Samples
House_Prediction_Using_Two_File_Dataset.pdfÖncelikle bir $path değişkeni tanımladık ve değerini yukarıda gösterildiği gibi bir yola ayarladık; bunu kendi yolunuzla başlatabilirsiniz. Daha sonra, Split() yöntemini $path değişkeniyle zincirledik ve Split()<'e sınırlayıcı olarak değişkenine kaydettik.\'ı aktardık. $path yolunu bir diziye bölmek için /code> yöntemini kullanın. Son olarak bu diziyi $pathIntoArray
Dizinin elemanlarını almak için indeks operatörünü kullanabiliriz.
Dizideki son öğeyi alın:
$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathIntoArray = $path.Split("\")
$last = ($pathIntoArray)[-1]
$lastÇIKTI:
House_Prediction_Using_Two_File_Dataset.pdfÖrneğin:
-Split Operatörünü Kullanma
Yolu PowerShell'de bir diziye bölmek için -Split operatörünü kullanın.
-Split Operatörünü kullanın:
$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathIntoArray = $path -Split "\\"
$pathIntoArrayÇIKTI:
C:
Users
John
Desktop
Samples
House_Prediction_Using_Two_File_Dataset.pdfBu örnek öncekine benzer, ancak bu kez bağımsız değişken olarak \ alan -Split operatörünü kullandık. -Split operatörünü kullanırken \'in iki katına çıkarılması gerektiğini unutmayın. Ayrıca önceki kod çitinden farklı olarak diziyi $pathIntoArray değişkeninde sakladık.
-Split operatörü ve Split() yöntemi aynı şeyi gerçekleştiriyorsa neden bunları ayrı ayrı kullanasınız ki diye merak edebilirsiniz. Her ikisinin de bir dizeyi bir alt dize dizisine böldüğü konusunda haklısınız, ancak bazı benzerlikler ve farklılıklar aşağıda listelenmiştir:
- Öncelikle,
Split()bir yöntem ve-Splitbir operatör olduğundan farklı söz dizimlerine sahiptirler; anlamak için son iki örneğe bakabilirsiniz. - Her ikisi de dizeyi sağlanan sınırlayıcıya göre böler; ancak
-Splitoperatörü, sağlanan normal ifadelere göre bölünebilir, bu da onu daha güçlü kılar. - Her ikisi de bir dizi dize döndürür; GetType() yöntemini kullanarak döndürülen türü kontrol edebilirsiniz. Örneğin,
$pathIntoArray.GetType(). - Performans açısından
Split()yöntemi, özellikle tek bir sınırlayıcıya dayalı olarak bölme yaptığımızda-Splitoperatöründen daha hızlıdır. Ancak-Split, sınırlayıcı olarak normal ifade düzenine izin verdiği için karmaşık kalıplara dayalı bölme işlemi sırasında daha hızlı olabilir.
Artık -Split ile Split() arasındaki benzerlikleri ve farklılıkları biliyorsunuz, bu nedenle proje ihtiyaçlarınıza en uygun olanı seçin.
Şu ana kadar belirtilen dosyanın yolunu bir diziye nasıl böleceğimizi öğrendik, peki ya verilen dosyanın dizinini ve yolunu ayrı dizilere bölmemiz gerekiyorsa? Bu ne anlama geliyor? C:\Users\John\Documents\file.txt yoluna sahip olduğumuzu varsayalım. Yolu bir diziye bölmek C:, Kullanıcılar, John, Belgeler ve ile sonuçlanır dizi öğeleri olarak file.txt; dizini bölerken C:, Kullanıcılar, John ve Belgeler bulunur dizi öğeleri olarak.
Dizin bir diziye nasıl bölünür? Bunu aşağıdaki bölümde öğrenelim.
PowerShell'de Dizini Diziye Bölme
System.IO.Path Sınıfını Kullanma
Belirtilen dosyanın dizinini ve yolunu ayrı dizilere bölmek için:
- Bir dosyanın yolunu bir değişkende saklayın.
- Verilen dosyanın dizinini almak için
GetDirectoryName()komutunu kullanın. - Yolun bir dizisini elde etmek için
Split()yöntemini ilk adımda oluşturulan yol değişkeniyle zincirleyin. - Dizinin bir dizisini elde etmek için
Split()yöntemini ikinci adımda oluşturulan dizin değişkeniyle zincirleyin. - Özelleştirilmiş sonuçları yazdırmak için
Write-Hostcmdlet'ini kullanın.
System.IO.Path Sınıfını Kullanın:
$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$directory = [System.IO.Path]::GetDirectoryName($path)
$pathIntoArray = $path.Split("\")
$directoryIntoArray = $directory.Split("\")
Write-Host "A path into an array:`n$pathIntoArray"
Write-Host "A directory into an array:`n$directoryIntoArray"ÇIKTI:
A path into an array:
C: Users John Desktop Samples House_Prediction_Using_Two_File_Dataset.pdf
A directory into an array:
C: Users John Desktop SamplesYukarıdaki çıktıda dizi elemanları tek bir boşlukla ayrılmıştır. Peki bu dizileri nasıl elde ettik? Öncelikle House_Prediction_Using_Two_File_Dataset.pdf dosyasının yolunu $path değişkenine kaydettik. Daha sonra, dizinini almak için parametre olarak dosyası.$path sağlanan Path sınıfının GetDirectoryName() yöntemini kullandık. $directory değişkeninde sakladığımız House_Prediction_Using_Two_File_Dataset.pdf
Daha sonra, $pathIntoArray'de depolanan iki farklı diziyi elde etmek için ve Split() yöntemini $path ve $directory ile ayrı ayrı zincirledik. $directoryIntoArray değişkenleri. Sınırlayıcı olarak \ yöntemini Split() yöntemine ilettiğimizi unutmayın. Son olarak, PowerShell terminalinde özelleştirilmiş çıktıyı görüntülemek için Write-Host cmdlet'ini kullandık.
`
nPowerShell'de benzersiz bir karakterdir; yeni bir satır karakteri eklemek için bunuWrite-Hostcmdlet'iyle birlikte kullandık.
Şimdi dizi elemanları üzerinde tam kontrol istediğimiz bir durumu düşünün. Örneğin, yolu, dizi öğeleri olarak ebeveyn, yaprak ve niteleyiciye sahip bir diziye bölmek istiyoruz. Bunlar nelerdir ve bunu nasıl yapabiliriz? Öğrenmek için aşağıdaki bölüme bakın.
Split-Path Cmdlet'ini kullanma
PowerShell'de bir dizi oluşturmak amacıyla yolun çeşitli bölümlerini almak için Split-Path cmdlet'ini kullanın.
Bölünmüş Yol Cmdlet'ini kullanın:
$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathParent = Split-Path $path -Parent
$pathLeaf = Split-Path $path -Leaf
$pathQualifier = Split-Path $path -Qualifier
$pathIsAbsolute = Split-Path $path -IsAbsolute
$pathIntoArray = @("Parent of the path: $pathParent",
"Leaf of the path: $pathLeaf",
"Qualifier of the path: $pathQualifier",
"Is the path absolute? (True/False): $pathIsAbsolute")
$pathIntoArrayÇIKTI:
Parent of the path: C:\Users\John\Desktop\Samples
Leaf of the path: House_Prediction_Using_Two_File_Dataset.pdf
Qualifier of the path: C:
Is the path absolute? (True/False): TrueYine $path değişkenini tanımladık ve başlattık. Daha sonra Split-Path cmdlet'ini dört kez kullandık; $path'ın belirtilen kısmını almak için her seferinde farklı bir parametre kullanın. Bu parametreler arasında -Parent, -Leaf, -Qualifier ve -IsAbsolute bulunur. -Parent parametresini kullanarak House_Prediction_Using_Two_File_Dataset.pdf dosyasının üst klasörünü aldı. Varsayılan parametredir, yani -Parent parametresini atlasak bile ana klasörü alabileceğimiz anlamına gelir.
-Leaf parametresi bize dosya adını sağlarken, -Qualifier belirtilen dosyanın kök dizinini aldı. Son olarak, -IsAbsolute parametresi bir Boolean değeri döndürdü; yol mutlak bir yolsa True; aksi halde Yanlış. Mutlak yol nedir? Bu, C:\Users\John\Documents\file.txt gibi kökten geçerli dosyaya kadar uzanan eksiksiz bir dosya yoludur.
Her parametre için döndürülen değeri ayrı bir değişkende sakladık: $pathParent, $pathLeaf, $pathQualifier ve $onlardan bir dizi oluşturmak için . Son olarak bu diziyi @() ile temsil edilen dizi operatörünün içine yerleştirdiğimiz pathIsAbsolute$pathIntoArray değişkenine kaydettik.
Dizi operatörünü (
@()) kullanırken her dizi öğesini daha anlaşılır kılmak için özelleştirilmiş bir mesaj yazdık.
Bu, PowerShell'de diziye bölünmüş yoldur.
