![]() |
Создание txt файла при добавлении файла в архив rar, немного дополнить скрипт
Скрипт архивирует файлы с расширением *.psd и *.jpg
Код:
@echo off - после архивирования, во всех папках где созданы архивы, создавался файл name.txt в единственном числе, а при наличии данного файла заменялся новым. - в созданном файле присутствовал текст в несколько строк text text text Необходимо новое дополнение: - что бы при запуске скрипта, он не архивировал файлы с нужным расширением, если в пути к данному файлу имеется папки с именами - пример name1, name2, name3 (проще говоря, что бы скрипт не залазил в данные папки) |
Код:
... вообще нужно объяснить что это за файл, для чего (какую роль выполняет) он, почему уже может быть такой, откуда тот берется скорее всего весь код надо видоизменить к этому условию, но надо точно понимать задачу. |
alpap спасибо
Добавил ваш код в свой, все работает, как и требовалось. Пример: Существует много папок с начальными проектами для работы с фотографией. В настоящее время данный файл создается вручную в каждом проекте (папке) и содержит технические комментарии по проекту. В старых проектах данный файл уже существует, а в новые его еще требуется добавить. Комментарии в проекте всегда одинаковые, разные только изображения. Проекты отправляются разным людям, что бы те выполняли работу в соответствии с комментариями к проекту. Благодаря вам теперь это возможно в автоматическом режиме, и не придется постоянно копировать файл в разные папки. |
ndrjjzbv, имхо, здесь ошибка, надо:
Код:
dir /a-d /b /s %%i:\*.psd %%i:\*.JPG 2^>nul |
На мой взгляд — тоже.
|
Цитата:
Если не затруднит, подскажите по выше изложенному скрипту. Как его дополнить, что бы при запуске скрипта, он не архивировал файлы с нужным расширением, если в пути к данному файлу имеется папки с именами - name1, name2, name3. |
ndrjjzbv,
Цитата:
теперь создайте и запустите bat на рабочем столе с кодом: Код:
@echo off а теперь измените код на: Код:
@echo off без буквы диска (или директории) подставляется текущий (текущая директория - запуска) для проверки создайте теперь на рабочем столе файл с расширением docx и запустите первый код - будут найдены соответствующие файлы. |
Цитата:
а для rar или такой же или надо в мануале смотреть, я им не пользуюсь просто. |
Расширенная справка по WinRAR на русском
взял пример ключа из мануала и добавил в скрипт Код:
-r -x*\Documents and Settings -x*\Documents and Settings\* Код:
-r -x*\"Documents and Settings" -x*\"Documents and Settings"\* |
ndrjjzbv,
тогда так отсейте ненужные пути и в команду поставьте архивацию Код:
@echo on |
ndrjjzbv,
Мой вариант, предполагается, что в системе отсутствует диск A:
Код:
@Echo Off |
Цитата:
Правильно ли я понимаю, что Код:
findstr /v name.* papka что это за папка Код:
"papka\*.txt"^ |
megaloman
Цитата:
|
ndrjjzbv, Попробуйте, я подправил код. Однако! Если в именах папок-исключений кириллица - сохранять батнмк в 866 кодировке.
|
Спасибо. Работает хорошо, но требуются права администратора. Возможен ли вариант для запуска без прав администратора?
|
ndrjjzbv,
через ярлык в котором поставить запуск с правами или задачу в планировщике с соответствующей галкой. |
добавил в код |findstr /v name1.* все работает, скрипт пропускает файлы хранящиеся в папке с именем name1 и ее подпапках
Код:
') do ( |
Цитата:
Код:
findstr /v /c:"name2[0-9][0-9]*" /c:"name3[0-9][0-9]*" |
Цитата:
|
вероятно в коде ошибка, т.к. в перечисленных папках подобным образом
Код:
findstr /v /c:"name2[0-9][0-9]*" /c:"name3[0-9][0-9]*" добавил ключ /r все заработало Код:
findstr /r /v /c:"name2*" /c:"name3*" |
ndrjjzbv, а если ещё добавить в findstr.exe параметр «/r» ;)?
Вы не стесняйтесь читать документацию (в данном случае — «findstr.exe /?»), ибо иначе грош цена всей помощи будет. |
Ключ /C: при использовании регулярных выражений должен использоваться в команде совместно с ключом /R
зачем нужны [0-9][0-9], с ними папки не исключаются при ключе /r все работает без [0-9][0-9] |
ndrjjzbv, тогда ещё стоит почитать что-нибудь по регулярным выражениям.
Код:
/c:"name2[0-9][0-9]*" Цитата:
Код:
name22 Код:
name2 (всего пять символов, а шаблон требует не менее шести) |
Если в конце имени папки отсутствуют цифры, то [0-9][0-9] вводить не требуется?
|
ndrjjzbv, если Вы хотите просто перечислить несколько имён, не вдаваясь в тонкости регулярных выражений (которые к тому же в findstr.exe весьма и весьма ограниченные), используйте параметр «/l» вместо «/r», а затем просто перечислите искомые имена посредством параметра «/c»:
Код:
findstr.exe /v /l /c:"Мама" /c:"мыла" /c:"раму" |
Iska
Спасибо, ваш способ решил задачу |
ndrjjzbv, до кучи, ещё, наверное, и параметр «/i» может есть смысл пользовать, дабы не учитывать регистр символов.
|
ndrjjzbv,
Вот вариант, необходимо наличие дисков C: и D: Возможно, это решит проблему с доступом.
Код:
@Echo Off Echo C:\TMP\ Echo C:\Program Files\ Добавлено в качестве примера |
Время: 22:50. |
Время: 22:50.
© OSzone.net 2001-