跳至主要内容

2 篇文章 含有標籤「windows」

檢視所有標籤

Windows 如何在 Console 中直接執行 csx 程式

· 閱讀時間約 2 分鐘
mrhihi.paul
Owner of this blog

前情提要

dotnet-script 是一個可以把 C# 當成腳本執行的工具,我們可以簡單的寫一些 C# 的程式,不需要編譯,直接就可以執行,也可以在腳本程式中,指定要安裝的 nuget 套件,載入更多擴充功能,十分的好用。
但有一個問題,在 Linux 或 macOS 的環境下,可以透過 Shebang 的方式,在 Console 中直接執行,但 Windows 不行,本篇文章會說明如何在 Windows Console 中,直接執行 csx 腳本,但針對如何安裝 dotnet-script 就不多加著墨,相關細節,請參考 這裡

Let's GO

首先,我們需要知道 dotnet-script.exe 的所在位置,輸入下面指令可以得到

where dotnet-script.exe

dotnet-script.exe 的位置

接著,我們在這個位置裡面,新增一個 dotnet-script.cmd 的檔案,檔案內容如下圖
dotnet-script.cmd 的內容

@dotnet-script.exe %*

最後就是 .csx 關聯到 dotnet-script 開啟,在 Console 提示列下輸入下面兩行指令

assoc .csx=csxfile
ftype csxfile="C:\Users\[USER]\.dotnet\tools\dotnet-script.cmd" "%1" %*

dotnet-script 關聯執行

warning

注意!這邊需要用 administrators 的權限執行。

完成之後,就可以來試試看囉

直接執行 csx

參考資料

Windows 如何在 Console 中使用剪貼簿的內容

· 閱讀時間約 3 分鐘
mrhihi.paul
Owner of this blog

前情提要

昨天提到 macOS 怎麼在 Console 中用指令使用剪貼簿的內容,因為平時工作是雙平台混合使用,所以好奇,在 Windows 下是不是有相應的實作,簡單的 搜尋 研究一下。

Nushell 上場

首先,如何透過 Console 的命令取得剪貼簿的內容呢? 我 google 了一下,有找到幾種方式,一種是透過 PowerShell 的 Get-Clipboard ,一種是透過安裝 pasteboard ,還有其他的,但沒啥時間研究,先就這兩種分別說明。

PowerShell Get-Clipboard

這個方法比較單純,不需要額外安裝其他工具。
先把要處理的內容複製到剪貼簿中,接著打開 Nushell 並輸入這樣的指令

powershell get-clipboard | lines

然後我們就會得到這樣的錯誤訊息 取出剪貼簿編碼錯誤

編碼錯誤, Nushell 建議我們用 decode 去處理非 UTF-8 的字元

powershell get-clipboard | decode | lines | split column --regex "[:,]"

完美 編碼處理後取出剪貼簿

接著再把結果輸入到剪貼簿中就可以打完收工了,輸入到剪貼簿這個動作,可以透過 Windows 內建的 Clip 指令完成

powershell get-clipboard | decode | lines | split column --regex "[:,]" | to csv -s "\t" | clip

執行完這行指令後,一樣沒有輸出,因為被導向剪貼簿裡面,立馬貼出來看看結果,於是我們就會得到 一堆亂碼
複製回剪貼簿編碼錯誤

果然,怎麼來就要怎麼回去,加上編碼讓他轉回去 Big5 ,調整一下指令

powershell get-clipboard | decode | lines | split column --regex "[:,]" | to csv -s "\t" | encode big5 | clip

貼上 Excel ,打完收工
完成處理的結果

提示

可以透過 chcp 65001 ,讓 Console 編碼用 UTF-8 ,就可以不需要透過 decode 、 encode 做編碼轉換。
要修改 Console 的預設編碼,可以參考 這裡

安裝 pasteboard 使用 pbpaste & pbcopy

這個方法只差需要安裝程式,其他就跟 macOS 沒啥太大的差別(當然還是要處理編碼)。
安裝的部份我選擇用 Chocolatey ,細節請看 這裡

choco install pasteboard

剩下的就參考 昨天的指令 ,這裡就不多贅述了。

參考資料