Почему сортировка с помощью PowerShell не отражается в реальной папке? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть восемь файлов .csv в C: \ Users \ Первая последняя \ Documents \ Fun Folder .По умолчанию файлы перечислены следующим образом:
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 голосов
/ 13 декабря 2018
  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

Чтобы отменить / поменять местами, снова запустите скрипт.

0 голосов
/ 13 декабря 2018

Это не так, как это работает.Представьте себе коробку с большим количеством вещей в ней.Все, кто смотрит в него, закажут вещи, как ему заблагорассудится.Я упорядочиваю их по цвету и вставляю обратно. Затем вы распределяете их по алфавиту и вставляете обратно. Оба изменения не будут отражены для следующего парня, который достанет все из коробки ...

В одну сторонуиспользовать Move-Item, чтобы переместить их в подпапки в соответствии с именем.
Другой вариант - написать макрос Excel таким образом, чтобы он реагировал на вторичное имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...