Страница 1 из 1

Помогите подредактировать bat-ник

Добавлено: 01 сен 2009, 17:00
Timofey
Доброе время суток!

Мне надо сделать, чтобы без особых напрягов в нужном файле выводился список папок в котором пути корневых папок относительно обрабатываемой начинались с минуса. Остановился на bat-никах, как на самом простом и быстром в работе.
Например, обрабатываем папку С:\Temp\

правильные пути:
С:\Temp\-tmp1\
С:\Temp\-tmp1\folder1\
С:\Temp\-tmp1\-folder-2\
С:\Temp\-tmp2\folder3\folder\
С:\Temp\-tmp3\folder\

не правильные пути:
С:\Temp\tmp1\
С:\Temp\folder1\-folder1\
С:\Temp\tmp-1\-folder-2\
С:\Temp\Temp\Temp\Temp\-folder\

Постарался объяснить как можно доходчивее и правильнее, если что уточняйте.
Этот код выводит все папки из папки C:\Temp\:

del out.txt
for /r C:\Temp\ %%i in (.) do echo %%i >> out.txt

Пробовал варьировать параметр в скобках, но или ничего не работало, или работало не правильно: (C:\-*.), (-*.)

Буду благодарен за подсказку.

Re: Помогите подредактировать bat-ник

Добавлено: 04 сен 2009, 11:19
Игорь Акопян
for /r /d %%i in (-*) do echo %%i >> out.txt

не то?

Re: Помогите подредактировать bat-ник

Добавлено: 05 сен 2009, 13:36
Timofey
К сожалению нет.
Во-первых здесь не указана папка которую надо обрабатывать и обрабатывается та в которой лежит *.cmd, во-вторых данный код выводит все пути в которых содержится "-", а мне надо так: если обрабатывается папка "C:\tmp\", то мне надо вывести пути всех папок "C:\tmp\-*", другие "минусы" меня не интересуют.
Данной задачей у меня занимался xStarter, но он работает медленно и начал загонять, т.е. перестал это делать вообще. Я решил всё это дело сделать надёжнее, проще, и быстрее, через CMD.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Нашёл такое решение:

del out.txt
for /r C:\tmp\ %%i in (.) do echo %%i >> out.txt
findstr /b /i /c:"C:\\tmp\\-" out.txt >> exit.txt

Остаётся подредактировать по мелочи и всё готово. Не нравится, что в несколько заходов делается, ещё точки в конце путей надо убирать...
Для чего мне это нужно? Резервная копия документов. У небольшой компании есть сервер с общедоступной папкой, если кто-то удалит документ, то восстановить проблематично, хороший выход - backup. Все документы этого диска копировать не имеет смысла (~50 Gb), по-этому я сделал так, что резервируются только те папки в названии которых в самом начале стоит "-" (логичнее конечно наоборот, но если понасаздают всяких левых папок, то они будут резервироваться, а так юзвери будут осознанно ставить "-"). Ещё одна причина по которой выбран "-" - это то что папки в WinXP сортируются по имени, при этом знак минуса в названии при сортировке игнорируется. Например, "-Новая папка" будет рядом с "Новая папка", но "+Новая папка" или "#Новая папка" будут в самом начале списка.
Потом, файл со списком папок подсовывается WinRAR и у меня получается 2-3 Gb архив с 4-5 Gb нужной инфы на одном из сетевых компьютеров.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
А если честно, я .....ся подгонять всё под нужый формат. Так ничего путнего и не получилось...
Напишу консольку на Си.

Re: Помогите подредактировать bat-ник

Добавлено: 07 сен 2009, 13:34
Игорь Акопян
а не проще было сразу архивировать раром только то что надо?

Re: Помогите подредактировать bat-ник

Добавлено: 16 сен 2009, 06:39
Timofey
Игорь Акопян писал(а):а не проще было сразу архивировать раром только то что надо?
Опять же, нет. Пробовал с разными ключами рар (скажу, что ключей используемых для создания этих копий в раре порядка 12-15 штук), но он не может отобрать то что мне надо. А так как список папок может меняться каждый день (люди то работают на работе :) ) , то надо чтобы это делалось автоматически. В конце концов у меня запускается рар, делающий резервный архив по списку путей, который сейчас создаётся консолькой.
Если честно, то мне тоже не нравится эта цепочка: одна программа запускает по расписанию файл .cmd который лежит там-то, который в свою очередь запускает консольку, которая лежит там-то и потом запускается рар, который создаёт резервную копию. Вот и хотел всё впихнуть в .cmd чтобы запускать и не задумываться о том что и где лежит.
Но не хочет .cmd работать как надо!!! Ну, никак!!!

Re: Помогите подредактировать bat-ник

Добавлено: 17 сен 2009, 10:07
Игорь Акопян
эээ
rar a -r qwe c:\temp\-*