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 \'ı aktardık. $path yolunu bir diziye bölmek için /code> yöntemini kullanın. Son olarak bu diziyi $pathIntoArray değişkenine kaydettik.

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.pdf

Bu ö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 -Split bir 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 -Split operatö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 -Split operatö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-Host cmdlet'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 Samples

Yukarı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 $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 dosyası.

Daha sonra, $pathIntoArray'de depolanan iki farklı diziyi elde etmek için Split() yöntemini $path ve $directory ile ayrı ayrı zincirledik. ve $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.

`n PowerShell'de benzersiz bir karakterdir; yeni bir satır karakteri eklemek için bunu Write-Host cmdlet'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): True

Yine $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 @() ile temsil edilen dizi operatörünün içine yerleştirdiğimiz pathIsAbsolute. Son olarak bu diziyi $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.

İlgili makaleler