![]() |
обработка bat-ником списков из txt-файла
задача:
Дано: скрипт, копирующий файлы из папки orig в папки test1, test2, test3 и т.д. Цитата:
брать строку адреса для копирования из файла txt (пусть будет copy_to.txt) т.к. приведён тестовый батник, в реале требуется копировать в n-ное количество мест, адреса которых не подчинятся столь строгой логике, т.е. нет возможности применить маску... структура списка подразумевается построчная (один путь = одна строка) возможен замыкающий элемент списка типа "end" для завершения цикла Цитата:
и ещё один вопрос, как получить список тех самых путей в ТХТ файл? если известно что у них есть одна общая особенность - подпапка с одинаковым названием (решение с привязкой батника к названию папки сразу, не катит - требуется высокоинтеллектуальная обработка путей, т.к. не все из них должны быть "отоварены") в принципе, последнюю задачу можно свести к обработке группы ярлыков в отдельной папке, получить данную группу ярлыков очень просто с помощью встроенной функции поиска и отправки ярлыков на рабочий стол ))) задача остаётся открытой для случаев, когда список ярлыков перестаёт помещаться на рабочем столе ))) ____________________________________________________________________________________________________ ________ решение для задачи №1 Цитата:
Цитата:
|
Подсказка: тебе нужно использовать call :read_settings
и создать функцию :read_settings set SETTINGSFILE=%1 rem Проверка существования файла if not exist %SETTINGSFILE% ( echo FAIL: Файл с настройками отсутствует exit /b 1 ) rem Обработка файла c настройками rem Здесь: rem eol=# указывает на то, что содержимое строки начиная с символа # rem и до ее конца может быть пропущено как комментарий. rem rem delims== указывает, что разделителем значений является символ = rem rem tokens=1,2 приводит к тому, что в переменную %%i будет занесен первый rem токен, а в %%j - второй. rem for /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do ( rem В переменной i - ключ rem В переменной j - значение rem Мы транслируем это в переменные окружения set %%i=%%j ) exit /b 0 |
HellWolf06, спасибо конечно за веру в меня ))) но я умею только VBA и то на уровне создания активных кнопочек в экселе, обладающих весьма ограниченным функционалом ) примерно 60% написанного впитал, но для чего именно это нужно и к какой части вопроса моего это относится... могу предположить что к последнему... но для меня нет очевидных моментов с выводом в файл, например... это пожалуй самая моя больная тема т.к. я это так и не выяснил для себя даже в VBA ))) (т.е. как работать с внешними данными)
поэтому просьба считать меня совсем тупым и плясать от того, что написав выше означенные скрипты я выжал максимум из своих возможностей ))) /грубо говоря умею юзать прямые функции типа copy и start/ |
Цитата:
Код:
@Echo Off |
gora, не знаю других слов благодарности кроме "ОГРОМНОЕ СПАСИБО!" но их явно не достаточно )))
скрипт работает на ура ))) пояснения к коду максимально доходчивые для начинающих, за что, отдельный респект ))) для перекодировки в "dos 866", юзал "dcd"... (на случай если под рукой у кого-то не окажется другого перекодировщика, их навалом) |
пока решена только первая часть задачи...
|
Цитата:
Про ярлыки идея вообще непонятна, да и работать с ними (создавать, изменять и т.п.) из бат файла, без сторонних утилит, не получится. Попробуйте четко сформулировать задачу, не скупясь на подробности и примеры, ибо, правильно сформулированная задача - это половина ее решения. |
sharky lions,
я тоже знаю VBScript и batch, но с той функцией которую я тебе дал и сам не разобрался) |
в общем, надо применить цикл FOR с ниже обозначенным набором операторов
Цитата:
с создать файл "DIR_PATH.txt" в котором построчно перечисляются найденные значения переменной %I в формате: C:\***\DIR_NAME где *** означает любое количество каталогов(директорий) в пути до искомой директории "DIR_NAME" при этом желательно чтобы "DIR_PATH.txt" был в UNICODE, если это возможно, конечно... |
Цитата:
|
Цитата:
упрощённый алгоритм следующий: Код:
начало цикла |
Время: 05:50. |
Время: 05:50.
© OSzone.net 2001-