PowerShell:如何按顺序追加文本文件?
命令:PowerShell:如何按顺序追加文本文件?,powershell,Powershell,命令: $inputpath = 1.txt, 2.txt .... 结果是一个包含重复内容的随机顺序混合文件。在考虑源文件的顺序时,如何将多个文件附加到新文件中?当您对文件的Name属性进行排序时,您对字符串值进行排序,结果将按字母顺序排序-例如,这意味着10在9之前 如果要按字符串名称表示的数值进行排序,则必须明确告诉sort Object将输入值视为: 获取子项…|排序对象-属性{$\名称-替换'\D'-as[int]}}。。。 在属性表达式{$\u.Name-replace'\D'-
$inputpath = 1.txt, 2.txt ....
结果是一个包含重复内容的随机顺序混合文件。在考虑源文件的顺序时,如何将多个文件附加到新文件中?当您对文件的
Name
属性进行排序时,您对字符串值进行排序,结果将按字母顺序排序-例如,这意味着10
在9
之前
如果要按字符串名称表示的数值进行排序,则必须明确告诉sort Object
将输入值视为:
获取子项…|排序对象-属性{$\名称-替换'\D'-as[int]}}。。。
在属性表达式
{$\u.Name-replace'\D'-as[int]}
中,我们获取名称
属性值(与前面一样),删除所有非数字字符,最后将结果字符串转换为整数。对文件的名称
属性排序时,您正在对字符串值进行排序,结果将按字母顺序排序,这意味着10
在9
之前
如果要按字符串名称表示的数值进行排序,则必须明确告诉sort Object
将输入值视为:
获取子项…|排序对象-属性{$\名称-替换'\D'-as[int]}}。。。
在属性表达式
{$\u.Name-replace'\D'-as[int]}
中,我们采用名称
属性值(与前面一样),删除所有非数字字符,最后将结果字符串转换为整数。您似乎正在使用$inputpath
作为Get ChildItem
的-Path
参数,当它不是一个真正的路径,而是一个文件列表时。您确定不应该使用定义的路径,而应该使用-Include$inputpath
,或者甚至将-Include
替换为-Filter
,以提高速度。另外,我不确定您是否需要getchilditem
,只要getitem
就足够了。此外,如果您有使用数字基名称命名的其他文件,则需要注意使用排序对象-属性名称
将按字母顺序而不是数字顺序对文件进行排序。为了澄清我上面的评论,我建议您使用$inputfiles=@(“1.txt”、“2.txt”、…)
后跟Get Item-Path C:\Users\Gill Bates\Documents\*-Include$inputfiles | Sort Object-Property Name | ForEach Object{Out File-FilePath D:\mergedFile.txt-InputObject(Get Content$|)-Append}
。记住根据已经提供的答案中的信息修改排序对象
部分。您似乎正在使用$inputpath
作为-Path
的-Path
参数,而该参数实际上不是路径,而是文件列表。您确定不应该使用定义的路径,而应该使用-Include$inputpath
,或者甚至将-Include
替换为-Filter
,以提高速度。另外,我不确定您是否需要getchilditem
,只要getitem
就足够了。此外,如果您有使用数字基名称命名的其他文件,则需要注意使用排序对象-属性名称
将按字母顺序而不是数字顺序对文件进行排序。为了澄清我上面的评论,我建议您使用$inputfiles=@(“1.txt”、“2.txt”、…)
后跟Get Item-Path C:\Users\Gill Bates\Documents\*-Include$inputfiles | Sort Object-Property Name | ForEach Object{Out File-FilePath D:\mergedFile.txt-InputObject(Get Content$|)-Append}
。记住根据已经提供的答案中的信息修改排序对象
部分。
Get-ChildItem -Path $inputpath\* -Include *.txt | Sort-Object -Property Name | Get-Content | ForEach-Object { Add-Content -Path d:\MergedFile.txt -Value "$_" }