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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Astron



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Глубокоуважаемый мной Elroir! Подниму тему, которую Вы любезно решили ранее, касаемо:
     
    http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=1820#7
    http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=1860#2
    http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=1920#19
     
    в общем, в районе эти постов, помнишь? Могу ли я попросит сделать универсальные батник+cmdшник, которые работали бы следующим образом:
     
    Команда №1 в контекстном меню, например "Spaces to Underscores"
    --->меняет в имени пробелы на подчеркивания для текущего файла или каталога, причем имена всех содержащихся в текущем каталоге файлов и подкаталогов НЕ изменяются
     
    Команда №2 в контекстном меню, например "All Sub Spaces to Underscores"
    --->меняет пробелы на подчеркивания для текущего файла, а в случае каталога, то для него и всех содержащихся в нем файлов и каталогов
     
    Это было бы здорово!

    Всего записей: 790 | Зарегистр. 28-12-2003 | Отправлено: 20:43 03-05-2008 | Исправлено: Astron, 20:45 03-05-2008
    angeltwo

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

    Цитата:
    1) Как Запустиьть с Помощью Батника  Службу??  ( имя ее Diskeeper )  

    Если служба установлена:
    net start Diskeeper  или
    sc start Diskeeper (этой командой можно запускать эту службу и с удаленного компьютера, читай хелп по ней)

    Цитата:
    2) Как убить процесс   avp.exe (Антивирус Карсперского 6.0 ) и oupost.exe (Фаер Вол  OutPost 4.0)  (через диспетчер задач я их убить не могу =( )  

    не знай, поможет или нет, проверить не могу
    taskkill /F /IM avp.exe /IM outpost.exe /T
    (либо с помощью утилиты из PsTools: pskill -t avp.exe  
    pskill -t outpost.exe)

    Цитата:
    3)  
    Как запутить программы с помощью батника.&  
     
    пишу  start F:\Проги\Norton WinDoctor 2007\WINDOC.EXE       и не работает.... похоже запинается на русских буквах и пробелах =(  
     
    Мне надо запустить пару файлов:  
     
    F:\Проги\Norton WinDoctor 2007\WINDOC.EXE    
    F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc  
    F:\Проги\VitSoft\Vit Registry Fix\Vit Registry Fix 4.2.exe  
    F:\Проги\CCleaner2.03\CCleaner.exe  

    Надо имя с пробелами в кавычки брать: start "F:\Проги\Norton WinDoctor 2007\WINDOC.EXE" (если хочешь, чтобы батник ждал завершения этой программы, то используй start /wait "F:\Проги\Norton WinDoctor 2007\WINDOC.EXE") Остальные exe-шники точно так же.
    Msc-файл запускай так(правда это только консоль, сама она делать ничего не будет):
    либо: "F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc"
    либо: mmc "F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc"

    Всего записей: 257 | Зарегистр. 09-05-2007 | Отправлено: 21:13 03-05-2008
    Elroir



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

    Цитата:
    Надо имя с пробелами в кавычки брать: start "F:\Проги\Norton WinDoctor 2007\WINDOC.EXE" (если хочешь, чтобы батник ждал завершения этой программы, то используй start /wait "F:\Проги\Norton WinDoctor 2007\WINDOC.EXE")

    Все верно, только работать оно не будет. Имя с пробелами, действительно надо брать в кавычки, но перед этим именем, обязательно добавлять еще и пустые кавычки. Это обсуждалось несчетное количество раз.
    Dantis  

    Код:
     
    start "" "F:\Проги\Norton WinDoctor 2007\WINDOC.EXE"
    start /wait "" "F:\Проги\Norton WinDoctor 2007\WINDOC.EXE"
     

    а для того, чтобы не было проблем с русскими буквами, надо добавить в начале батнику строчку:

    Код:
     
    chcp 1251>nul
     

     
    Добавлено:
    Astron
    Чуть позже посмотрю - сейчас нет возможности.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:36 03-05-2008
    panda3

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть ли простой способ преобразовать строку вида "000054" в десятичное число (количество ведущих нулей может быть произвольное)?

    Всего записей: 203 | Зарегистр. 06-02-2007 | Отправлено: 22:52 03-05-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    panda3
    Тебе нужно отбросить все нули слева?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:57 03-05-2008
    panda3

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    ну да. Пока что вот придумал так:
     

    Код:
    set tmp=1%str%
    set /a a=tmp-1000000

     
    Это если разрядность фиксирована. Хотелось бы одним оператором.

    Всего записей: 203 | Зарегистр. 06-02-2007 | Отправлено: 23:01 03-05-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    panda3
    for /f "tokens=* delims=0" %%a in ('echo %str%') do set "str=%%a"

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 23:43 03-05-2008
    Astron



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасибо, если будет время. Я напомню  

    Всего записей: 790 | Зарегистр. 28-12-2003 | Отправлено: 23:50 03-05-2008
    Dantis

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    Спасибо русские символы работают. и проги запускаются =).  
    angeltwo
     

    Цитата:
    не знай, поможет или нет, проверить не могу  
    taskkill /F /IM avp.exe /IM outpost.exe /T  
    (либо с помощью утилиты из PsTools: pskill -t avp.exe  
    pskill -t outpost.exe)

     
    Эти команды не работают =(.
     

    Цитата:
    Msc-файл запускай так(правда это только консоль, сама она делать ничего не будет):  
    либо: "F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc"

    Работает но как то через раз  
     

    Цитата:
    либо: mmc "F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc"

     
    Эт запускает консоль. она мне нах не нужна =).
    Цитата:
    net start Diskeeper  или

     
     

    Цитата:
    net start Diskeeper

     
    Это работает =).  
     
     
    angeltwo, Elroir  Огромное спасибо за помощь.
     
     
     
     

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 23:52 03-05-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    To All
    Прошу прощения за настойчивость, задача может быть простая и не интересная, но не для меня, поэтому может кто-нибудь все таки поможет решить ее
     
    Суть задачи еще раз переписывать не буду(есть на прдыдущей страничке)  
     

    Цитата:
    @echo off    
    FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\4\*.*"') do set /a count+=1    
    IF EXIST D:3\*.* set "count=0%count%" ELSE    
    set "count=00%count%"    
    set "count=%count:~-2%"    
    for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (    
     
    find /n %%c d:\2\qqq.dat -  определить номер строки в которой встречается имя найденного выше файла и занести его в переменную??????????  
     
     - Затем  в папке "D:\3" берем файл с именем 'старое имя' +'номер строки -2' + 'старое расширение' и копируем его в папку "D:\4" с переименовыванием???????????  
       
    copy /y /D "D:\3\%%f" "D:\4\17%date:~0,2%%count%.dvc"    
    goto :eof    
    )    
    )

     
    Всем откликнувшимся спасибо!
     
     

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 10:20 04-05-2008
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, а как в сценарии организовать индикацию выполнения команды?
    Если выполнена успешно - ОК. Если ошибка - Error.
    Я так понимаю нужно использовать error level'ы?

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 11:58 04-05-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    if not errorlevel 1 echo ОК
    if errorlevel 1 echo Error
     
    Правда иногда не прокатывает, надо проверять.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:23 04-05-2008
    igor_andreev

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

    Цитата:
    find /n %%c d:\2\qqq.dat -  определить номер строки в которой встречается имя найденного выше файла и занести его в переменную??????????  

    Лучше не FIND /N, а FINDSTR /N

    Код:

    for /f "tokens=1 delims=:" %%a in ('findstr /n "что искать" файл') do set "numm=%%a"

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 13:24 04-05-2008
    ruan13BRD

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

    Всего записей: 1 | Зарегистр. 04-05-2008 | Отправлено: 14:49 04-05-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev, спасибо!
    а как синтаксически верно уменьшить значение numm на 2?

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 14:52 04-05-2008
    Nagual



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

    Цитата:
    как в сценарии организовать индикацию выполнения команды?

    для этого надо лезть в справку каждой команды и изучать её коды возврата (errorlevels)
    самому протестить команду на ошибки можно примерно так
     
    Код:
    @echo off
    title Џа®ўҐаЄ  -  ®иЁЎЄг Є®¬ -¤л:
    :repeat
    echo
    .
    set /p "input=  ‚ўҐ¤ЁвҐ Є®¬ -¤г: "
    set "comm=%input%"
    title Џа®ўҐаЄ  -  ®иЁЎЄг Є®¬ -¤л: "%comm%"
    %comm%
    echo
    .&echo Џ®«гзҐ- Є®¤ ў®§ўа в  ®иЁЎЄЁ %errorlevel%&echo.&goto:repeat
     
    ну и if/? тебе в помощь

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 14:58 04-05-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ruan13BRD
    Если только средствами Windows, то можешь сбрасывать аттрибут "Архивный" с файлов в папке(ATTRIB /?), в конце месяца смотреть, на каких файлах он появился - те и изменены.
     
    Но лучше fastsum консольную возьми отсюда www.fastsum.com
    В начале месяца  

    Код:

    rem создать в корне папки файл WORKDIR.MD5, рекурсивно,  
    rem перезаписать MD5, если уже существует
    fastsum D:\WORKDIR /R /O /T:R

    в конце месяца

    Код:

    rem проверить рекурсивно все файлы из MD5 файла,
    rem измененные записать в D:\modified.txt
    rem отсутствующие в D:\not-found.txt
    rem ну или с /U(Update mode), список всех ключей fastsum /?
    fastsum D:\WORKDIR\WORKDIR.MD5 /V /R /C:D:\modified.txt /E:D:\not-found.txt

    bmax

    Цитата:
    а как синтаксически верно уменьшить значение numm на 2?

    Понятия не имею, как синтаксически верно, я обычно просто отнимаю 2
    set /a numm=%numm%-2
     
     
    Добавлено:
    ruan13BRD
    Посмотрел в http://www.fastsum.com/download/fsum.zip , а екзешник оказывается не fastsum.exe называется, а fsum.exe, переименована просто в fastsum. У меня в PATH fsum.exe со slavasoft.com и с fastsum.com одновременно лежат, одна к фару прикручена, одна к проводнику и пользуюсь обеими в батниках, обе хороши по своему.

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 15:30 04-05-2008 | Исправлено: igor_andreev, 15:40 04-05-2008
    bmax

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

    Цитата:
    Понятия не имею, как синтаксически верно, я обычно просто отнимаю 2  
    set /a numm=%numm%-2

     
    Я все перепробывал, но вот такого варианта расстановки процентов не делал, сейчас наверное все получится  
     
    Огромное спасибо!

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 15:58 04-05-2008
    JI063uk



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужна помощь в следующем вопросе есть батник, который удалено прибивает процесс на компах которые прописаны тут list.txt, надо чтобы он потом его обратно запустил на этих же компах после того как прибил. Не знаю как это реализовать…. Заранее благодарю
     
    Код
    @echo off
    setlocal
    for /f "tokens=*" %%i in (list.txt) do (
    taskkill /s "\\%%i" /im 1.exe /f
    )
    ///если выполняется то запускает это start "" "C:\111\1.exe"
    PAUSE
     

    Всего записей: 55 | Зарегистр. 24-01-2008 | Отправлено: 20:07 04-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JI063uk
    psexec из набора PSTools (ссылка в шапке).

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:42 04-05-2008
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru