17.08.2023

Powershell veri biçimlendirme

Türkçe yerel ayarları olan bir bilgisayarda Powershell kullanırken ondalık sayıları yazarken ondalık ayraç nokta "." ama ekrana bastırırken virgüldür ","

$veri = 1222333.456789 # ondalık sayı

"{0:f}"  -f $veri # 1222333,57
"{0:f3}" -f $veri # 1222333,568
"{0:e}"  -f $veri # 1,222334e+006
"{0:E}"  -f $veri # 1,222334E+006
"{0:n}"  -f $veri # 1.222.333,57

$veri = 1299.99 # para birimi

"{0:c}" -f $veri # ₺1.299,99

$veri = 1234 # tamsayı

"{0:n}"    -f $veri # 1.234,00
"{0:d8}"   -f $veri # 00001234 (sola sıfır ekler)
"{0,8:n0}" -f $veri # ___1.234 (sayıdan önce 3 boşluk olur)

$veri = 255 # 16'lık düzen

"{0:x}"  -f $veri # ff
"{0:X4}" -f $veri # 00FF

#veri = 0.25 # yüzde

"{0:p}"  -f $veri # %25,00
"{0:p1}" -f $veri # %25,0
"{0:p0}" -f $veri # %25

# veri = Get-Date # tarih

"{0:d}"  -f $veri # 17.08.2023
"{0:D}"  -f $veri # 17 Ağustos 2023 Perşembe
"{0:f}"  -f $veri # 17 Ağustos 2023 Perşembe 15:17
"{0:F}"  -f $veri # 17 Ağustos 2023 Perşembe 15:17:41
"{0:g}"  -f $veri # 17.08.2023 15:17
"{0:g}"  -f $veri #
17.08.2023 15:17:42
"{0:r}"  -f $veri # Thu, 17 Aug 2023 15:17:41 GMT
"{0:o}"  -f $veri # 2023-08-17T15:17:41.0556971+03:00
"{0:yy-MM-dd}"  -f $veri # 23-08-17

Burada

d: kısa tarih
D: uzun tarih
f: uzun tarih, kısa saat
F: uzun tarih, uzun saat
t: kısa saat
T: uzun saat
g: kısa genel tarih biçimi
G: uzun genel tarih biçimi
yy: yılın son 2 hanesi (23 gibi)
yyyy: tam yıl biçimi (2023 gibi)
M: İçinde bulunulan ay, mümkünse tek haneli sayı
MM: İçinde bulunulan ay, çift haneli (tek ise önüne sıfır ekler)
MMM: İçinde bulunulan ay, 3 karakterli kısaltma
MMMM: İçinde bulunulan ay, tam adı
d : Ayın günü, tek haneli
dd: Ayın günü, çift haneli
hh: Saat, 12 saatlik düzende
HH: Saat, 24 saatlik düzende
mm: Dakika
ss: Saniye 

Tarih için ayrıca Get-Date ile -Format parametresi de benzer iş görür.

PS> Get-Date -Format "yyyy-MM-dd HH:mm:ss"

2023-08-17 15:17:41

Get-Date'in bir de -UFormat parametresi var:

Get-Date -UFormat %V # yılın haftasını verir (1-52)

10'luk düzende bir sayıyı 16'lık düzende görmek için yukarıdaki gibi

PS> "{0:x}" -f 252   # fc

kullanılabilir. Ama daha genel olarak bir sayıyı herhangi bir düzende yazmak için

PS> [Convert]::ToString(252,2)
11111100

kullanılabilir.

16'lık düzendeki bir sayıyı girmek için başına 0x koymak yeterli:

0xfc    # onluk düzende 252'ye karşılık gelir

Veya ikilik düzendeki bir sayıyı girmek için başına 0b koymak gerek:

0b11111100    # bu da 252

Veya şu şekilde dönüştürmek de işimize yarayabilir:

[Convert]::ToInt32("11111100",2)
252

Bir dosyanın içeriğini hex olarak görmek için

PS> $icerik = cat '.\file.txt' -Encoding Byte -Raw
PS> [System.BitConverter]::ToString($icerik).Replace("-","") 

Daha kolay bir yol, belki, Format-Hex kullanmak:

PS> Format-Hex -Path '.\file.txt'

Tek satırda/cümlede birden fazla veri biçimlendirme:

PS> $veri1=1199; $veri2=5231; $veri3=3199.99
PS> "ilk sayımız {0:d8}, sonraki {1:e2} ve nihayet {2:f4}" -f $veri1, $veri2, $veri3
ilk sayımız 00001199, sonrajş 5,23e+003, ve nihayet 3199,9900

Şu sayfadan güzel birkaç örnek:

PS> "|{0,-10}| |{1,10}|" -f "hello", "world"
|hello     ||     world|

PS> "{0:###-##-##}" -f 1234567
123-45-67

Sonuna 3 haneli tamsayılar eklenmiş Name001, Name002,... gibi 100 isim üretmek:

PS> 1..100 | % { 'Name{0:d3}' -f $_ }

Bir karakterin 16'lık düzendeki karşılığı

PS> '0x' + "{0:x}" -f [int][char]'A'
0x41



Hiç yorum yok: