|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как получить имя файла по сортировке по второму символу из каталога |
|
CMD/BAT - Как получить имя файла по сортировке по второму символу из каталога
|
Новый участник Сообщения: 19 |
Профиль | Отправить PM | Цитировать Доброго времени суток!
Есть рабочая версия команды, которая отдаёт правильный вывод: Нужно что бы работало в цикле FOR вот так: Но работает только так: Помогите составить правильный запрос в FOR для назначения переменной filename |
|
Отправлено: 11:19, 15-08-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kpblc, Вы чего-то не договариваете. Что Вы хотите получить в переменной окружения filename?
В настоящий момент, если экранировать перенаправление: Цитата Kpblc:
|
|
Отправлено: 11:57, 15-08-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Помогло! Спасибо!
Цитата Iska:
Всплыла ещё одна ))) Данные находятся на сетевом ресурсе прикрученные как сетевой диск, в примере выше мы обращаемся к папке на сетевом диске "X:\folder" и ищем в папке файлы отвечающие требованию. Но было бы здорово искать по всему диску X:\ После смены уровня папок и добавления в DIR ключа /S, поиск прекращается, файлы не найдены. И снова прошу о помощи. |
|
Отправлено: 13:19, 15-08-2019 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kpblc:
Цитата Kpblc:
Цитата Kpblc:
Попробуйте описать Вашу задачу, а не уже выбранный способ её решения. |
|||
Отправлено: 14:49, 15-08-2019 | #4 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Цитата Iska:
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 |
||
Последний раз редактировалось Kpblc, 15-08-2019 в 16:21. Причина: задублилось сообщение Отправлено: 16:19, 15-08-2019 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Kpblc:
Цитата Kpblc:
Задача описана не полностью. Зачем создаются файлы, с какой интенсивностью и в каком количестве? Цитата Kpblc:
Цитата Kpblc:
|
||||
Отправлено: 22:53, 15-08-2019 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kpblc:
Цитата Kpblc:
Опять-таки, присоединюсь к коллеге alpap — Вы по-прежнему пытаетесь описать некую реализацию уже выбранного решения, а не саму задачу. |
||
Отправлено: 04:06, 16-08-2019 | #7 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Постараюсь ответить всем сразу.
Цитата alpap:
Ручная обработка поступивших данных, вариантов не много, или руками переименовывать созданный автоматически файл, или руками чрез bat сформировать имя, что в свою очередь значительно проще. Цитата alpap:
Уважаемые, мы отходим от сути... "Скучное занятие...", "Мне не понятно зачем..." Это отвлекает. Я прошу о помощи в реализации дополнения уже построенной логики работы. Сейчас находится старшее значение части имени файла в одной папке, нужно подняться в корень сетевого диска и там автоматически искать имена файлов по ID. Нынешний вариант работы поиска следующий set folder=X:\Folder\today set file_mask=???.?.?.txt for /f %%i in ('DIR /b /o "%folder%\%FiLE_MASK%" ^| SORT /+4 /R') do set filename=%%i echo %filename% set folder=X: set file_mask=???.?.?.txt for /f %%i in ('DIR /b /o /S "%folder%\%FiLE_MASK%" ^| SORT /+4 /R') do set filename=%%i echo %filename% Я не считаю необходимым нагружать вас полным производственным ТЗ и полной логикой обработки данных, причину создания и почему реализовано именно так, и не как иначе. (если очень интересно, в личку отправлю bat, без права публикации). Я прошу помощи в формулировании строки поиска из корня диска с возможностью продолжения работы в том же, построенном, режиме и с той же логикой, которая необходима мне. |
||
Отправлено: 10:11, 16-08-2019 | #8 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать Kpblc, я не понимаю задачу, но очевидный облом:
Без ключа /s dir выдаёт имена файлов, и Вы их сортируете с четвертого символа С ключом /s dir выдаёт пути\имена файлов и что там в четвертом символе- явно не то, что Вам бы хотелось. |
------- Отправлено: 10:58, 16-08-2019 | #9 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать Kpblc, Я не гуру, я не понимаю задачу, даром телепатии обделён, обсуждение темы коллегами погурее меня не приблизило меня к пониманию: что-то вводится вручную, куда-то что-то добавляется (при этом значения остаются не более 9 -убейте, не могу придумать, как это получается), откуда-то всплывают дни ...
Однако если тупо в папке и подпапках в файлах с именами IDi.j.k.txt (i,j,k=1,2...9) надо найти файл с максимальным jk, то вот такой вариант: @Echo Off Set "BoxIn=Z:\Box_In" Set "Mask=id?.?.?.txt" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /S`) DO ( FOR /F "tokens=1,2,3 delims=." %%i IN ("%%~nf") DO Set "@@%%j%%k=%%f" ) FOR /F "usebackq tokens=1,2 delims==" %%i IN (`Set "@@"`) DO Set "FullName=%%j" &Set "Name=%%~nj" Echo %Name% %FullName% %Name:~4,1% %Name:~6,1% Exit /B |
------- Последний раз редактировалось megaloman, 16-08-2019 в 12:48. Отправлено: 12:28, 16-08-2019 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Копирование названия файлов из списка по символу в отдельный файл | f1rstonlyone@vk | Скриптовые языки администрирования Windows | 2 | 07-06-2017 22:08 | |
PowerShell - [решено] Инвентаризация компьютеров (По данным из AD, из файла, или просто указав имя компа) | dark-------13 | Скриптовые языки администрирования Windows | 1 | 28-04-2015 15:34 | |
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? | mitiya | Скриптовые языки администрирования Windows | 2 | 27-06-2008 20:50 | |
Как получить имя владельца файла на WINAPI | vasika_hk | Программирование и базы данных | 1 | 31-05-2006 23:03 | |
Как получить имя текущего пользователя для использования его в имени файла | Denchik | Автоматическая установка Windows 2000/XP/2003 | 1 | 25-01-2006 22:33 |
|