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

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    cluster
    psexec
    http://www.microsoft.com/technet/sysinternals/FileAndDisk/PsTools.mspx

    я вот только не понял sysinternals продался MS?

    Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 11:00 22-11-2006
    topic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    И всё таки , как тут  
     
    @Echo Off
    Set PATH_POISK="D:\Temp\erer\"
     
    set T_Date=%DATE:~3%
     
    IF %T_DATE:~0,1%==0 (
      SET /A T_DAY=%T_DATE:~1,1%) else (
      SET /A T_DAY=%T_DATE:~0,2%)
     
    IF %T_DATE:~3,1%==0 (
       SET /A T_MONTH=%T_DATE:~4,1%) else (
       SET /A T_MONTH=%T_DATE:~3,2%)
     
    SET /A T_YEAR=%T_DATE:~8,2%
     
    SET T_DAY=%T_DAY%.%T_MONTH%.0%T_YEAR%
     
    FOR %%a IN (%PATH_POISK%\*.*) DO @Call :MY_DEL "%%a" %%~ta
    GoTo :EOF
     
    :MY_DEL
    SET F_DATE=%2
    echo 111_%F_DATE%
    if %F_DATE%==%T_DAY% (echo есть файл %1
    ) ELSE (
    echo нет файла
    )
    GoTo :EOF
     
    Заставить только один раз сообщить "нет файла" , а не на каждый файл в папке.
    НЕ ПОЛУЧАЕТСЯ , можно конечно только с сообщением что он есть единственный, а когда нет то молчок, но хотеось бы и в случае отсутствие что то видеть.

    Всего записей: 25 | Зарегистр. 31-01-2006 | Отправлено: 11:32 22-11-2006
    uZver



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    topic
    введи вместо  "echo нет файла" присвоение переменной типа set notfail=1,  
    а перед " GoTo :EOF " типа проверку  

    Код:
    if notfail EQL 1 echo нет файла

     

    Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 12:14 22-11-2006 | Исправлено: uZver, 12:15 22-11-2006
    cluster

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

    Цитата:
    psexec

    чё-та никак не могу добиться результата ):

    Код:
    psexec \\w06112101 cmd

    вроде не ругается, но и на удалённой машине ничего не происходит.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 13:02 22-11-2006
    topic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    uZver
     
    Поменял
     
    :MY_DEL
    SET F_DATE=%2
    if %F_DATE%==%T_DAY% (echo  есть файл %1
    ) ELSE (
    set /A notfail=1
    )
    if notfail=1 echo  нет файла
    GoTo :EOF
     
     
    Непредвиденное появление: echo.
     
    ???
    А на if notfail EQL 1 echo нет файла
     
    Непредвиденное появление: EQL.    
    ???

    Всего записей: 25 | Зарегистр. 31-01-2006 | Отправлено: 13:10 22-11-2006
    Charm1

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    topic
    У тебя формат даты
    Date format is "Пн 20.11.2006"
    а у меня
    Date format is "21.11.2006"
    в этом и разница, у меня оба варианта рубят все
    Без Elroir похоже мне не справиться

    Всего записей: 9 | Зарегистр. 17-11-2006 | Отправлено: 13:13 22-11-2006
    123Maximus123



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый  
    столкнулся с такой проблемой вроде тривиальна выключение компьютера по сети  
    может кто подскажет как правильно это реализовать  
    система:  Windows 2003  
    тип сети : Домен
    задача: при помощи bat иль скрипта  
    выключить 3 компа по сети с задержкой в 1 минуту.
    т.е. выключается 1-ый комп по сети таймер начинает отсчет в 60 секунд
    потом 2 комп по сети отсчет в 60 секунд и локальный комп выключается

    Всего записей: 247 | Зарегистр. 21-03-2006 | Отправлено: 13:24 22-11-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    123Maximus123
    ShutDown /?

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:32 22-11-2006
    uZver



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    topic
    if %notfail%==1 @echo нет файла  
    предыдущие предложения на работоспобность не проверял , это работает  
    cluster
    сам ее не пользовал
    тут - написано что  
     -i  - разрешить удаленной программе взаимодействовать с рабочим столом на удаленном компьютере. Если ключ не задан, то выполнение удаленной программы происходит незаметно для пользователя удаленного компьютера.
     
    и тут про нее много говорилось.

    Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 13:35 22-11-2006 | Исправлено: uZver, 14:35 22-11-2006
    topic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    Помнится когда то ты давал решение, если не трудно повторить
    Задача:
    есть текстовые файлы, надо из них выкинуть в другой файл строки в которых есть известного типа текст и желательно название файла откуда эта строка
     
     
     
    Добавлено:
    uZver
    пошло, но осталась проблемма с кучей сообщений
     
     
    нет файла
    нет файла
    нет файла
    нет файла
    нет файла
    нет файла
    нет файла
    нет файла
    нет файла
    нет файла
     
    И так на все файлы что от другой даты

    Всего записей: 25 | Зарегистр. 31-01-2006 | Отправлено: 15:19 22-11-2006
    KapralBel



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

    Код:
    find /i "Echo Off" *.cmd >Res

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:47 22-11-2006
    topic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
     
    не понял зачем, но
     
    Не найден файл: *.cmd
     
    Добавлено:
    Если
    @Echo Off
    Set PATH_POISK="D:\Temp\erer\"
     
    set T_Date=%DATE:~3%
     
    IF %T_DATE:~0,1%==0 (
      SET /A T_DAY=%T_DATE:~1,1%) else (
      SET /A T_DAY=%T_DATE:~0,2%)
     
    IF %T_DATE:~3,1%==0 (
       SET /A T_MONTH=%T_DATE:~4,1%) else (
       SET /A T_MONTH=%T_DATE:~3,2%)
     
    SET /A T_YEAR=%T_DATE:~8,2%
     
    SET T_DAY=%T_DAY%.%T_MONTH%.0%T_YEAR%
    SET /A notfail=0
     
    FOR %%a IN (%PATH_POISK%\*.*) DO @Call :MY_DEL "%%a" %%~ta
    if %notfail%==1 @echo нет файла
    GoTo :EOF
     
    :MY_DEL
    SET F_DATE=%2
    if %F_DATE%==%T_DAY% (echo есть файл %1
    ) ELSE (
    set /A notfail=1
    )
     
    то
    есть файл "D:\Temp\erer\\BM.txt"
    нет файла

    Всего записей: 25 | Зарегистр. 31-01-2006 | Отправлено: 15:52 22-11-2006
    uZver



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

    Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 16:09 22-11-2006
    topic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    uZver
    Батник смотрит в дирректорию, перебирает файлы и ищет с сегодняшней датой, если находит - говорит есть такой, если нет такого, то должен дать ОДНО собщение что нет пока такого. Сейчас в варианте том что выше кидает кучу сообщений  
    "нет файла  
    нет файла  
    нет файла  
    нет файла  
    нет файла  
    нет файла  
    нет файла  
    нет файла  
    нет файла  
    нет файла "
     
    И так на все файлы что от другой даты
    В последнем варианте , если нет файла, то одно сообщение, а если есть то
    "есть файл "D:\Temp\erer\\BM.txt"  
    нет файла"

    Всего записей: 25 | Зарегистр. 31-01-2006 | Отправлено: 16:22 22-11-2006
    KapralBel



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

    Цитата:
    find /i "Echo Off" *.cmd >Res

    искать строку Echo Off в файлах *.cmd и сбросить результат в файл Res
    Вместо моих значений подставь свои

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:42 22-11-2006
    uZver



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

    Цитата:
    В последнем варианте , если нет файла, то одно сообщение, а если есть то
    "есть файл "D:\Temp\erer\\BM.txt"  
    нет файла"

    аааа, млин во как надо флаг надо поднимать если нашли, т.е.  
     if %F_DATE%==%T_DAY% (
    echo есть файл %1  
    set notfail=1
    ) ELSE ( вот else не нужен )
    а  условие  
     if %notfail%==0 @echo нет файла  

    Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 17:09 22-11-2006 | Исправлено: uZver, 17:11 22-11-2006
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как скопировать файл в директорию с подпапками имена которых неизвестны, причём скопировать нужно во все существующие папки и вложенные папки? Скажем файл system.cfg в D:\Setup\"несколько подпапок с неизвестными именами"

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:14 22-11-2006
    uZver



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

    Maza Faka
    а зачем если не секрет?
    а вот такое же уже однажды видел на ПК с трояном? забавно кстати работал

     
     

    Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 17:34 22-11-2006
    Desenix

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    topic
    до цикла
    set res=нет файла
     
    в цикле вместо echo
    .............  set res=есть файл
     
    в конце
    echo %res% %1

    Всего записей: 10 | Зарегистр. 20-11-2006 | Отправлено: 17:39 22-11-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    FOR /?
    см. FOR /R ...

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:01 22-11-2006
       

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