Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] обработка bat-ником списков из txt-файла

Ответить
Настройки темы
CMD/BAT - [решено] обработка bat-ником списков из txt-файла

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: sharky lions
Дата: 17-04-2011
Описание: дополнение
задача:
Дано:
скрипт, копирующий файлы из папки orig в папки test1, test2, test3 и т.д.

Цитата:
copy C:\Users\user\Desktop\Orig\*.* C:\Users\user\Desktop\test1 /y
copy C:\Users\user\Desktop\Orig\*.* C:\Users\user\Desktop\test2 /y
...
Требуется:
брать строку адреса для копирования из файла txt (пусть будет copy_to.txt)
т.к. приведён тестовый батник, в реале требуется копировать в n-ное количество мест,
адреса которых не подчинятся столь строгой логике, т.е. нет возможности применить маску...

структура списка подразумевается построчная (один путь = одна строка) возможен замыкающий элемент списка типа "end" для завершения цикла

Цитата:
C:\Users\user\Desktop\test1
C:\Users\user\Desktop\test2
...
D:\*\*\*\testn
end
заранее огромное спасибо!



и ещё один вопрос, как получить список тех самых путей в ТХТ файл? если известно что у них есть одна общая особенность - подпапка с одинаковым названием (решение с привязкой батника к названию папки сразу, не катит - требуется высокоинтеллектуальная обработка путей, т.к. не все из них должны быть "отоварены")

в принципе, последнюю задачу можно свести к обработке группы ярлыков в отдельной папке, получить данную группу ярлыков очень просто с помощью встроенной функции поиска и отправки ярлыков на рабочий стол ))) задача остаётся открытой для случаев, когда список ярлыков перестаёт помещаться на рабочем столе )))


____________________________________________________________________________________________________ ________
решение для задачи №1
Цитата gora:
Код: Выделить весь код
@Echo Off
:: Файл-список. Список директорий без завершающих слешей.
:: Если в списке используется кириллица, то кодировка файл-списка должна быть DOS (866)
Set filelist=e:\Temp 1\copy_to.txt
:: Исходная папка 
Set folder=C:\Users\user\Desktop\Orig
For /F "tokens=* usebackq" %%i In ("%filelist%") Do xCopy "%folder%\*" "%%i" /Y /I >Nul
»
решение для задачи №2

Цитата amel27:
Код: Выделить весь код
dir/s/b/ad "c:\*папка"|findstr/ie "\\папка">file.txt
»

Отправлено: 15:34, 07-04-2011

 

Аватара для HellWolf06

Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


Подсказка: тебе нужно использовать 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

-------
/* hell is other people's code */


Отправлено: 17:52, 07-04-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


HellWolf06, спасибо конечно за веру в меня ))) но я умею только VBA и то на уровне создания активных кнопочек в экселе, обладающих весьма ограниченным функционалом ) примерно 60% написанного впитал, но для чего именно это нужно и к какой части вопроса моего это относится... могу предположить что к последнему... но для меня нет очевидных моментов с выводом в файл, например... это пожалуй самая моя больная тема т.к. я это так и не выяснил для себя даже в VBA ))) (т.е. как работать с внешними данными)

поэтому просьба считать меня совсем тупым и плясать от того, что написав выше означенные скрипты я выжал максимум из своих возможностей ))) /грубо говоря умею юзать прямые функции типа copy и start/

Последний раз редактировалось sharky lions, 10-04-2011 в 02:26.


Отправлено: 02:10, 08-04-2011 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата sharky lions:
скрипт, копирующий файлы из папки orig в папки test1, test2, test3 и т.д. »
Попробуйте так:
Код: Выделить весь код
@Echo Off
:: Файл-список. Список директорий без завершающих слешей.
:: Если в списке используется кириллица, то кодировка файл-списка должна быть DOS (866)
Set filelist=e:\Temp 1\copy_to.txt
:: Исходная папка 
Set folder=C:\Users\user\Desktop\Orig

For /F "tokens=* usebackq" %%i In ("%filelist%") Do xCopy "%folder%\*" "%%i" /Y /I >Nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:41, 08-04-2011 | #4


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


gora, не знаю других слов благодарности кроме "ОГРОМНОЕ СПАСИБО!" но их явно не достаточно )))
скрипт работает на ура ))) пояснения к коду максимально доходчивые для начинающих, за что, отдельный респект )))

для перекодировки в "dos 866", юзал "dcd"... (на случай если под рукой у кого-то не окажется другого перекодировщика, их навалом)

Последний раз редактировалось sharky lions, 10-04-2011 в 02:25.


Отправлено: 01:03, 10-04-2011 | #5


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


пока решена только первая часть задачи...

Отправлено: 00:51, 11-04-2011 | #6


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата sharky lions:
как получить список тех самых путей в ТХТ файл?
1 если известно что у них есть одна общая особенность - подпапка с одинаковым названием
2 (решение с привязкой батника к названию папки сразу, не катит -
3 требуется высокоинтеллектуальная обработка путей, »
Вторая часть задачи плохо сформулирована. Нет ни каких разъяснений, что, куда и насколько "высокоинтеллектуально" нужно записать!?
Про ярлыки идея вообще непонятна, да и работать с ними (создавать, изменять и т.п.) из бат файла, без сторонних утилит, не получится.

Попробуйте четко сформулировать задачу, не скупясь на подробности и примеры, ибо, правильно сформулированная задача - это половина ее решения.

Отправлено: 08:20, 11-04-2011 | #7


Аватара для HellWolf06

Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


sharky lions,
я тоже знаю VBScript и batch, но с той функцией которую я тебе дал и сам не разобрался)

-------
/* hell is other people's code */


Отправлено: 14:12, 11-04-2011 | #8


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


в общем, надо применить цикл FOR с ниже обозначенным набором операторов

Цитата:
%~dp$PATH:I - проводится поиск по каталогам, заданным в переменной
среды PATH, и переменная %I заменяется на имя диска
и путь к первому найденному файлу.
к папке с названием "DIR_NAME"

с создать файл "DIR_PATH.txt" в котором построчно перечисляются найденные значения переменной %I в формате: C:\***\DIR_NAME
где *** означает любое количество каталогов(директорий) в пути до искомой директории "DIR_NAME"


при этом желательно чтобы "DIR_PATH.txt" был в UNICODE, если это возможно, конечно...

Последний раз редактировалось sharky lions, 13-04-2011 в 03:51.


Отправлено: 01:44, 13-04-2011 | #9


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата sharky lions:
заменяется на имя диска
и путь к первому найденному файлу »
т.е. для заявленной задачи перебора ВСЕХ подходящих под условие папок эта фича не подходит - проще перебрать и обработать все элементы PATH в цикле FOR... если именно это и надо, в чём у меня нет уверенности...

Отправлено: 09:04, 13-04-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] обработка bat-ником списков из txt-файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] обработка *.txt Михаил11 Скриптовые языки администрирования Windows 5 29-03-2011 10:00
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
CMD/BAT - [решено] Замена файла boot.ini с помощью bat файла Chekis9100a Скриптовые языки администрирования Windows 3 24-11-2010 08:17
Обработка лог-файла на C++ Guest Программирование и базы данных 17 23-03-2004 01:11




 
Переход