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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    zepterman

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

    Всего записей: 190 | Зарегистр. 27-04-2006 | Отправлено: 22:20 26-11-2009
    wolf0425



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

    Цитата:
    PushD C:\Windows\system32\spool\PRINTERS && RD /s /q . 2>nul
    PopD  
    а чем это лучше тривиального del /s/q C:\Windows\system32\spool\PRINTERS  ??

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:31 26-11-2009
    01MDM



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

    Цитата:
    а чем это лучше тривиального del /s/q C:\Windows\system32\spool\PRINTERS  ??  

    А какая разница? Вопрос был скорее в названии службы.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:37 26-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех. Есть пара задач, в одной удаляются файлы, которых нет в списке, в другой - каталоги. Всё это я вполне решаю посредством полдюжины вложенных If. Но, чисто для эстетики, нельзя ли это выполнить через For... In... Do...? Пытался честно поскрипеть мозгами, но чёй-то ничего в голову не приходит.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 07:58 27-11-2009 | Исправлено: BVV63, 07:59 27-11-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    как у тебя выглядит через if ???

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 08:00 27-11-2009
    BVV63



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

    Код:
     
    For %%A In ('Dir /A-D /B *.*') Do (
        If /I "%%A" NEq "File1" (
            If /I "%%A" NEq "File2" (
                If /I "%%A" NEq "File3" (
                    If /I "%%A" NEq "File4" (
                        If /I "%%A" NEq "File5" (
                            Del /A- /F /Q "%%A"
    ))))))
     

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

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 08:31 27-11-2009 | Исправлено: BVV63, 08:46 27-11-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в скрипте не помогу а на счет
    Цитата:
    средствами самой ОС
    вроде нужно вызвать %date% но предварительно поковыряться в региональных настройках ... там как раз можно задать как ты хочешь увидеть переменную date

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 10:12 27-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё есть вопрос. Как обрезать переменную сзади, не зная наперёд её длину? Собственно, задача - получить размер диска и сравнить со свободным пространством (т. е. выяснить, сколько процентов свободного пространства на диске). Set /A, зараза, работает только со значениями до 2^32. Вот и нужно обрезать переменную (скажем, убрать сзади 3 символа, т. е. разделить на 1000).

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:26 27-11-2009 | Исправлено: BVV63, 10:28 27-11-2009
    01MDM



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

    Цитата:
    как получить день недели системными средствами

     

    Код:
     
    @echo off
    setlocal
     
    set "exec=wmic path win32_LocalTime get DayOfWeek /value"
    for /f "tokens=2 delims==" %%i in ('%exec%') do set "day=%%i"
    set /a day+=1
    for /f "tokens=%day%" %%i in ("Вск Пон Втр Срд Чет Пят Суб") do echo %%i
     

     
    Еще 2 батника

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:47 27-11-2009 | Исправлено: 01MDM, 10:57 27-11-2009
    NIKZZZZ



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

    Цитата:
    Как обрезать переменную сзади

    В справке пр Set (Set /?)

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:56 27-11-2009
    mugil_cephalus

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

    Цитата:
    Вот и нужно обрезать переменную (скажем, убрать сзади 3 символа,  

    set "var=%var:~0,-3%"

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:22 27-11-2009
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят нужна помощь по awk.
    mawk.exe -f  скрипт.awk file1
    обрабатывается файл file1 скриптом скрипт.awk
    а как мне передать в тело скрипта для его обработки файл file2?
    (т.е. по типу mawk.exe -f  скрипт.awk file1 file2)
    (см. тело скрипта).

    Код:
     
    $7 ~ /[0-3][0-9]\.[01][0-9]\.20[01][0-9]/ {
        f_name = substr($7,9,2) substr($7,4,2) substr($7,1,2)
    }
         
    /^(0[35]6|040| и т.д.)/ {
        sub("\,",".",$NF)
        sub("0+$","",$NF)
        rate = $NF / $3
        sub("^0.",".",rate)
        print $1 " " rate " 0 0 0 0 " $3 " 810 0 0 0 0 " $NF " no" > f_name
    }    
     

    по сути скрипт для file1, так что нужна подсказка как модифировать его для обработки file2 (впринципе анологичные действия), с добавлением результатов обработки в f_name.
    по сути как с параметрами командной строки %1,%2 и т.д.
    спасибо за внимание!

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 19:22 27-11-2009
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    поскажите пожалуйста  - как проделать одно и тоже действие от 1 до 31 ? т.е. по дням недели
    нужно обработать 31 файл за месяц

    Цитата:
     
    set d=01
    set m=11
    ::
    "C:\Program Files\Log Parser 2.2\logparser.exe" file:Apps.sql -i:CSV -o:chart -charttype:line  -groupsize:647x400 -headerrow:off
     

    1102
    1103
    как изменять  d в пределах 01-31.
    спасибо.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 22:16 27-11-2009
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть ли возможность набор команд FTP (ftp.exe) выполнить из батника.. окромя команды ftp -s:c:\set.txt?

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 22:33 27-11-2009
    01MDM



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

    Цитата:
    Есть ли возможность набор команд FTP (ftp.exe) выполнить из батника.. окромя команды ftp -s:c:\set.txt?

    Ругнется, но выполнит, как пример:

    Код:
     
    @echo off
    ftp -s:%~nx0 -A ftp.mozilla.org
    exit /b
     
    cd pub/addons/10
    get adblock-0.5.2.055-fx+fl+mz+ns.xpi
    bye
     

     
    slech

    Цитата:
    как изменять  d в пределах 01-31.


    Код:
     
    @echo off
    for /l %%i in (101,1,131) do call:1 %%i
    goto:eof
     
    :1
    set "d=%1"
    echo %d:~-2%
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:57 27-11-2009
    ikif



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пару вопросов по команде Robocopy :
    1. /B - Что это за режим архивирования , и зачем он нужен (а что если без него) ?
    2. Надо ли  /COPYALL  для резервирования файлов (не системы)?
    3. /XF , /XD  - как вписать несколько папок и файлов для исключения ?
    4.  /XJ - Что за точки соединения , о чем речь ?
     
    Надо скопировать несколько папок с разных дисков на сьемный диск.
    Пока получилось так :
    robocopy "C:\MyProgram" "D:\Back" /E /B /TEE /V /R:10 /W:30 /NP /NS /COPYALL  /LOG:"C:\CopyGames.Log"  
     
    Что лишнее, что добавить ? /MIR специально не добавил.
     
    И вот еще , как запускать в Виндоус 7 двойным кликом ? (Приходиться запускать от Админа).

    Всего записей: 164 | Зарегистр. 09-12-2006 | Отправлено: 01:57 28-11-2009
    vigogne



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста решение такой задачи:
    Есть папка с подпапками, в каждой из которых находятся .reg-файлы (гейм-клуб).
    Файлов уже около 50-ти. Руками бегать по всем файлам и тыкать - полдня уходит, решил автоматизировать. Пока знаний хватило, чтобы создать cmd-файл со строчками типа regedit /s folder\regfile.reg. Но состав файлов и папок со временем меняется. Знаю, что можно это все сделать парой строк, но пока не могу понять как.
    Прошу помощи.

    Всего записей: 11 | Зарегистр. 16-03-2007 | Отправлено: 12:34 28-11-2009
    01MDM



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

    Код:
     
    @echo off
    for /f "tokens=*" %%i in ('dir /b /s /a "Folder\*.reg"') do regedit /s "%%i"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:43 28-11-2009
    maxxx_12345



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Требуется перебирать pppoe аккаунты (с именами от 0 до 8) до успешного подключения (можно сказать, нелегально ) Просматривать почти 700 листов ваших сообщений нереально, да и поиск чё-то ничего вразумительного не даёт. Чувствую, что затык в какой-то мелочи.
    Подскажите, что делаю не так:
     

    Код:
     
    :start
    set %i%=0
    :loop
    rasdial %i%
    if ERRORLEVEL == 0 break
    if %i% == 8 goto start
    %i%=%i%+1
    goto loop
    break
     

    Всего записей: 28 | Зарегистр. 01-03-2007 | Отправлено: 13:12 28-11-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    maxxx_12345
    Цитата:
    Подскажите, что делаю не так:  
    да почти всё )
    set i=0  
    что по твоему делает break ?
    set /a i+=1

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:21 28-11-2009 | Исправлено: wolf0425, 13:24 28-11-2009
       

    Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru