2012-06-11 5 views
3

바로 지금 디렉터리에있는 마지막 다섯 개의 파일을 가져올 스크립트가 있습니다. 다음과 같이 보입니다 :디렉터리의 일부 파일을 선택하는 PowerShell 스크립트

$diffs = Get-ChildItem "C:\usr\local\work\tnl\Database\ReleaseScripts" -Filter "*.sql" | Sort-Object Name -Descending | Select-Object -first 5 | Sort-Object Name 

특정 파일로 시작하는 마지막 파일을 모두 선택해야합니다. 예를 들어, 파일은 내가 모두를 선택해야 할 수도 있습니다 210.txt


까지

201.txt
202.txt
203.txt
204.txt
선정 된 경우 목록의 끝에 203.txt로 시작하는 파일.

내가 찾고있는 파일 이름을 가져 와서 스크립트에서 사용할 수 있습니다. 나는 내가해야 할 스크립팅 도구에 익숙하지 않다. 내 라인을 편집하여 한 줄로 처리 할 수 ​​있습니까? 아니면 내 결과를 얻기 위해 루프에 넣어야합니까?

답변

4

파일 이름 구조가 더 복잡하거나 원본 필터가 부적합한 파일 이름을 차지할 가능성이있는 경우이 방법은 작동하지만 확장해야합니다.

$diffs = Get-ChildItem "C:\usr\local\work\tnl\Database\ReleaseScripts" -Filter "*.sql" |? 
{[Int][System.Text.RegularExpressions.Regex]::match($_.name,"\d+").Value -gt 201 }| 
Sort-Object Name -Descending | Select-Object -first 5 | Sort-Object Name 
+0

+1 - 어휘 비교 대 좋은 점. 나는 이것이 이름순으로 알파벳순으로 정렬 된 원래의 스크립트에 기반하여 괜찮 았다고 가정하고있었습니다. – JNK

+0

덕분에 저도 잘 됐습니다. '$ diffs = Get-ChildItem "C : \ usr \ local \ work \ tnl \ Database \ ReleaseScripts"-Filter "* .sql"| 개체 이름 정렬 - 낮추기 | Where-Object {$ _. name -gt "201"} | Sort-Object Name' select-object 대신 Where-Object를 사용하십시오. 나는 이것이 실제로 객체를 선택하지 않을 것이라고 걱정했지만 그것은 내가 원했던 것처럼 보였습니다. – mrfreester

+0

어휘가 적기 때문에 sql 2001이 더 큰 테스트를 통과하지 못할 것입니다. – rerun

관련 문제