![]() |
Как получить имя файла по сортировке по второму символу из каталога
Доброго времени суток!
Есть рабочая версия команды, которая отдаёт правильный вывод: Код:
DIR /b /o "%folder%\%FiLE_MASK%" | SORT /+2 /R Код:
for /f %%i in ('DIR /b /o "%folder%\%FiLE_MASK%" | SORT /+2 /R') do set filename=%%i Код:
for /f %%i in ('DIR /b /o "%folder%\%FiLE_MASK%"') do set filename=%%i |
Kpblc, Вы чего-то не договариваете. Что Вы хотите получить в переменной окружения filename?
В настоящий момент, если экранировать перенаправление: Цитата:
|
Помогло! Спасибо!
Цитата:
Всплыла ещё одна ))) Данные находятся на сетевом ресурсе прикрученные как сетевой диск, в примере выше мы обращаемся к папке на сетевом диске "X:\folder" и ищем в папке файлы отвечающие требованию. Но было бы здорово искать по всему диску X:\ После смены уровня папок и добавления в DIR ключа /S, поиск прекращается, файлы не найдены. Код:
for /f %%i in ('DIR /b /o /S "%folder%\%FiLE_MASK%" ^| SORT /+2 /R') do set filename=%%i |
Цитата:
Цитата:
Цитата:
Попробуйте описать Вашу задачу, а не уже выбранный способ её решения. |
Цитата:
1. В X:\Folder\today создаются документы с помощью bat скрипта 2. Создаваемый файл имеет строгую маску ID.(1-9).(1+...).txt (результат работы "id1.1.1" "id1.1.2" "id1.2.1" ...) 3. При создании нового файла через скрипт, сначала идёт запрос ID (цифры, вводится в ручную), далее идёт поиск в папке по существующим файлам с этим ID и если он их находит, сортирует по второму значению (1-9), к найденному максимальному значению добавляет +1, и с новым значением отправляет на меню для выбора следующего значения. 4. Каждую ночь, файлы переносятся в папку с датой X:\FolderDATE\yestardayDATE. Это необходимая процедура для дальнейшей работы с созданными файлами. Сейчас скрипт ищет в папке X:\Folder1\today и благополучно стал находить и присваивать правильный порядковый номер (1-9) в не зависимости от даты создания файла. Но было бы удобно искать глобально на диске X:\ по ID в пределах 15 дней, что бы присваивать порядковый номер (1-9) и исключить возможные дубликаты в соседних папках X:\FolderDATE\yestardayDATE |
Цитата:
Цитата:
Задача описана не полностью. Зачем создаются файлы, с какой интенсивностью и в каком количестве? Цитата:
Цитата:
|
Цитата:
Цитата:
Опять-таки, присоединюсь к коллеге alpap — Вы по-прежнему пытаетесь описать некую реализацию уже выбранного решения, а не саму задачу. |
Постараюсь ответить всем сразу.
Цитата:
Ручная обработка поступивших данных, вариантов не много, или руками переименовывать созданный автоматически файл, или руками чрез bat сформировать имя, что в свою очередь значительно проще. Цитата:
Уважаемые, мы отходим от сути... "Скучное занятие...", "Мне не понятно зачем..." Это отвлекает. Я прошу о помощи в реализации дополнения уже построенной логики работы. Сейчас находится старшее значение части имени файла в одной папке, нужно подняться в корень сетевого диска и там автоматически искать имена файлов по ID. Нынешний вариант работы поиска следующий Код:
set folder=X:\Folder\today Код:
set folder=X: Я не считаю необходимым нагружать вас полным производственным ТЗ и полной логикой обработки данных, причину создания и почему реализовано именно так, и не как иначе. (если очень интересно, в личку отправлю bat, без права публикации). Я прошу помощи в формулировании строки поиска из корня диска с возможностью продолжения работы в том же, построенном, режиме и с той же логикой, которая необходима мне. |
Kpblc, я не понимаю задачу, но очевидный облом:
Без ключа /s dir выдаёт имена файлов, и Вы их сортируете с четвертого символа С ключом /s dir выдаёт пути\имена файлов и что там в четвертом символе- явно не то, что Вам бы хотелось. |
Kpblc, Я не гуру, я не понимаю задачу, даром телепатии обделён, обсуждение темы коллегами погурее меня не приблизило меня к пониманию: что-то вводится вручную, куда-то что-то добавляется (при этом значения остаются не более 9 -убейте, не могу придумать, как это получается), откуда-то всплывают дни ...
Однако если тупо в папке и подпапках в файлах с именами IDi.j.k.txt (i,j,k=1,2...9) надо найти файл с максимальным jk, то вот такой вариант: Код:
@Echo Off |
Время: 23:50. |
Время: 23:50.
© OSzone.net 2001-