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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах 6
(часть 1, часть 2, часть 3, часть 4, часть 5)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    cluster

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

    Цитата:
    что-то я такого в бат файлах не помню..

    Команда REG
     
    Manjago

    Цитата:
    Используй start  

    Гуд. Спасибо

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 14:52 08-05-2009
    kolyas



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    An4eus
     
    ДЛЯ УДАЛЕНИЯ ПАРАМЕТРА ИЗ командной строки  
    Для работы с реестром из командной строки предназначена утилита reg.exe, которая поставляется в составе Support Tools, на одном диске с дистрибутивом Windows. Вы можете скачать эту утилиту здесь. Ее размер 49 килобайт. Сохраните ее в папке, где установлена Windows. В этом случае, работать с ней можно будет без полного указания пути.
    Для получения подробных сведений о работе с утилитой reg.exe выполните в командной строке
     
    reg /?
     
    Чтобы удалить параметр в реестре выполните следующую команду:
     
    REG DELETE HKCU\Software\WindowsFAQ\Test /v Path
     
    Эта команда удалит параметр Path, который находится в разделе HKCU\Software\WindowsFAQ\Test. Обратите внимание на то, что при выполнении этой команды выдается запрос на подтверждение удаления. При работе команды в пакетном файле его исполнение может быть прервано для подтверждения пользователем удаления параметра. Чтобы подтверждение не выводилось используйте /f. Этот ключ отключает вывод подтверждения.
    При помощи reg.exe можно удалить сразу целый раздел, вместе со всеми параметрами и подразделами, находящимися в нем. Для этого используйте следующую команду:
     
    REG DELETE HKCU\Software\WindowsFAQ
     
    Результатом работы этой команды станет удаление раздела WindowsFAQ вместе со всеми подразделами и параметрами. Обратите внимание на то, что, как и в первом случае, выполнение команды останавливается на запросе подтверждения удаления раздела. Чтобы отключить этот запрос добавьте к команде /f, т.е. команда будет выглядеть следующим образом:
     
    REG DELETE HKCU\Software\WindowsFAQ /f
     
    Будьте внимательны с удалением параметров и разделов, по неосторожности можно удалить что-то нужное, особенно, когда отключено подтверждение удаления.
     
    Как изменить значение параметра в реестре из командной строки        Версия для печати
    Автор SavageNoName    
     
    Для работы с реестром из командной строки предназначена утилита reg.exe, которая поставляется в составе Support Tools, на одном диске с дистрибутивом Windows. Вы можете скачать эту утилиту здесь. Ее размер 49 килобайт. Сохраните ее в папке, где установлена Windows. В этом случае, работать с ней можно будет без полного указания пути.
    Для получения подробных сведений о работе с утилитой reg.exe выполните в командной строке
     
    reg /?
     
    Предположим, что в разделе HKCU\Software\WindowsFAQ\Test существует параметр с именем Path, типом данных REG_EXPAND_SZ и значением %systemroot%. Нам нужно изменить значение с %systemroot% на %temp%. Для этого используйте следующую команду:
     
    REG ADD HKCU\Software\WindowsFAQ\Test /v Path /t REG_EXPAND_SZ /d %"temp"%
     
    Таким образом, мы заменим значение параметра Path с одного на другое.
    Обратите внимание на то, что команда ожидает от пользователя подтверждения. Чтобы отключить это подтверждение добавьте в указанную выше команду /f
     
     
    вроде так

    Всего записей: 137 | Зарегистр. 19-03-2007 | Отправлено: 15:12 08-05-2009
    max200701

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

    Цитата:
    Здраствуйте уважаемые знатоки CMD ,есть одна проблема которую не могу осилить по причине не знания языка цмд(ну не програмист я )потому прошу помощи.  
    В консоле набираю команду Telnet ,получаю:Добро пожаловать в программу-клиент Microsoft Telnet,далее набираю команду: open 192.168.1.1 23 ,получаю assword: далее ввожу пароль получаю:                    
     Подробнее... [?]  
     
     
    далее вожу команду:24 ,получаем  
       Подробнее... [?]  
     
    далее ввожу команду:8 получаем    
    Copyright (c) 1994 - 2004 ZyXEL Communications Corp.  
    P660RU-T1>  
    далее комана:poe drop poe0  
    получаем смену ІР адреса  
    От как бы это всё автоматизировать?Заранее спасибо

    Мужыки может кто чё подскажет по проблемке

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 15:50 08-05-2009
    01MDM



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

    Цитата:
    т.е. например так  
    \\Server\bases\Дом на Y:\Дом
    \\Server\bases\Сад на Y:\Сад
     


    Код:
     
    @echo off
    setlocal
     
    set exec='reg query HKCU\Software\1C\1Cv7\7.7\Title ^^^| findstr "REG_.*"'
    for /f "tokens=*" %%i in (%exec%) do set "param=%%i" && call:set
    goto:eof
     
    :set
    set param=%param: =$%
    set param=%param:\\Server\bases=Y:%
     
    for /f "tokens=1-3" %%i in ("%param%") do (
        set name=%%i
        set type=%%j
        set data=%%k
    )
     
    reg add HKCU\Software\1C\1Cv7\7.7\Title /v "%name:$= %" /t %type% /d "%data:$= %" /f
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:09 08-05-2009
    anmiles



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть батник, который удаляет в папке все файлы старше 15 минут:

    Код:
    for /r "I:\" %%a in (*.*) do for /f "tokens=1,2" %%c in ("%%~ta") do call :test %%d "%%a"
    goto :eof
    :test
    set f_time=%1
    set /a t6 = %f_time:~0,1% * 600 + %f_time:~1,1% * 60 + %f_time:~3,1% * 10 + %f_time:~4,1%
    set /a t3 = %time:~0,1% * 600 + %time:~1,1% * 60 + %time:~3,1% * 10 + %time:~4,1% - 15
    if %t6% LSS %t3% del %2
    goto :eof
     

     
    Всё замечательно, только одно НО:
    он удаляет по дате ИЗМЕНЕНИЯ, а надо по дате СОЗДАНИЯ.
    Есть ли у кого какие мысли по этому поводу?
    Есть ли альтернатива ключику %%~t ?

    Всего записей: 19 | Зарегистр. 19-11-2008 | Отправлено: 13:49 09-05-2009 | Исправлено: anmiles, 14:20 09-05-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anmiles если обход подкаталогов не нужен то как-то так

    Код:
    @echo off
     
    for /f "skip=4 delims=" %%a in ('dir /a-d /4 /tc /-c  t:\*.*') do call :test %%a
    goto :eof
     
    :test
    set string=%*
    if not "%string:~14,1%"==":" goto :eof  
     
    set f_time=%string:~12,5%
    set f_name=%string:~36%
     
    set /a t6 = %f_time:~0,1% * 600 + %f_time:~1,1% * 60 + %f_time:~3,1% * 10 + %f_time:~4,1%
    set /a t3 = %time:~0,1% * 600 + %time:~1,1% * 60 + %time:~3,1% * 10 + %time:~4,1% - 15
    if %t6% LSS %t3% echo del %f_name%
    goto :eof  

     
    а если нужен - его надо снаружи прикрутить

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:21 09-05-2009 | Исправлено: wolf0425, 14:49 09-05-2009
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет , так чё никто ничего так и не подскажет по моей проблемке?

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 20:45 09-05-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701 поискать слово telnet по версии для печати - самостоятельно никак нельзя?
    Не раз писалось, что не поддерживает стандартный telnet переадресацию, надо пользоваться сторонними утилитами. типа этой  
    http://www.petri.co.il/software/tst10.zip
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:24 09-05-2009
    Maza_Faka



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

    Цитата:
    удаляет в папке все файлы старше 15 минут

    Можно с помощью VBS:

    Код:
     
    Dim objFSO, objFolder, colFiles, objFile, sDir
     
    sDir = "c:\"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(sDir)
    Set colFiles = objFolder.Files
     
    For Each objFile In colFiles
        If DateDiff("n", objFile.DateCreated, Now) > 15 Then objFSO.DeleteFile(objFile, True)
    Next
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:40 10-05-2009
    Alex1985

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    есть папка bases. в ней папки base001, base002, ... и файлы с различными именами.
    всё это надо аккуратненько завернуть в отдельные архивы, папку base001 в архив base001 и тд (то есть папки должны упаковываться в архивы с такими же именами) для файлов же имена будут набираться ручками.
    команда dir /b/o:g > c:\run.cmd даст мне список папок и файлов, а sbs2.com приведёт этот список к виду

    Код:
    7z a -mx backup\.7z C:\bases\base001
    7z a -mx backup\.7z C:\bases\base002
    ...
    7z a -mx backup\.7z C:\bases\file001.sql
    7z a -mx backup\.7z C:\bases\file002.sql
    ...
     

    можно ли сделать так, что-бы:
    1) после путей до папок дописывался \* (то есть, 7z a -mx backup\.7z C:\bases\base001\*)
    2) между backup\ и .7z вставлялось имя архивируемой папки
    ?

    Всего записей: 814 | Зарегистр. 07-05-2004 | Отправлено: 00:00 11-05-2009 | Исправлено: Alex1985, 00:12 11-05-2009
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425  
    Спасибо конечно за помощь,но я уже давно знаю об этой утилите,вот токо чёт у меня  не получается с её помосчью сделать реконект

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 00:37 11-05-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    А можно сделать так, что бы:

    Код:
    действие
    Если воскресение то...
     

    планеровщик задач это не то

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 09:42 11-05-2009
    01MDM



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

    Цитата:
    действие
    Если воскресение то...

     

    Код:
     
    @echo off
    for /f %%i in ('wmic path win32_LocalTime get DayOfWeek') do (
         if %%i==0 echo Today is Sunday, doing something
    )
     

     

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

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Спасибо!
    А можете код расшифровать, что бы я не просто копипаст сделал?

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 13:22 11-05-2009 | Исправлено: anachrom, 13:38 11-05-2009
    01MDM



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

    Цитата:
    А можете код расшифровать, что бы я не просто копипаст сделал?

     
    Здесь просто с помощью цикла for берем результат выполнения команды оболочки wmi wmic.exe и при помощи оператора условия if сравниваем полученный результат. В данном случае возвращаются значения от 0 до 7 (0-вск ... 7-суб)
     
    Подробнее:  
    for /?  
    if /?  
    wmic /?  
    или в сети.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:03 11-05-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Я новичек, но мне очень интересно покопаться и поразбираться. Большое спасибо 01MDM
    Смысл того, что я хочу в следующем:
    Каждый день (пн-вс) делается копирование нужных мне файлов. В воскресение после очередного копирования убиваются файлы в папочке с прошлой неделей (LastWeek) в которую перемещается все что скопировалось за эту неделю.
    В принципе это обычный BackUp получаетя, который хранит инфу двух недель

    Код:
    @echo off  
    md %Date%
    cd %Date%
    xcopy "Путь" /s /f /c > backup.log
    cd..
    for /f %%i in ('wmic path win32_LocalTime get DayOfWeek') do (  
         if %%i==0 del /q "LastWeek"
    ...
    )
     

    и вот тут я в ступоре. Как мне переместить все что насоздовалось в папку LastWeek, да и del /q не совсем подходит, очищается только файлы в корневой папке, а дальше ни ни.
    Подскажите пожалуйста. Очень хочется.

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 14:53 11-05-2009
    king_stiven

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

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

    Смотри команду move. Как смотреть справку смотри в шапке.
    Цитата:
    да и del /q не совсем подходит, очищается только файлы в корневой папке, а дальше ни ни
    Тоесть удалитьвсё в папке без удаления папки?

    Код:
    PushD папка
    if not errorlevel 1 RD /s /q .
    PopD


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:53 11-05-2009
    anachrom

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

    Цитата:
    Тоесть удалитьвсё в папке без удаления папки?  

    Чуть чуть нет, удаляются файлы в папке LastWeek, а папки которые в ней и вайлы в них остаются. Т.е. если в папке LastWeek есть файл temp.txt и папка temp. Так вот файл temp.txt стирается а папка temp остается со всем содержимым. А надо, что бы папка LastWeek была полостью очищенна.
    С move вроде разобрался, rd PushD и PopD тоже, вот errorlevel 1  непойму.

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 16:23 11-05-2009
    king_stiven

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

    Цитата:
    А надо, что бы папка LastWeek была полостью очищенна.  

    Этот пример как раз самое то.
    Цитата:
    вот errorlevel 1  непойму

    Защита, если по какой либо причине скрипт не найдёт Папку, он удалит всё (!) в текущей директории.
     
    Добавлено:
    Нет ли у кого подробной справочки по wget на русском?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 21:22 11-05-2009
    Ortios



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

    Цитата:
    Нет ли у кого подробной справочки по wget на русском?

    Набери в гугле "насос для интернета".

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 21:55 11-05-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru