2013-06-24 106 views
0

在powershell中運行add-content命令時,我收到了一個奇怪的結果。這裏是我的代碼:Powershell在目錄中添加最新文件到現有文件

gci "C:\dir\*.txt" | sort LastWriteTime | select -last 1 | add-content "C:\dir2\blah2.txt" 

當我打開blah2,我看到不僅是文件名* .TXT

我嘗試使用了文件的歡迎,並得到了另一個令人費解的(對我)的結果:

Directory: C:\ 

Mode    LastWriteTime  Length Name                  
----    -------------  ------ ----                  
-a---   6/24/2013 4:02 PM  719 00010_06242013_1600.txt             
+1

鑑於您正在對第一個cmdlet的結果進行排序,是否指定了示例目錄而不是文件? 'blah.txt'似乎表示一個文件。 –

+0

良好的呼叫,編輯以反映這一點,謝謝 – camdenl

回答

3

我會假設你正試圖獲得的 「C:\ blah.txt」 的內容,並添加到 「C:\ blah2.txt」?

目前您獲得1項(「C:\ Blah.txt」),然後按上次寫入時間對其進行排序,然後選擇1(僅存在一次),然後將輸出添加到「C:\ blah2.txt」。這將寫入任何常規輸出到文件。

如果你想等等的寫內容到你缺少一個重要步驟blah2:

Get-ChildItem "C:\blah.txt" | sort LastWriteTime | select -last 1 | Get-Content | add-content "C:\blah2.txt" 

去除冗餘後來電:

Get-ChildItem "C:\blah.txt" | Get-Content | add-content "C:\blah2.txt" 

希望這有助於。

+0

我的歉意我的原始響應已編輯,以表明我正在嘗試獲取目錄中的最新文件,並將其添加到一個單獨的目錄中的文件的末尾。 – camdenl

+0

因此,您正在嘗試獲取目錄中最近文件的內容,或者您​​是否試圖將文件名添加到文件名列表中? –

+0

我想要獲取目錄中的最新文件,並將該文件的內容添加到單獨目錄中的文件。 – camdenl

0

如何:

(gci .\blah.txt).lastwritetime > blah2.txt 

有幾件事情我可以在你的代碼中看到:

  1. 如果這僅僅是處理一個文件,我們不需要「排序」。
  2. 「排序」和「選擇」不會更改對象類型,因此,添加內容從管道行「gci」c:\ blah.txt「中的第一個命令獲取的只是文件名blah.txt。我的測試表明,我會做一個get-member,你會看到兩個對象是一樣的:System.IO.FileInfo。

    PS C:\ Documents \ ManualScripts> gci。\ test.txt | get -member

    類型名:System.IO.FileInfo ........

相比:

PS C:\Documents\ManualScripts> gci .\test.txt | get-member 


    TypeName: System.IO.FileInfo 
...... 

它們完全一樣。

+0

如果是從一個文件添加內容到另一個文件,你也可以使用這個:'type blah.txt> blah2.txt'。 – Peter

+0

如果你想在整個當前目錄中選擇一個最新編寫的文件,那麼這是代碼:'type $(gci *。* | sort lastwritetime | select -last 1)> blah2.txt' – Peter

+0

對不起,我原來的問題有已被編輯以顯示我想要在目錄中的最新文件。 – camdenl