טיפ: תתחילו להשתמש עם PowerShell
-
לפעמים אתם צריכים משהו שכמעט שווה לכתוב תוכנה כדי לעשות אותו. אבל הצורך כל כך מקומי וחד פעמי, אז נו באמת. אז מחפשים כלי קיים שיעזור. אבל זה די מאתגר כל פעם לשלוף את הכלי המתאים בשביל משהו כה פשוט. דוגמאות?
מה אתם עושים במקרה ו:- יש לכם טקסט ואתם צריכים לדעת בדיוק מה אורכו, מה אתם עושים?
- ואיך מקצצים ממנו 25 תווים ראשונים?
- הפרש בין שתי תאריכים?
- מודלו (שארית חילוק) של שתי מספרים?
- להדפיס רשימה של כל התיקות?
- יום בשבוע בו יוצא התאריך X
כמובן לכל שאלה תהיה לכם תשובה מסודרת, אבל בסופו של יום, זה מעצבן - הרבה כלים ורעיונות לפעולות בשקוד תוכנה לוקחים לנו רגע.
פה אני רוצה לענות, שהתשובה היא מהיום PowerShell. הכלי הזה בכלל לא מיועד למטרות אלו, הוא כלי דומה ל"בש" של לינוקס שזה בעצם שורת פקודה משוכללת לקונפיגרוציית מערכת ההפעלה ותוכנותיה. אבל בתור מתכנת, זה מה שמענין לי בכלי הזה.
אז להמלצתי, שימו לכם בשולחן העבודה קיצור דרך, לא לPowerShell עצמו כי הוא קצת פרימיטיבי לטעמי, אלא לעורך הסקריפטים שלו ששמו המלא הוא Windows Power Shell ISH. לא משנה למה הכלי הזה מיועד, תכלס הוא עונה באלגנטיות על השאלות הנ"ל.
באו תראו: כנסו לתוכנה הזו, ומקמו את הסמן בחלון הכחול (תוכלו לצמצם את השטחים האחרים הלא רלוונטיים לנו). קדימה:"פה יש טקסט ארוך או יותר מדוייק כזה שלא בא לכם להתחיל לספור אותו".Length
"פה יש טקסט ארוך או יותר מדוייק כזה שלא בא לכם להתחיל לספור אותו".Substring(0,25)
-
מחזיר הפרש בדקות שעות ימים שנים...
( Get-Date "5/1/2006 22:00") - ( Get-Date "5/1/2006 23:00")
105269 % 11
-
נראה ורק נראה מורכב. נוצר קובץ HTML (לבחירתכם XML CSV ועוד) בו רשימת הקבצים מהתיקיה שצויינה.
dir F:\Users\dovid\ -Recurse -Directory | Select-Object BaseName, FullName | ConvertTo-HTML | Out-File F:\Users\dovid\Desktop\Test.htm
-
יום בשבוע. מחזיר Thursday (מה זה?!).
(get-date 31/12/2015).DayOfWeek
זה טעימה מהקלות שבה אפשר לעשות מטלות רובוטיות מחד ויומיומיות בקלות ע"י הכלי הזה.
בהמשך אשתדל לעלות עוד טיפים ממחישים.פורסם במקור בפורום CODE613 ב27/04/2015 17:38 (+03:00)
-
-
שנה בתאריך עברי, מתאריך מסויים:
(New-Object System.Globalization.HebrewCalendar).GetYear((get-date "31/12/2015"))
שנה חודש ויום בתאריך עברי של תאריך נוכחי:
$date = get-date $heb = New-Object System.Globalization.HebrewCalendar $date.ToShortDateString() + ": שנת " + $heb.GetYear($date) + " חודש " + $heb.GetMonth($date) + " יום בחודש " + $heb.GetDayOfMonth($date)
מחזיר:
28/04/2015: שנת 5775 חודש 8 יום בחודש 9פורסם במקור בפורום CODE613 ב28/04/2015 11:11 (+03:00)
-
@דוד ל.ט.
שנה בתאריך עברי, מתאריך מסויים:
(New-Object System.Globalization.HebrewCalendar).GetYear((get-date "31/12/2015"))
שנה חודש ויום בתאריך עברי של תאריך נוכחי:
$date = get-date $heb = New-Object System.Globalization.HebrewCalendar $date.ToShortDateString() + ": שנת " + $heb.GetYear($date) + " חודש " + $heb.GetMonth($date) + " יום בחודש " + $heb.GetDayOfMonth($date)
מחזיר:
28/04/2015: שנת 5775 חודש 8 יום בחודש 9אפשר גם תאריך עברי ממש עם אותיות ולא מספרים?
או שלזה מייקרוסופט לא דאגו....פורסם במקור בפורום CODE613 ב28/04/2015 11:19 (+03:00)
-
יש לכם קובץ מסב במחשב? איך צופים בו? אההמממ.
לפני הקוד הסבר: בPS ניתן לייצא להרבה צורות, אפשר להדפיס לחלון הקנסולה, אפשר גם לקבצי XML או HTML ובודאי CSV.
אפשרות מאוד נוחה החדשות זה להציג בחלון חי עם אפשרות מיון חיפוש וסינון. הפקודה היא Out-GridView ויותר נח: ogv (כינוי - מושג בPS).
הנה הקוד המעודכן:(Get-Content G:\msv\Msv123 -Encoding Oem) | Select -Property ` @{name = 'לקוח'; expression = {$txtRev = $_.substring(45,16).ToCharArray();[array]::reverse($txtRev);(-join $txtRev).Trim() }}, @{name = 'בנק'; expression = { $_.substring(17,2)} }, @{name = 'סניף'; expression = {[int]$_.substring(19,3)} }, @{name = 'חשבון'; expression = {[int]$_.substring(26,9)} }, @{name = 'סכום'; expression = {[double]($_.substring(61,11) + "." + $_.substring(72,2))} } | ogv
פורסם במקור בפורום CODE613 ב28/04/2015 14:11 (+03:00)
-
אם הPS פתוח, אתם לא צריכים להפעיל את תיבת "ההפעלה..." משום סיבה. תכתבו מה שאתם כותבים בה בPS כשלפני כן המילה start. למשל, פתיחת הregistry:
start regedit
כמו כן כל מה שאפשר בCMD נגיש גם בPS באותו הנוסח. כך שגם הוא נחסך.
פורסם במקור בפורום CODE613 ב28/04/2015 14:18 (+03:00)
-
שערים יציגים מבנק ישראל:
([xml]((New-Object System.Net.WebClient).DownloadString("http://boi.org.il/currency.xml"))).CURRENCIES.CURRENCY | select name, rate | ft -a
או עם החלון היפה דלעיל - ogv:
([xml]((New-Object System.Net.WebClient).DownloadString("http://boi.org.il/currency.xml"))).CURRENCIES.CURRENCY | ogv
הנה איך שזה נראה לי במחשב:
פורסם במקור בפורום CODE613 ב28/04/2015 18:53 (+03:00)