为什么使用PowerShell排序不能反映在实际文件夹中?

时间:2018-12-13 06:56:41

标签: powershell

我在 C:\ Users \ First Last \ Documents \ Fun文件夹中有八个.csv文件。默认情况下,文件列出如下:
a - alpha
a - bravo
a - charlie
a - delta
b - alpha
b - bravo
b - charlie
b - delta

当我使用PowerShell排序以配对文件时,我在命令行运行脚本:
PS C:\Users\First Last\Documents\Fun Folder> ls *.csv | sort {$_.Name[4]}

因此,在PowerShell窗口中,我看到了按所需顺序排序的文件:
b - alpha.csv
a - alpha.csv
a - bravo.csv
b - bravo.csv
a - charlie.csv
b - charlie.csv
b - delta.csv
a - delta.csv

但是,在保存文件的实际文件夹中,顺序没有变化,并且文件仍按默认顺序列出。有可能解决吗?谢谢。

2 个答案:

答案 0 :(得分:2)

  1. (假定的)ntfs文件系统默认情况下按字母顺序排序。
  2. 您的命令仅对此Get-ChildItem输出进行排序。
  3. 要保持排序,您必须重命名文件(由于第1点)。

提供的文件名仅包含一个space dash space序列,这​​是

Get-ChiltItem '* - *.csv' | 
    Rename-Item -NewName {"{0}{1}" -f (($_.BaseName -split ' - ')[1,0] -join ' - '),$_.Extension}

将对名称进行拆分,重新排序和组合以持久地重命名文件:

Name
----
alpha - a.csv
alpha - b.csv
bravo - a.csv
bravo - b.csv
charlie - a.csv
charlie - b.csv
delta - a.csv
delta - b.csv

要撤消/交换,请再次运行脚本。

答案 1 :(得分:1)

这不是它的工作方式。想象一个盒子里装满了很多东西。每个看过它的人都会根据自己的喜好订购这些东西。我按颜色对它们进行排序,然后放回去。然后按字母顺序对它们进行排序,然后再将它们放回去。下一个将所有东西都拆箱的家伙都不会反映这两个更改。

一种方法是使用"states.raw"根据名称将它们移动到子文件夹中。
另一种方法是以对辅助名称起反应的方式编写Excel宏。