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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    StanislavG



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    объясни  в чем секрет?

    Всего записей: 34 | Зарегистр. 10-01-2007 | Отправлено: 16:46 03-04-2007
    Elroir



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

    Цитата:
    И чего он собирает весь месяц, а в конце не собирает объясни мне в чем проблема

    Там сложнее высчитывать предыдущий день - 1 (первое число) минус 1 дает 0, поэтому надо делать проверку, сколько дней было в предыдущем месяце и подставлять это число.

    Цитата:
    Вот строка архивирования после выполнения команды у меня должен получиться архив jour3103.dh0 но у меня получаеться jour0003.dh0 В чем может быть  причина?

    Это как-раз из-за тех закомментированых строк.

    Цитата:
    а если раз ремлить те строчки он выходит jour034.dh0  

    Добавь следующие строчки:

    Код:
     
    ...
    if not "%fd%"=="%prevd%" ( set "match=false")    
    if not "%fm%"=="%prevm%" ( set "match=false")    
    if not "%fy%"=="%prevy%" ( set "match=false")
    if %prevd% LSS 10 set "prevd=0%prevd%"
    if %prevm% LSS 10 set "prevm=0%prevm%"
    if %prevy% LSS 10 set "prevy=0%prevy%"

    if "%match%"=="true" (    
    copy c:\tcpfoss.452\%4 c:\tcpfoss.452\jnin\test\
    ...
     

     
    В заключении:
    1. rem-ы убрать.
    2. Добавить приведенные выше строчки.
     
     
    Добавлено:
    Maza Faka
    Работает и так, и так. Я использовал кавычки (с ними символ "|" воспринимается нормально), а ты их не использовал, поэтому пришлось добавлять "^" к "|".

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:41 03-04-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    StanislavG
    А знаешь, почему твой батник периодически сбоит и мурыжышься ты с ним уже кажется месяца три-четыре? Потому что он некрасивый, мне дык сразу не понравился Крылатая фраза Туполева "красивые самолеты хорошо летают" только кажется шуткой, на самом деле в каждой шутке есть доля...
    В общем-то почти вся работа с датами в батниках реализуется некрасиво. Даже уже не очень помню, что твой батник толком делает, кажется надо заархивировать файлы, созданные вчера. Давай я тебе подарю vbscript

    Код:

    If WScript.Arguments.Count=1 Then
      Set fso = CreateObject("Scripting.FileSystemObject")
      CompareDate=DateSerial(Year(Date), Month(Date), Day(Date)-1)  
      Set fc = fso.GetFolder(WScript.Arguments.Item(0)).Files
      For Each f in fc
        FileCreatedDate=DateSerial(Year(f.DateCreated), Month(f.DateCreated), Day(f.DateCreated))
        If FileCreatedDate=CompareDate Then WScript.Echo f.Path
      Next
    End If
    WScript.Quit

    Отдаешь в батнике этому скрипту любую папку в качестве аргумента и будет тебе счастье в виде списка файлов, созданных вчера.
     
    cscript //Nologo yesterday.vbs d:\downloads>d:\list.txt
    cscript //Nologo yesterday.vbs "d:\path with spaces\folder">>d:\list.txt
     
    Можно на все папки рекурсивно натравить
    for /r /d %a in (*) do cscript //Nologo yesterday.vbs "%a">>d:\list.txt
     
    list.txt будет в дос-кодировке(русские имена козябрами), но архиваторы его сьедят, хоть arj(!d:\list.txt), хоть rar(@d:\list.txt).
    DateSerial в vbs приводит даты к одному виду, поэтому такому скрипту сугубо параллельно, какой у тебя формат даты на компе, dd.MM.yyy или yyyy-MM-dd или еще что. Так-же ему перпендикулярно и наплевать, високосный-ли сегодня год и не первое-ли сегодня января. Бери-бери, скрипт фриваре и опенсорс. А то ты еще полгода будешь терроризировать камрада Elroir

    Всего записей: 1673 | Зарегистр. 08-12-2004 | Отправлено: 18:49 03-04-2007 | Исправлено: igor_andreev, 18:54 03-04-2007
    Elroir



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

    Цитата:
    Потому что он некрасивый, мне дык сразу не понравился  

    Камень в мой огород - я его как-то криво построил
    Мне тоже не понравилось, а переписывать лень было. Там вчерашняя дата высчитывается в каждой итерации for-a

    Цитата:
    Бери-бери, скрипт фриваре и опенсорс


     
    Добавлено:
    P.S. Ты так всех с батников на VB скрипты уведешь

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:54 03-04-2007
    igor_andreev

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

    Цитата:
    Камень в мой огород

    Ну вот это пряник в твой огород от Kac

    Цитата:
    Тока щас заметил как вы используете СКИП.  
    Потрясающе!  
    В консоли не новичок но такие вкусности приходят токо с опытом!  
    Потрясающе!  

    и я к нему присоединяюсь, тоже чуть сложней конструкцией пользовался до сего дня

    Цитата:
    Ты так всех с батников на VB скрипты уведешь

    Я еще и на KIX чуть-чуть умею...
    Никого-никуда не перевожу. Была одна организация в прошлом веке и был у нее принцип “для достижения цели все средства хороши”. Организация ублюдочная, а принцип, по отношению к компу - нормальный. У мну нет никаких условностей, типа "только средствами батников", "только средствами OC". Надо, чтоб работа была сделана - надо сделать и неважно чем пользоваться, *.cmd, *.vbs или установить для этого прогу весом в 200 Мб. Главное, чтоб все на компе крутилось-вертелось без запинки и с максимально меньшим участием человека, бо на "пиво попить" времени мало останется.
     

    Всего записей: 1673 | Зарегистр. 08-12-2004 | Отправлено: 19:57 03-04-2007 | Исправлено: igor_andreev, 20:01 03-04-2007
    Elroir



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

    Цитата:
    У мну нет никаких условностей, типа "только средствами батников", "только средствами OC". Надо, чтоб работа была сделана - надо сделать и неважно чем пользоваться, *.cmd, *.vbs или установить для этого прогу весом в 200 Мб.

    Полностью согласен. Я просто часто сталкивался с ситуациями, когда надо было не у себя на компе что-то сделать, а у другого человека, который даже не чайник , а так - умеет мышкой по десктопу водить. Вот поди объясни ему по телефону или мейлом, что утилиту надо кинуть в System32 директорию или добавить что-то в path. Поэтому и возникает потребность не использовать сторонние утилиты, а работать только со средствами самой системы. Как и у тебя, у меня есть директория с кучей всяких утилит - лежат они там с 199X-забытого года, но иногда очень помогают
    В общем то, что ты написал в последнем предложении - у каждого свои запросы, но если нет ограничений - использовать нужно то, что проще/быстрее/дает больше автоматизации.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:29 03-04-2007
    igor_andreev

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

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

    Тогда да конечно, надо стараться извернуться одним батником. Но StanislavG вроде как для себя делает - имхо пользуйся, чем хочешь.

    Цитата:
    у меня есть директория с кучей всяких утилит - лежат они там с 199X-забытого года,
    Адвансед юзер адназначна Я в 1994-м со свойственной мне решительностью сел в первый раз за комп, абсолютно ничего в нем не понимая, там были какие-то буковки на черном фоне(Нортон наверно) и пока никого рядом не было, минут за пять удалил кучу каких-то файлов и угробил ОС. Потом лет шесть к компу близко не подходил, ну для этого бухгалтера-секретари вокруг были.

    Всего записей: 1673 | Зарегистр. 08-12-2004 | Отправлено: 20:58 03-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Кстати, вопрос касающийся VBScript:
    я как-то видел батник совмещенный со скриптом в одном файле .cmd. Там то ли скрипт запускал батник, то ли наоборот, но они точно жили в одном и том же файле. Никак не могу вспомнить где я это видел и как оно было сделано. Может знаешь?

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



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

    Цитата:
    я как-то видел батник совмещенный со скриптом в одном файле .cmd.  

    VBScript - обычный текстовой файл с расширением .vbs . Запускается так-же, как .cmd.
     
    Echo ...... > test.vbs  
    Echo ...... >> test.vbs
    Echo ...... >> test.vbs  
    .......
    test.vbs %1 %2 .....
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 22:10 03-04-2007
    igor_andreev

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

    Цитата:
    Там то ли скрипт запускал батник, то ли наоборот, но они точно жили в одном и том же файле.

    hybrid.bat наверно http://www.radiks.net/~jimbo/demented/hybrid.htm
    Или похожий какой-нибудь.

    Всего записей: 1673 | Зарегистр. 08-12-2004 | Отправлено: 22:30 03-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Вся фишка в том, чтобы не создавать отдельный vbs файл, а использовать тот же самый bat или cmd.
    igor_andreev
    Вот-вот - было что-то похожее. Спасибо!

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:07 03-04-2007
    Bablo



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    пинговалка заработала, оказывется проблема была в том что я назвал батник ping.bat
    Всем спасибо

    Всего записей: 81 | Зарегистр. 20-06-2005 | Отправлено: 23:56 03-04-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    А вот как аналог на VBS написать, коменты там плохие, содержат, насколько помню <> .

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:00 04-04-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Аналог чего? Если hybrid.bat - то именно так не получится, многострочные комменты в vbscript не поддерживаются. В *.vbs только одинарная кавычка в начале каждой строки

    Код:
    ' single-line vbscript comment

    В *.js можно  

    Код:
     
    // single-line jscript comment
    /* multi-line jscript
       comment */

    А знаки перенаправления - эт вообще в HTML
    <!-- html comment -->
    Этим гибридам в общем-то практического применения мало, их делают больше для развлечения, типа как тут матрицу писали. Или как
    Код:
    telnet gw.boston.ru

    Всего записей: 1673 | Зарегистр. 08-12-2004 | Отправлено: 01:32 04-04-2007
    euheny



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

    Цитата:
    Работа с текстом

    sbs2
    Старая досовская програмуля - цепляет кучу файлов (16bit support)
    Помойму не то.
     
    Я бы предпочёл сразу в HEX-е править.
     
    Короче продолжаю поиск.

    Всего записей: 3930 | Зарегистр. 22-11-2006 | Отправлено: 03:24 04-04-2007
    NIKZZZZ



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

    Цитата:
    Этим гибридам в общем-то практического применения мало

    Да в общем, согласен. Просто не нравится мне "Echo xxxx > file.xxx , особенно когда строк много.
    Я , например использовал следующее следующее:
     
    set x=rem уникальная строка
    %X% text
    %X% text
    ........
    type %0 | find %X% > file.tmp
    sbs2 "%X%" "" <file.tmp> file.xxx
     
     
     
     
     
     
     
     
     
     
    Добавлено:

    Цитата:
    Если hybrid.bat - то именно так не получится, многострочные комменты в vbscript не поддерживаются.

    Не обязательно коммент, можно просто многострочную команду, которая не мешает работе.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:25 04-04-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    день добрый
     
    подскажите пожалуста может ли gsar заменить строку такого вида

    Код:
     
    aaaa=????
     

    левая часть - известна, правая - нет
    заменить на aaaa=cccc  
     
    и еще  
    как лучше запускать cmd на логоне разных пользователей на одном ПК, чтобы менялась как раз эта строка
     
    можно положить пакет например в с:\1\1.cmd и положить ярлык на него в  
    "%ALLUSERSPROFILE%\Главное меню\Программы\Автозагрузка\Shotcut to 1.cmd.lnk"
     
    какие еще варианты лучше этого??
     
    спасибо

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 12:36 04-04-2007 | Исправлено: JohnRD, 12:46 04-04-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnRD
    sed.exe сможет

    Всего записей: 1673 | Зарегистр. 08-12-2004 | Отправлено: 12:49 04-04-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    igor_andreev
    А где учил VBS? Сам или на курсах каких? Если сам, то какую литературу посоветуешь?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:22 04-04-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    Дока по WSH

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:25 04-04-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru