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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    lorents



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

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:28 31-07-2010
    01MDM



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

    Код:
     
    copy folder1\* folder2
    xcopy folder1 folder2\
     


    Код:
     
    copy /?
    xcopy /?
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:03 31-07-2010
    lorents



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

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 11:09 31-07-2010 | Исправлено: lorents, 11:27 01-08-2010
    Mark_Titov



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

    Код:
    tasklist | find /i "cmd.exe" && GOTO :no_start
    goto :start

     
    Но при этом раскладе команды дальше не обрабатываются при одиночном запуске...
    Я так понимаю что он находит свой процесс и идет сразу на no_start.
    Нужно сделать что бы он реагировал на ДВОЙНОЙ запуск cmd.exe, как это сделать?
     
    Заранее благодарю...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 15:06 31-07-2010 | Исправлено: Mark_Titov, 15:59 31-07-2010
    Xpomep

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

    Цитата:
    "%USERPROFILE%\Start Menu\Programs\Startup\"

    параметр Userprofile можно изменить на "All Users" - ? чтоб файл добавлялся ко всем пользователям или так не получится ?
    И что писать в .reg файле чтоб конкретно мой Батник добавлялся в автозапуск ?
    Сейчас я создал .reg файл теперь мне нужно указать путь к батнику , подскажи как сделать это в рег файле плиз

    Всего записей: 17 | Зарегистр. 08-07-2010 | Отправлено: 15:37 31-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Xpomep
    А как на счет %allusersprofile%? Это и есть All Users.
    NIKZZZZ
    О! Спасибо! Теперь не нужно париться с перебором букв дисков
    *************************
    Тут код программы на С#, которую я привожу для понимания того, откуда в последующих батниках берется app.exe (это название программы, что за тагом more). А вот батники
    Да, оба сценария пока не оптимизированы, но это не столь важно: просто здесь представлена идея того, как английскую локаль перегнать в русскую.
    Те же, кто не поленится и скомпилирует код app.exe, тот увидит, что дата выводится в формате DayOfWeek, Month Day, Year, а время - h:mm:ss AM/PM. Вот я и подумал, почему бы русскую локаль средствами батника не вогнать в английскую (по поводу того, нафиг это надо, пишите в личку).
    Время и дата

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 15:58 31-07-2010 | Исправлено: ComradG, 16:18 31-07-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Спасибо за подсказку, пишу так -
     

    Код:
    tasklist /fi "windowtitle eq cmd.exe" 2>nul && GOTO :no_start 1>nul 2>nul
    goto :start

     
    Пишет что нет таких процессов...
    И по идее он должен на старт идти, но идет на :no_start минуя команду goto :start, почему?

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 16:25 31-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    Извини, но я сегодня торможу сильно. Не windowtitle, а tasklist /fi "imagename eq cmd.exe". Вот.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:48 31-07-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Спасибо.
     
    Немного переделал -  
     

    Код:
    tasklist /fi "imagename eq cmd.exe" 1>nul 2>nul && exit 1>nul 2>nul

     
    Но все равно при первом запуске идет на выход...
    Другими словами он должен только в случае обнаружения процесса cmd.exe идти на выход, а он ПРИ ПЕРВОМ ЗАПУСКЕ на выход идет!
    Видимо это как я уже говорил проблема обнаружения своего процесса?

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 16:55 31-07-2010 | Исправлено: Mark_Titov, 16:59 31-07-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    Батник будет в любом случае обнаруживать процесс cmd.exe, т.к. он сам его создает.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:18 31-07-2010
    Mark_Titov



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

    Цитата:
    Mark_Titov  
    Батник будет в любом случае обнаруживать процесс cmd.exe, т.к. он сам его создает.

     
    Вот и я про то же, а как решить эту проблему?
    Можно как-нибудь прописать что бы он при обнаружении одного процесса cmd.exe запускался, а при двух - на выход шел?

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 17:20 31-07-2010
    Xpomep

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

    Цитата:
    %%allusersprofile%\Start Menu\Programs\Startup\

     
    у меня получается в батнике так , ну и + команда на ребут  , правильно ?

    Всего записей: 17 | Зарегистр. 08-07-2010 | Отправлено: 17:26 31-07-2010
    01MDM



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

    Цитата:
    Можно как-нибудь прописать что бы он при обнаружении одного процесса cmd.exe запускался, а при двух - на выход шел?

    Попробуй для батника задать заголовок:

    Код:
     
    @echo off
     
    title mytitle
    tasklist /fi "windowtitle ne mytitle" /fi "imagename eq cmd.exe"  | findstr [0-9] && exit
    pause
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:26 31-07-2010 | Исправлено: 01MDM, 17:30 31-07-2010
    wolf0425



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

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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:38 31-07-2010 | Исправлено: wolf0425, 18:21 31-07-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    01MDM
    wolf0425
    Спасибо огромное ребята! Очень выручили!
    Благодарю! Вроде все работает...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 18:01 31-07-2010 | Исправлено: Mark_Titov, 18:02 31-07-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov там только это... нестрогая проверка. В смысле при имени этого батника _start.cmd проверка выкинет и если обнаружится запущенный ранее firts_start.cmd  
    и случаи ручного запуска из консоли - не ловятся никак.
    но мне просто незачем было писать более тщательно - главное было двойного запуска конкретного батника избежать, код упрощался под задачу.
    как полечить первое - наверно можно подумать, в принципе даже подправил выше (но не проверял особо), лечить второе особого смысла не вижу.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:10 31-07-2010 | Исправлено: wolf0425, 18:23 31-07-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Понятно, того что ты дал в полне хватает...
    Спасибо.
     
    Может подскажешь как можно на удаленном компе эти команды выполнить?
     
    netstat
    ipconfig
    powercfg /QUERY

     
    Так же как эту -
     

    Код:
    tasklist -s \\server

     
    Никак что-то не получается...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 20:18 31-07-2010
    wolf0425



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

    Цитата:
    Может подскажешь как можно на удаленном компе эти команды выполнить?
    выполнять чего-то-там на удаленном компе умеет psexec.exe, ищешь в шапке, яндексе или у мелкомягких.
     

    Цитата:
    Так же как эту - tasklist -s \\server  
    эта команда выполняется на локальном компе, а не на удаленном.  
    она только умеет спрашивать указанный удаленный комп перед тем как тебе что-то написать.
    И если хватает прав - исправно печатает, непонятно что у тебя за проблемы с ней.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:47 31-07-2010 | Исправлено: wolf0425, 20:49 31-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Описание psexec на русском и ссылка на загрузку.
    wolf0425
    Совсем ни во что не въезжаю. Можно ли как-то упростить мои вычисления постом выше дня недели? А то я совсем осовел (толко совет, решение не надо).

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 20:56 31-07-2010 | Исправлено: ComradG, 21:00 31-07-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Цитата:
    Можно ли как-то упростить мои вычисления постом выше дня недели?  
    у тебя с русским начинаются проблемы - случайная перестановка слов, в результате бред.
    да без понятия можно ли упростить, куда уж проще двух строк.
    ты хоть потестировал на примерах - правильно считает то?
     
    А то, что тебя за код подобный for /f "tokens=1,2,3 delims=." %%i in ('date /t')  
    в свое время обоснованно отчитывали - ты так и не осознал, по факту...
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 22:10 31-07-2010
       

    Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru