Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4

Модерирует : KLASS, IFkO

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах
(часть 1, часть 2, часть 3)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR
.
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BELOV
    Я имел ввиду создать макрос с "чистого листа". По этому вопросу я помочь не могу.
     
    А скрипт это как вариант для обработки документа в формате rtf, но я сомневаюсь что он правильно отработает. На всякий случай попробуй. Свой doc в сохрани в rtf. Замени выделенные названия в коде на свои (вверху тот, который есть, а внизу, который должен получиться на выходе). Если получится, сохрани обратно в doc.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:22 20-11-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    такая трабла: нужно удалить из набора .zip архивов файлы thumbs.db. Проблема осложняется тем, что файлы скрытые и такое решение не прокатывает:
    for /f "usebackq delims=" %i in (`dir /a-d e:\archive\2003 /b /s`) do start
    /wait winrar d -inul "%i" "thumbs.db"
    Винрар не хочет удалять скрытые файлы.
     
    Существует какое-нибудь простое решение, без перераспаковки всех архивов?

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 14:26 21-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Filosofem
    а в справке нет такого ключа:

    Цитата:
     
    e[+]<атр>     Исключить/включить в обработку файл(ы) с указанными атрибутами
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:56 21-11-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     

    Цитата:
    Filosofem
    а в справке нет такого ключа:
     
    Цитата:
     
    e[+]<атр>     Исключить/включить в обработку файл(ы) с указанными атрибутами
     

    справку читал. Этот свич не помогает

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 15:05 21-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Filosofem
    Они еще и системные.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:10 21-11-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BELOV

    Цитата:
    Как отформатировать текст в Word'e:
    Текст (скопированый)с сайта выстроен колонкой примерно половина стандартной ширины страницы Word'a. Чтобы вручную отредактировать, надо становиться в конец строки, ставим пробел и кликаем Del. Тогда следующая строка склеивается с текущей и текущая строка занимает теперь всю ширину страницы. Чтобы не заниматься такой трудотерапией, можно написать батник? Ну а в идеале: чтобы все строки стали ровными по обоим краям и во всю ширину страницы. М.б. уже есть готовый батник?
     

     
    в ворде есть функция найти и заменить (ctrl+h если не ошибаюсь). Заменяешь знак конца абзаца, или конца строки на пробел и применяешь ко всему тексту. Затем включаешь выравнивание по всей ширине и анкерами выставляешь нужную ширину
     
     
    Добавлено:
    01MDM

    Цитата:
    Filosofem
    Они еще и системные.  

    Оказалось проблема была не в этом, я чего-то напутал.
    Системные и скрытые нормально удаляются. Не удаляются те, которые с относительными путями, то есть в папках лежат. Что с этим можно сделать? Ключ -r не помогает
     

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 15:15 21-11-2007
    Fors127



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Filosofem

    Цитата:
    в ворде есть функция найти и заменить (ctrl+h если не ошибаюсь). Заменяешь знак конца абзаца, или конца строки на пробел и применяешь ко всему тексту.

    Это сразу попробовал, но не удается найти эти знаки. Поэтому, WU "перелопатил" текст, а затем
    Цитата:
    Затем включаешь выравнивание по всей ширине и анкерами выставляешь нужную ширину  
    ОК!
     

    Всего записей: 709 | Зарегистр. 14-09-2007 | Отправлено: 20:43 21-11-2007
    ArchangelLite

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день (вечер).
     
    Как мне удалить некоторые файлы на рабочем столе, ведь его точное расположение я не знаю.
     
    Заранее огромнеейшее спасибо...
     
    Добавлено:
    Да, извините если прерываю, и что не по теме...
    Просто очень нужно, найти путь зная название папки.

    Всего записей: 12 | Зарегистр. 18-11-2007 | Отправлено: 21:09 21-11-2007
    PapaKarlo



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ArchangelLite

    Цитата:
    ведь его точное расположение я не знаю

    Что-нибудь вроде %USERPROFILE%\Desktop

    ----------
    Древнеиндийская игра
    Зри в корень! (с) К.Прутков

    Всего записей: 1050 | Зарегистр. 19-05-2004 | Отправлено: 22:13 21-11-2007 | Исправлено: PapaKarlo, 22:17 21-11-2007
    AndrewPfaifer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    имеется такая необходимость что бы комп в нужное время блочился без админа и в нужное время логинился также без админа.  
    Первую проблему я уже решил(rundll32.exe user32.dll,LockWorkStation), а вот какая функция исполняет вход?

    Всего записей: 64 | Зарегистр. 17-11-2007 | Отправлено: 12:44 22-11-2007
    William Gates

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Такая необходимость. Есть два одинаковых каталога: один на сервере, другой локально. Нужен батник который просканирует каталог на сервере и если в нем будут новые или измененные файлы скопирует их в локальный каталог. Заранее спасибо!

    Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 12:58 23-11-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    William Gates
    Поищи в версии для печати Robocopy.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:09 23-11-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть задачка - слить 2 файла в один, каждая строка которого представляет собой строку , образованную слиянием соответствующих по номеру строк исходных файлов.
    Не желательно использовать конструкцию For /f "Skip=n" - слишком медленно.  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:37 23-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Без скипа не получается. Вариант с временными файлами и скипом.

    Код:
     
    @echo off
    setlocal
     
    echo.>1.tmp && type 1.txt >>1.tmp
    echo.>2.tmp && type 2.txt >>2.tmp
     
    for /f %%i in (1.txt) do set /a count+=1
    set /a count+=1
    set skip=1
    :next  
    for /f "skip=%skip% tokens=*" %%i in (1.tmp) do (
        set "line1=%%i" && goto:skip
    )
    goto:eof
    :skip
    for /f "skip=%skip% tokens=*" %%i in (2.tmp) do (
        set "line2=%%i" && goto:write
    )
    goto:eof
    :write
    set "line=%line1% %line2%"
    for /f "tokens=*" %%i in ("%line%") do echo %%i>>3.txt
    set /a skip+=1
    if %skip%==%count% (del /q *.tmp && goto:eof) else (goto:next)
     

     
    И исходные файлы без пустых строк..

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:24 23-11-2007 | Исправлено: 01MDM, 16:38 23-11-2007
    Vladimir312



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопросик:
     
    1. Есть пара каталогов, надо из одного скопировать в другой новые файлы.
    Но не "измененные", а именно только новые,
    т.е. чтобы не было правок файлов "задним числом" ...
    Т.е. если файл уже во 2-м каталоге существует, то его не перезаписывать.
    ===
    2. вариант с xcopy /u - только "обратный"  
      /U    Копирует только файлы, которые уже существуют в конечной папке.
    К сожалению, обратный, типа /y и /-y с /-u - не проходит (нэт такого ключика).
    И в большинстве программок - такой фишки не встречал.  
    ===
    3. Варианты с копированием только файлов с атрибутом "Архив" и сбросом атрибута - после копирования - не годится, т.к. MS Office (Word, Excel) после модификации,
    или просто после сохранения (даже без изменения данных) - ставять атрибут "А".
    ===
    4. Вариант с датами файлов - запрет на копирование по "старости" - 1 день:
    NTFS хранит и MS MS Office корректно ставит дату на файлы, например,
    проводник, правая кнопки мыши, свойства:
    - файл создан (одна дата - 13.11.2007)  
    - файл изменен (другая дата - 19.11.2007)
    Но, стандартные консольные утилитки copy и xcopy
    считают дату изменения - датой файла,
    может быть из-за того, что MS Office (Word, Excel) оченть интересно изменяют файлы:
    - сначала создают временную копию,
    - затем удаляют оригинал,
    - и временную копию (измененную) переименовывают вместо оригинального файла.
    ===
    5. вариант который работает - с RAR:
    ключ -O-  — пропускать существующие файлы
    Разрешает пропускать существующие файлы без выдачи запросов пользователю.
    Т.е. вариант "немного" "не правильный"  
    - сначала создается RAR архив с ключем -o-
    - затем тут же разархивируется в целевую папку
    т.к. нужен не архив, а именно "живые" файлы.
    ***
    Не подскажите вариант со скриптами или готовую программку (которая "умеет" так работать) ?
    ===
    Наверное,  
    - сначала "dir" одной папки (dir /a-d /b);
    - затем "dir" целевой папки (dir /a-d /b);
    - сравнение;
    - копирование не достающих файлов в целевую.
    ***
    P.S.  
    Спасибо за подсказку (см. следующий пост) - robocopy /XN
    делает то, что надо (копирует только новые файлы, без измененных).
     
    И, : по ссылке в шапке http://www.rsdn.ru/article/winshell/batanyca.xml

    Код:
    for /d %%i in ("%%~si") do (
    set SHORT=%%~si
    )
    echo %SHORT%

    выводит короткий путь + имя самой переменной,
    интересно, как убрать вывод %~si

    Всего записей: 151 | Зарегистр. 25-10-2006 | Отправлено: 17:11 23-11-2007 | Исправлено: Vladimir312, 23:17 23-11-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Vladimir312
    См. совет выше о Robocopy

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:17 23-11-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM

    Цитата:
    Без скипа не получается.

    Так в этом и вся проблема.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:29 23-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Вот еще заготовочка:

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set count=0
    for /f %%i in (1.txt) do (
        set line=%%i
        set /a count+=1
        call:next
    )
    goto:eof
    :next
    set count2=0
    for /f %%i in (2.txt) do (
        set /a count2+=1
        if !count2!==%count% (echo %line% %%i >>3.txt)
    )
     
     

    Без учета обработки самой строки (tokens и т.п.)  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:10 23-11-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM

    Цитата:
    Вот еще заготовочка

    Так проблема в том, что для обработки каждой строки первого  необходимо каждый раз заново открывать второй и читать его сначала. Возможно ли батником синхронно читать оба файла?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:51 23-11-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    А какая скорость нужна , если всё таки использовать skip?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:29 23-11-2007
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru