Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell:如何按顺序追加文本文件?_Powershell - Fatal编程技术网

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 "$_" }