Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Получить список файлов в папке по маске с нужным количеством символов в названии (http://forum.oszone.net/showthread.php?t=349350)

9119 06-08-2021 11:50 2963768

Получить список файлов в папке по маске с нужным количеством символов в названии
 
Добрый.
Нужна ваша помощь.
нагуглить не смог.

Итак:
Нужно получить первый (самый новый) файл в папке по маске *.tmp, с одним важным условием:
нужно получить тот файл, имя которого всегда содержит всего 4 символа (пример ABCD.tmp, 1234.tmp, 1A2B.tmp...)
Имена все время меняются и разные. Поэтому более точную маску применить нет возможности.

Сейчас получаю так:
Код:

$file = Get-ChildItem -Path $env:temp -filter *.tmp | Sort-Object LastAccessTime -Descending | Select-Object -First 1 |%{$_.FullName}
Команда выполняется в определенный момент в скрипте, поэтому в 90% случаев я получаю имеенно искомый файл.
НО иногда под данному запросу попадают другие временные файлы (вида 618d5fdf-e5ff-45f8-9954-817552dcb926.tmp и др.)
Мне же нужно чтобы всегда попадали файлы вида XXXX.tmp (только 4 символа в названии).
Возможно ли?


p.s. если нужное мне нереально - тогда подход с другой стороны:
1) данный XXXX.tmp всегда будет самым коротким по названию. Можно отсортировать список файлов по новизне и по длинне строки. Тогда искомое всегда будет на 1 месте
2) данный файл вида XXXX.tmp создается в результате запуска .exe. Может можно как-то отслеживать имя создаваемого файла tmp через сам exe.. ну или как-то так.
но только с возможностью обязательного занесения полученного имени XXXX.tmp в переменную ps.


Спасибо.

Foreigner 06-08-2021 12:26 2963772

Код:

-filter ????.tmp

9119 06-08-2021 12:30 2963773

Цитата:

Цитата Foreigner
-filter ????.tmp »

так просто. Спасибо.

Iska 06-08-2021 16:27 2963786

Только CreationTime, а не LastAccessTime. И -File к Get-ChildItem добавить.

DJ Mogarych 06-08-2021 17:18 2963788

Цитата:

Цитата 9119
Sort-Object LastAccessTime -Descending | Select-Object -First 1 »

Descending не нужен, достаточно взять не первый, а последний элемент
Код:

sort lastwritetime |select -last 1

Iska 06-08-2021 20:02 2963799

DJ Mogarych, а по «скорострельности» разница будет (теоретически)?

DJ Mogarych 06-08-2021 21:28 2963805

Теоретически, если в массиве очень много объектов, наверное, будет. Просто зачем его переворачивать, если можно этого не делать?


Время: 19:02.

Время: 19:02.
© OSzone.net 2001-