פייתון: עותק ללוח הגזירים: מעבר ל־Ctrl+C ו־Ctrl+V

בכתיבת קוד ב-PowerShell הדבר האחרון שאולי תחשוב עליו הוא
לוח ההדבקה של Windows. כנראה שכולנו מכירים את הקיצורי המקלדת המפורסמים Ctrl-C ו-Ctrl-V להעתקה והדבקה מלוח ההדבקה אך זה בדרך כלל מתבצע דרך הממשק הגרפי. בתסריטים שלנו ב-PowerShell, זה לא ממש שימושי. אך, האם ידעת שיש פונקציה של העתקה ללוח ההדבקה ב-PowerShell?

במאמר זה, אני אעבור על איך השגנו פעם את הפונקציונליות של העתקה והדבקה ב-PowerShell ואז אציג לך את ה-cmdlets ש-PowerShell מספקת החל מגרסה 5.

לפני PowerShell v5, הדרך היחידה להעתיק ללוח ההדבקה הייתה באמצעות היישום clip.exe.

Old School clip.exe

היישום הזה היה סביב כבר הרבה זמן ופשוט עבד. על ידי שינוע טקסט ל-clip.exe, יכולת להשיג טקסט שהועתק ללוח ההדבקה. זה עבד אך תמיד היה מעצבן כאשר הוא הוסיף שורה חדשה לאחר כל רשומה.

PS51> Write-Output 'Hello' | clip
The PowerShell copy to clipboard function can replace the old school clip.exe

לא רק זאת, אך לא היה לנו דרך קלה למשוך מידע מלוח ההדבקה. היינו צריכים להדביק באופן ידני את התוכן רק לאחר שהגיע ללוח ההדבקה. עם הפקודות המקוריות של לוח ההדבקה, זה כבר לא קיים!

יש לנו עכשיו שני cmdlets המפתרים בצורה הרבה יותר טובה את הבעיה הזו; Get-Clipboard ו- Set-Clipboard.

פקודת Set-Clipboard ב-Powershell

Set-Clipboard מחליף את clip.exe אך מתנהג באופן זהה. כעת, במקום לנפיק את הפלט ל־clip, ניתן להשתמש ב־Set-Clipboard. אם תעשה זאת, תגלה שהשורה האחורית נעלמה כשתדביק את התוכן במקום אחר.

הלוח יכיל כעת רק את המחרוזת Hello.

PS> Write-Output 'Hello' | Set-Clipboard

תכונה נוספת שימושית עם Set-Clipboard היא הפרמטר Append. לפני כן, הלוח היה מסוגל לאחסן רק פריט אחד. עכשיו, על ידי שימוש בפרמטר Append עם Set-Clipboard, ניתן להוסיף מספר בלתי מוגבל של פריטים בלתי הוסרים.

PS> Write-Output 'Hello' | Set-Clipboard -Append

פרמטרים של Get-Clipboard

גם אם אינך משתמש ב־Set-Clipboard כדי להעתיק תוכן ללוח, ניתן עדיין להשתמש ב־Get-Clipboard כדי להבין כמה סוגים שונים מאשר מחרוזות פשוטות. לדוגמה, אם העתקת רשימת קבצים מ־מערכת הקבצים ותרצה להביא את הרשימה הזו לקונסולת PowerShell שלך, פשוט השתמש בפרמטר Format ובערך FileDropList על Get-Clipboard.

PS51> Get-Clipboard -Format FileDropList

Directory: \\Mac\Home\Downloads


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019  10:42 AM       17919094 00_03_xr30_whatyoushouldhave.mov


    Directory: \\Mac\Home\Documents\Snagit\Autosaved Captures.localized


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019   1:58 PM      169144472 2019-08-01_13-47-55.mp4

ניתן לראות שהוא מבין את סוג הנתונים בלוח כרגע הוא רשימת קבצים. בנוסף, ניתן לעשות אותו הדבר עם תמונות ויישוו יישוו יישוו.

העתק תמונה מיישום אחר והשתמש בפקודה -Format Image לקבלת מאפיינים שונים על התמונה.

PS51> Get-Clipboard -Format Image


Tag                  :
PhysicalDimension    : {Width=813, Height=113}
Size                 : {Width=813, Height=113}
Width                : 813
Height               : 113
HorizontalResolution : 96
VerticalResolution   : 96
Flags                : 335888
RawFormat            : [ImageFormat: b96b3caa-0728-11d3-9d7b-0000f81ef32e]
PixelFormat          : Format32bppRgb
Palette              : System.Drawing.Imaging.ColorPalette
FrameDimensionsList  : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}
PropertyIdList       : {}
PropertyItems        : {}

שליטה בלוח העריכה בפווֵרְשֵל

לצערנו, הפקודות Get-Clipboard וְSet-Clipboard אינן זמינות בפווֵרְשֵל (גרסה 6 ומעלה), אך עדיין ניתן להשתמש בהן באמצעות ייבוא הַמּוֹדּוּל WindowsCompatibility. מודול זה מאפשר לך להשתמש בפקודות Windows PowerShell בתוך פווֵרְשֵל.

לאחר התקנת המודול WindowsCompatibility, הרץ את הפקודה Invoke-WinCommand ועטוף את הפקודות Get-Clipboard וְSet-Clipboard בתוכה.

PS622> Invoke-WinCommand -ScriptBlock {'This is on the clipboard' | Set-ClipBoard}
PS622> Invoke-WinCommand -ScriptBlock {Get-ClipBoard}
This is on the clipboard

תגלה שניתן לקרוא ולכתוב ללוח העריכה באופן דומה למה שתעשה עם Windows PowerShell.

סיכום

היום ניתן לעשות הרבה יותר עם לוח העריכה בפווֵרְשֵל. העתקה ללוח העריכה בפווֵרְשֵל הפכה לאפשרית באמצעות הפקודות Get-Clipboard וְSet-Clipboard. פקודות אלה מאפשרות לך להשתמש בפווֵרְשֵל להעתיק ללוח העריכה ולהדביק ממנו באופן מודע.

לפרטים מפורטים על הפקודות, יש לעיין בעזרה מפורטת:

PS51> Get-Help Set-Clipboard -Detailed
PS51> Get-Help Get-Clipboard -Detailed

זה יספק לך את כל הפרמטרים השונים שניתן לנסות.

Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/