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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    batniki
    Если речь идет о построчном выводе с сохранением форматирования (отступы, табуляция, пустые строки и т.д), то задача сложная и над ней бьется не одно поколение...   А так `type` и `more`.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:38 19-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    batniki
    А теперь внимательно и вдумчиво перечитай свой последний пост и попробуй его сформулировать заново - так, чтобы было понятно о чем ты говоришь. Например, фраза "
    Цитата:
    и чтоб каждая строчка из файла сохранялась на выводе, а то как-то  сумбурно получается текст в одну строку

    является для меня загадкой


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:40 19-11-2008
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir, извиняюсь за непонядки ,  имелось ввиду, как заметил  01MDM, сохранение форматирования текста.  Можно добавить пару строк с регулярными выражениями для findstr к подобию парсера ,
    сейчас очень мало времени, если получится сделать - опубликую.
    Спасибо вам за то, что помогаете

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 18:14 19-11-2008
    dj_Diesel



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

    Цитата:
    можно внутри защищаемого батника сделать вывод и запуск в файл 2-го батника, в нем сделать, что-то типа цикла проверки процессов системы с помощью WMIC, окно второго батника прятать (чтобы его нельзя было закрыть) с помощью специальной утилиты командной строки. Если второй батник обнаружит, что в процессах только один cmd.exe , то он ребутнет систему – как вариант реализации, хотелось бы тоже посмотреть на код

     
    как это осуществить
     
    код  

    Цитата:
    @echo off  
    setlocal  
    set /p pass="Please, enter password : "  
    if not "%pass%"="12345678" (  
    echo The password is wrong, rebooting....  
    shutdown -r -f  
    goto :EOF  
    )  
    ...  
    ...  
    ...  
    EXIT


    Всего записей: 1550 | Зарегистр. 09-09-2006 | Отправлено: 19:19 19-11-2008
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я всего лишь предложил способ реализации.
     
    Во втором батнике нужно делать, что-то типа

    Код:
    WMIC /OUTPUT:%TMP%\proc.txt PROCESS LIST BRIEF /FORMAT:HTABLE

    , потом с помощью findstr искать в %TMP%\proc.txt  

    Код:
    <td>cmd.exe<span style="height:1px;overflow-y:hidden">

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

    Код:
    ping localhost -w 1000 -n 2 >nul

    потом запаковать с помощью модифицированного SFX модуля, с примерно таким конфигом:

    Код:
    ;!@Install@!UTF-8!
    RunProgram="hidcon:\"2batnik.cmd\""
    InstallPath="%SystemRoot%\\TEMP"
    GUIMode="2"
    ;!@InstallEnd@!

    На выходе получится exe, чтобы его не вскрыли можно чем-нибудь криптануть.
    После запуска exe во временную папку распакуется содержимое, а 2batnik.cmd запустится в безоконном режиме, проверит на месте ли 1й батник (проверка пароля) в распакованной папке, запустит его и начнет цикл проверки процессов.
    Смотри в шапке ссылки на учебники, там все есть.  Помог бы, но времени мало

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 20:05 19-11-2008 | Исправлено: batniki, 20:09 19-11-2008
    qrock



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопросец!
    копирую файлы:
    xcopy c:\*.txt c:\temp /d:m-d-y
     
    /d:m-d-y - опция, при которой обрабатываются файлы с датой создания равной или поздней чем m-d-y. Как мне подставить в m-d-y текущую дату? Есть переменная %date%, но она возвращает dd.mm.yyy, как это привести в батнике к mm-dd-yyyy?

    Всего записей: 129 | Зарегистр. 19-01-2005 | Отправлено: 21:52 19-11-2008
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set "dd=%date:~0,2%"
    set "mm=%date:~3,2%"
    set "yy=%date:~-2%"
    xcopy c:\*.txt c:\temp /d:%mm%-%dd%-%yy%
     

     


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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Прошу простить, если данный вопрос уже звучал, но хотелось бы узнать, возможно через "батник" копировать файлы на винчестер из "флешек", подсоеденяемых к компу??

    Всего записей: 2 | Зарегистр. 20-11-2008 | Отправлено: 01:22 20-11-2008
    qrock



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

    Всего записей: 129 | Зарегистр. 19-01-2005 | Отправлено: 07:58 20-11-2008
    king_stiven

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

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

    Можно
    xcopy /?
    copy /?

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 08:54 20-11-2008
    Almasy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А так чтобы батник запускался при загрузке?

    Всего записей: 2 | Зарегистр. 20-11-2008 | Отправлено: 09:01 20-11-2008
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Almasy создай на флэшке файл  autorun.inf  в нем пропиши запуск твоего батника
    http://www.fssr.ru/hz.php?name=News&file=article&sid=7814
    http://ru.wikipedia.org/wiki/Autorun


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11955 | Зарегистр. 10-12-2003 | Отправлено: 09:31 20-11-2008 | Исправлено: ipmanyak, 09:32 20-11-2008
    StHunter84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    здравствуйте. Подскажите пожалуйста как сделать защиту от дурака, чтобы бат файл работал только  при наступлении времени от и до?
     
    я делаю так:  
     
    :time
    if %time:~0,5% == 03:00 goto copy
    sleep 10
    goto time
    :copy
     
    срабатывает только в 3:00
     
    нужно чтобы срабатывало от 3:00 и до 6:00  
     
    догадываюсь что нужно сделать проверку времени циклом типо FOR сравнивая его с текущщим временем, как реализовать?

    Всего записей: 4 | Зарегистр. 20-11-2008 | Отправлено: 11:06 20-11-2008
    potapich1



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделай двойное условие, вложенное друг в друга. В первом, если больше 3х, во врором - меньше 6ти

    Всего записей: 76 | Зарегистр. 23-05-2006 | Отправлено: 11:17 20-11-2008
    DrepsVLZ

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Подскажите как сделать чтобы при запуске 1.bat, запускался 2.bat через 1 минуту. Что-то похожее на таймер, через n-секунд запустить другой bat. Заранее спасибо!

    Всего записей: 2 | Зарегистр. 21-11-2008 | Отправлено: 01:35 21-11-2008
    StHunter84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    >> potapich1  
     
    разве можно в батниках писать if %time:~0,5% => 03:00  ???
     
    как поставить больше или равно или меньше или равно?
     
    наверно надо делать так:
     
    if %time:~0,5% == $a
     
    а $a=%time:~0,5%+1 мин  тока как правильно это записать?
     
    >>DrepsVLZ
     
    сделай таймером утилиту sleep из RESKIT
     
    sleep 60
    call 2.bat
     
     не катит?

    Всего записей: 4 | Зарегистр. 20-11-2008 | Отправлено: 10:35 21-11-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    StHunter84
    Запусти в комстроке
    if /?

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 12:24 21-11-2008
    slay1212

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет уважаемые. Есть вопрос . Написал батник  который чистит файлы в каталоге( и вложенных в него) (параметр 1) с расширением (пар2) оставляя столько то последних (параметр 3) по времени .
     Ну идет проверка не пустые ли параметры если пустые что0то ставится по умолчанию.  
      if "%~3" == ""  (  
      set kolv=7
      ) else (
      set kolv=0
      set kolv=%3
       
    так работает  
    если писать        ...
           set kolv="%~3"  
    то дальше в строке  
      for /F  " skip=!kolv!  " %%i in ('"dir %%d /b /S /O:-D^| find /i !rash! "') DO (
    дает ошибку а  
     
    for /F  " skip=%kolv%  " %%i in ('"dir %%d /b /S /O:-D^| find /i !rash! "') DO (  
    работает.  
      SETLOCAL ENABLEDELAYEDEXPANSION включен ( при выключенном тоже ошибку дает).  
     Ругается "skip="7"   те берется не число и символьное значение.  Почему параметр число передается как символ?
     PS Батник работает просто теоретический интерес!  
     
     И еще. Почему когда пишешь  
    for /F  " skip=%kolv%  " %%i in ('"dir %%d /b /S /O:-D^| find /i !rash! "') DO (    
     без ключа /S  %% i имеет вид <каталог запуска батника>.<имя найденного файла из другого каталога>. Ставишь /S -все ОК ?

    Всего записей: 336 | Зарегистр. 28-05-2008 | Отправлено: 14:38 21-11-2008 | Исправлено: slay1212, 14:45 21-11-2008
    StHunter84

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

    Всего записей: 4 | Зарегистр. 20-11-2008 | Отправлено: 16:37 21-11-2008
    Elroir



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

    Цитата:
    Ругается "skip="7"   те берется не число и символьное значение.  Почему параметр число передается как символ?

    Потому что ты его передаешь for-у, как символ (в кавычках). Параметр skip не принимает ничего, кроме числового значения после знака "=" (кстати - число 0 он тоже не принимает).  
     

    Цитата:
    Почему когда пишешь  for /F ... DO  
    без ключа /S  %% i имеет вид <каталог запуска батника>.<имя найденного файла из другого каталога>. Ставишь /S -все ОК ?

    Так как ты не написал, что делается после DO, я предполагаю, что ты используешь модофикатор %%~dpi или %%~fI. Команда dir /b без ключа /s выводит только имена файлов, без полного пути. В этом случае, for пытается вычленить из названия файла путь, у него не получается и, поэтому for использует текущую директорию для подстановки пути.
    Во втором случае, когда используется ключ /s - dir выводит имена файлов с полными путями и for берет пути оттуда.


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:36 21-11-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 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