在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
答案 0 :(得分:3)
我假设您正在尝试获取“C:\ blah.txt”的内容并将其添加到“C:\ blah2.txt”?
目前您获得1个项目(“C:\ Blah.txt”)然后按上次写入时间排序,然后选择1(只有一个),然后将输出添加到“C:\ blah2” 。文本”。这将写出常规输出到文件的任何内容。
如果你想把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"
希望这有帮助。
答案 1 :(得分:0)
这个怎么样:
(gci .\blah.txt).lastwritetime > blah2.txt
我可以在您的代码中看到几件事:
“排序”和“选择”不会更改对象类型,因此add-content得到的只是来自管道“gci”c:\ blah.txt“中第一个命令的文件名blah.txt。以下是我的测试,以表明,我将为两者做一个get-member,你会看到对象是相同的:System.IO.FileInfo。
PS C:\ Documents \ ManualScripts> gci。\ test.txt |得到构件
TypeName:System.IO.FileInfo ........
与之相比:
PS C:\Documents\ManualScripts> gci .\test.txt | get-member
TypeName: System.IO.FileInfo
......
它们完全一样。