iT邦幫忙

DAY 5
4

強而有力的 Windows PowerShell系列 第 5

Windows PowerShell 基本操作 - 導向

  • 分享至 

  • xImage
  •  

「導向」是個很實用的設計,因為在某些狀況下,比方說,指令執行的結果超過 1 個畫面,或是需要根據執行結果來進行特定的操作,就可透過「導向」將執行結果寫入到我們所指定的檔案中。
使用「導向」的方式很簡單,只要在要執行的指令之後,再加上「導向」的運算子: >,然後指定所要的檔名即可。

假設我們要將 C:\Windows 目錄中,所有的目錄與檔案導向成 files.txt:

dir C:\Windows > files.txt

因為使用了「導向」的運算子: >,所以執行結果就不會顯示在 Windows PowerShell 視窗中。請特別注意:

  1. 如果原本指定的檔案(也就是 files.txt)已經存在,那麼上面的那個指令就會覆寫原本的檔案內容。

  2. 如果不存在那個檔案,Windows PowerShell 便會自動產生。

  3. 由於我們並沒有指定檔案的目錄,所以所產生的檔案會在目前所在的工作目錄,因此請注意是否有權限可以在該工作目錄建立檔案。

  4. 如果您要讓執行結果以附加的方式,而非覆寫的方式存檔,要改用 2 個「導向」的運算子: >>,例如:

    dir C:\Windows >> files.txt

這麼一來,執行的結果就會一直附加到原本的檔案之後。

為了便於使用預設的文字編輯器(預設是「記事本」)開啟導向所建立的檔案,請替檔名加上 .txt 的副檔名。例如 files.txt 存在 D:\,我們可以在 Windows PowerShell 的命令列中,輸入下面的指令就,即可透過預設的文字編輯器來查看執行的結果:

D:\files.txt

如果可以的話,建議使用 Windows PowerShell 內建的 cmdlet:Out-File 來取代「導向」的運算子:>

dir C:\Windows | Out-File files.txt

如果希望執行的結果附加上去的話,要再多加個參數 -Append

dir C:\Windows | Out-File files.txt -Append


上一篇
Windows PowerShell 基本操作 - 超好用的「自動輸入完成」Tab 鍵
下一篇
Windows PowerShell 基本操作 - 管線
系列文
強而有力的 Windows PowerShell33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
逮丸逮丸
iT邦大師 1 級 ‧ 2009-10-03 11:04:13

正確結果可以 redirect 導向到所指定的檔名,
通常是程式執行 exit 0 的狀況下,沒有問題。
但執行結果非 exit 0下,怎樣也把輸出結果也重導到檔案中呢?
nslookup ithelp.ithome.com.tw > test.txt
是會把 nslookup ithelp.ithome.com.tw 的結果導到 test.txt中。

nslookup it.ithome.com.tw 執行的訊息,
跟 nslookup it.ithome.com.tw >> test.txt
比較,會發現到不會把所有的執行訊息存到 test.txt 的檔案。
所以要怎樣把 即使是執行錯誤的訊息
完整導到所指定的檔案中呢?

alexc iT邦高手 1 級 ‧ 2009-10-03 12:12:18 檢舉

Windows PowerShell 內部執行的錯誤訊息跟顯示在畫面上的訊息不太一樣
不過,我想下面應該就是你要的指令
nslookup it.ithome.com.tw >> test.txt 2>&1

詳細的原因,我就不多說了,因為這個跟 Linux/Unix 的 shell 一樣

0
finkel
iT邦新手 5 級 ‧ 2010-01-10 17:46:16

我想要輸出的檔名是含有中括號如 [123].txt

PS D:\> Write-Output 123 >> ]1.txt
重新導向運算子後面遺失檔案規格。
位於 行:1 字元:20

  • Write-Output 123 >> <<<< ]1.txt
  • CategoryInfo : ParserError: (:) [],ParentContainsErrorRecordException
  • FullyQualifiedErrorId : MissingFileSpecification

即使加了脫序字元也不行..
PS D:\> Write-Output 123 >> `]1.txt
無法執行作業,因為萬用字元路徑 ]1.txt 無法解析成檔案。
位於 行:1 字元:20

  • Write-Output 123 >> <<<< `]1.txt
  • CategoryInfo : OpenError: (]1.txt:String) [],FileNotFoundException
  • FullyQualifiedErrorId : FileOpenFailure

我要留言

立即登入留言