Начну размещая что-то похожее на ответ Leptonator, но упрощена путем использования Select-Object
команда (псевдоним Select
используется в коде, потому что это привычка, и я ленив).
$files = Get-ChildItem -Recurse -path C:\clntfiles | Select -ExpandProperty BaseName
Теперь, когда вы получаете имена файлов без расширения. Но на самом деле вы попросили только часть имен файлов, поскольку первое имя файла - «HD 100616 Dec2014.pdf», и вы указали, что на самом деле хотите вернуть «Dec2014». Мы можем сделать это по-разному, но мой любимый из них - это матч RegEx (потому что RegEx - это потрясающе, и я думаю, что комбо /SubString
слишком сложное imho).
Итак, матч RegEx от "\w+$"
получит то, что вы хотите. Это разбивается следующим образом:
\w
означает любую букву или номер
+
означает 1 или более из них
$
означает конец строки/строки
Так что это 1 или более буквенно-цифровых символов в конце строки. Мы труба наш массив имен файлов в ForEach-Object
цикла (псевдоним ForEach
используется по привычке), и тогда мы имеем:
$Files | ForEach{ [RegEx]::Matches($_,"\w+$")}
Теперь это выводит [System.Text.RegularExpressions.Match]
объект, который больше, чем вы хотите, но это делает имеют свойство Value
, которое именно то, что вы просили!Поэтому мы используем Select -Expand
снова для этого свойства и выход именно то, что вы просили:
$files = Get-ChildItem -Recurse -path C:\clntfiles | Select -ExpandProperty BaseName
$files | ForEach{[regex]::Matches($_,"\w+$")} | Select -Expand Value
RegEx матчи очень удобно, если вы узнаете о них можно упростить, что совсем немного больше, как это:
gci C:\clntfiles -Rec | ?{$_.BaseName -match "(\w+)$"} | %{$Matches[1]}
Это одна линии, а также код две строки над ним как следует выводить:
Dec2014
Jan2015
Я предполагаю, что это произошло и с вами. Gci C: \ clntfiles -Rec | % {($ _. BaseName -split '\ s +') [- 1]} ' – Matt
Нет, я всегда забываю, что вы можете использовать соответствие RegEx для метода' -split'. Хорошая точка @Matt – TheMadTechnician
Вы, вероятно, можете безопасно использовать метод split, а также с обычным пространством, поскольку некоторые из них могут быть более удобными с решением без регулярных выражений. – Matt