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

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

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

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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    wolf0425



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

    Цитата:
    про ХР упоминание
    ппц залет - нашел в пути cmd от XP
    удалил - XP исчезло и работать тоже перестало. вечером буду думать - сейчас до той семерки все же непросто добираться...
     
    Что-то я не могу сообразить как через wmi получить заголовок окна у процесса, может кто подскажет?
     
    а тупо по имени батника вторая копия блокируется так:

    Код:
    @echo off
    wmic process where (name='cmd.exe') get commandline | find /i "\%~nx0" | more +1 | find /i "%~nx0" && exit 1
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:00 25-02-2011 | Исправлено: wolf0425, 17:24 25-02-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    т.е. имя екзешника может быть свое?

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 16:05 25-02-2011
    wolf0425



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

    Цитата:
    т.е. имя екзешника может быть свое?
    да, тут проверяется только имя запакованного батника - его делать уникальным вроде же нет проблем и с именем экзешника оно пересекаться не обязано.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:16 25-02-2011 | Исправлено: wolf0425, 17:23 25-02-2011
    Misha1989



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Цитата:
    да, тут проверяется только имя запакованного батника

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

    Всего записей: 359 | Зарегистр. 22-03-2010 | Отправлено: 19:38 25-02-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Misha1989
    не знаю, как другие, а Bat_To_Exe_Converter.exe пакует батник с оригинальным именем

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 19:41 25-02-2011
    Misha1989



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    А вы смотрели после запуска где находится этот батник и с каким именем?
    Я пользовался двумя упаковщиками батников, они пакуют с одним именем, а при распаковке каждый раз имя разное, набор цифр обычно и перед ними одна буква.

    Всего записей: 359 | Зарегистр. 22-03-2010 | Отправлено: 19:46 25-02-2011 | Исправлено: Misha1989, 19:46 25-02-2011
    Free_Soft



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

    Цитата:
    после запуска где находится этот батник и с каким именем

    Находится в папке с рандомным именем со своим оригинальным названием

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 19:51 25-02-2011
    01MDM



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

    Код:
     
    @echo off
    if exist "%temp%\flag" (goto:eof) else (cd.>"%temp%\flag")
     
    echo this is batch
    pause
     
    del "%temp%\flag"
     


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:13 25-02-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    да я по началу так и делал, но следить не хочется. Вариант через wmic отлично работает, только что проверил. Но это справедливо, только если упаковщик не меняет имя батника.

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 20:17 25-02-2011
    Misha1989



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Цитата:
    флаг в виде файла

    Я ему уже это предлагал, но если батник вылетит с ошибкой или комп перезагрузится во время выполнения батника - батник в автомате больше никогда не стартанёт.

    Всего записей: 359 | Зарегистр. 22-03-2010 | Отправлено: 21:48 25-02-2011 | Исправлено: Misha1989, 21:49 25-02-2011
    Free_Soft



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

    Код:
    wmic process where (name='cmd.exe') get commandline | find /i /c "%~nx0"

    показывает число запущенных процессов с именем батника. Если запущен 1 показывает соответственно 1. Но так

    Код:
    for /f "Tokens=1" %%a in ('wmic process where ^(name^=^'cmd.exe^'^) get commandline ^| find /i /c "%~nx0"') do echo.%%a

    показывает это же число но на единицу больше... куда копать?

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 22:30 25-02-2011
    HW2yS

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

    Всего записей: 87 | Зарегистр. 21-11-2006 | Отправлено: 00:14 26-02-2011 | Исправлено: HW2yS, 00:24 26-02-2011
    Misha1989



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HW2yS
    Цитата:
    как сделать папку скрытой (hiden) из командной строки  

    attrib +h "путь к папке"

    Всего записей: 359 | Зарегистр. 22-03-2010 | Отправлено: 00:46 26-02-2011 | Исправлено: Misha1989, 00:47 26-02-2011
    wolf0425



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

    Цитата:
    показывает это же число но на единицу больше... куда копать?
    это вообще-то фича, for порождает запуск ещё одного cmd - его-то ты и посчитал.
    чем тебе финт c more +1 не понравился ?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:25 26-02-2011 | Исправлено: wolf0425, 01:27 26-02-2011
    Free_Soft



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

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 07:02 26-02-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft кстати, ты зачем сократил \ в  
    get commandline | find /i "\%~nx0" | ???  

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:46 26-02-2011 | Исправлено: wolf0425, 08:46 26-02-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну так find /c и так число процессов показывает. Типа если больше 1, до свиданья. Или эта конструкция чего то не учитывает?

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 09:34 26-02-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Softне, я о том зачем ты в find вместо "\%~nx0" написал "%~nx0" - не боишься что батник 123.cmd увидит 0123.cmd и ошибочно его посчитает?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:05 26-02-2011 | Исправлено: wolf0425, 12:07 26-02-2011
    king_stiven

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

    Цитата:
    как скопировать папку  
    с вложенными файлами и папками  

    скопировать папку 1 в папку 2 с файлами подкаталогами:  
    xcopy 1 2/1 /i /S /E /H /Y /D /R

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:07 26-02-2011
    Free_Soft



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

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 12:35 26-02-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru