0

在 powershell 中运行 add-content 命令时,我得到了一个奇怪的结果。这是我的代码:

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

当我打开 blah2 时,我看到的只是文件名 *.txt

我也尝试使用 out-file,得到了另一个(对我来说)令人费解的结果:

Directory: C:\

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

2 回答 2

3

我假设您正在尝试获取“C:\blah.txt”的内容并将其添加到“C:\blah2.txt”?

目前您获得 1 个项目 ("C:\blah.txt"),然后按上次写入时间对其进行排序,然后选择 1(只有一个),然后将输出添加到 "C:\blah2.txt" . 这会将任何常规输出写入文件。

如果你想将 blah 的内容写入 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"

希望这可以帮助。

于 2013-06-24T20:56:48.730 回答
0

这个怎么样:

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

我可以在您的代码中看到几件事:

  1. 如果这只是处理一个文件,我们不需要“排序”。
  2. “排序”和“选择”不会更改对象类型,所以 add-content 得到的只是管道“gci”c:\blah.txt“中的第一个命令中的文件名 blah.txt。以下是我要显示的测试那,我会做一个get-member,你会看到对象是一样的:System.IO.FileInfo。

    PS C:\Documents\ManualScripts> gci .\test.txt | 获取成员

    类型名称:System.IO.FileInfo ........

相比:

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


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

它们完全相同。

于 2013-06-24T20:57:45.037 回答