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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    king_stiven

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

    Цитата:
    Maza Faka


    Цитата:
    Elroir

     
    Решил так

    Код:
    for %%b in ( ) do (
      for  %%c in ( ) do (
          call :begin "C:\split\fgh\fgjkl\"
           
    :begin
    cd /d %1
    set /a count+=1
    if /i "%~d1\" neq "%cd%" (
        cd ..
        goto begin
    )

     
     
    Если что то некорректно, поправьте.
    Но если в имени "C:\split\fgh%\fgjkl%\" есть %, как правильно передать "C:\split\fgh%\fgjkl%\" на :begin? setlocal enabledelayedexpansion нежелательно использовать.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:03 15-08-2007 | Исправлено: king_stiven, 09:20 15-08-2007
    dardreams



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

    Цитата:
    Коткретно надо убивать процесс 1С

    Помоему если убить 1с будут сбои, надо её аккуратно закрывать.

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 09:15 15-08-2007
    NskRonin



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dardreams
    Если этот процес висит уже часов 5 - причем в отключеном пользователе - то, по моему, максимум что случиться не сохраняться данные.

    Всего записей: 1608 | Зарегистр. 10-05-2007 | Отправлено: 09:19 15-08-2007
    dardreams



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

     
    Добавлено:

    Цитата:
    максимум что случиться не сохраняться данные.

    Разве не сохранненые данные это хорошо ?

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 09:19 15-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dardreams
     
    Если база DBF 7.7 - то худшее - это переиндексация, которую можно выполнить автоматом из батника тут же ночью
    В остальных случаях - проблем не будет
    А тот кто не сохранил данные тот сам себе злобный буратино

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:44 15-08-2007
    mbku

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пример батника выводящего кто и что читает на моем  компьютере.
     
    chcp 1251
    for /F "usebackq tokens=1,2,3,4,5,6,7 delims= " %%A IN (`"net file | find ":" | find ".""`) DO call :session %%A %%B %%C %%D %%E %%F %%G
     
    :session  
    set file=%2
    set user_file=%3
    echo %user_file% %file% >>1.txt
     
    Батник работает нормально, если в именах файлов (или путей) нет пробелов, нет русских букв “а” и т.п.
     
    Конечно можно извратится типа если %4 не равно 0, то проверить равно ли %5 0 и т.д.. и устаналивать например set file=%2%3%4%, set user_file=%5 и т.п.
     
    Но может фишка в чем-то другом?  Т.е. можно ли сделать, чтоб батник оставался таким же коротким?

    Всего записей: 26 | Зарегистр. 03-08-2007 | Отправлено: 09:48 15-08-2007
    dardreams



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

    Код:
     
    for /f %a in ('systeminfo ^|find "System Up Time"') do message %a
     

    как сделать чтобы эта строчка выводилась полностью, онав выводит только одно слово до пробела.
     
    Добавлено:
    вместо message можно поставить echo это просто у меня hs_message
     
    Добавлено:
    нашел tokens

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 09:59 15-08-2007
    Maza Faka



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

    Цитата:
    for /f "delims=" %a in ('systeminfo ^|find "System Up Time"') do message %a

     
     
    Добавлено:

    Цитата:
    Но если в имени "C:\split\fgh%\fgjkl%\" есть %, как правильно передать "C:\split\fgh%\fgjkl%\" на :begin?

    Никак, cmd посчитает их за начало переменной.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:04 15-08-2007 | Исправлено: Maza Faka, 10:05 15-08-2007
    king_stiven

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

    Код:
    for %%i in ( ) do (  
      for %%e in ( ) do (  
        set "counter=-1"  
        set "p=E:\split\&!<>fgh\fgjkl\"  
        call :count  
        ..  
    ))  
    goto :EOF  
     
    :count
    cd /d "%p%"
    for %%c in ("%p%") do set letter=%%~dc\
    :begin
    set /a sum+=1
    if /i "%letter%" neq "%cd%" (
        cd ..
        goto begin
    )

     
    Но может быстрее и корректнее было встроить счётчик по примеру Elroir?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:16 15-08-2007 | Исправлено: king_stiven, 10:32 15-08-2007
    dardreams



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

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 10:43 15-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dardreams
    См. возможности утилиты sc.exe
    там есть управление статусом загрузки

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:49 15-08-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Службу я имел ввиду сервис обычно messenger отключен по умолчанию, вот хотелось бы не лазить в services.msc а сделать через консоль

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 10:49 15-08-2007
    dominiksus



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    зделал такой БАТ:

    Код:
    @ECHO OFF
    sleep -t 10
    for /f "tokens=9 delims== " %%i in ('ping google.de ^| find "TTL"') do (
        set PingGood=%%i
        )
    if %PingGood%==TTL (
        goto TimeUpdate
        ) else (
        GOTO:EOF
        )
    :TimeUpdate
    net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
    w32tm /resync

    (sleep - это прога специально для ожидания)
    так вот, запускаю руками, появляется черное окно (cmd), висит без всяких надписей внутри, только курсор там блымает и все, через какое-то время (очевидно 10 сек. ожидания) закывается само. время не синхронизируется.
    где ошибка?

    Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 10:59 15-08-2007
    dardreams



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

    Цитата:
    См. возможности утилиты sc.exe

    Незнал про такую, спасибо. только вот то что я хотел я там не нашел, там есть запуск, установка, приотсановка, а страт тип там не было

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 11:04 15-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dardreams
    Код:
     
    sc config messenger start= demand
    Net start messenger
    ....
    net stop messenger
    sc config messenger start= disabled

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:11 15-08-2007
    dardreams



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

    Цитата:
    sc config messenger start=_demand

     
    спасибо. еще раз !!!
     
    Добавлено:
    А есть чтонибудь чтобы можно было запуск приложения на удаленом компе, что то вроде psexec только стандартное ?

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 11:16 15-08-2007
    SPV_Ed



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток.
    Хочу средствами cmd реализовать следуюшее: в директории есть файлы с определенным расширением, нужно вывести на консоль список этих файлов в виде "номер файла: имя файла" и при вводе номера нужного файла передать этот файл параметром нужной программе. Файлы вывел, ввод нужного работает, но теперь не могу понять как по введенному номеру определить нужный файл. В языках более высокого уровня это решилось бы простенькой конструкцией case, но как средствами cmd?

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set count=0
    for /f "tokens=1 delims=." %%i in ('dir /a:-d /b *.mst') do (
       set /a count+=1
       echo !count!^: %%i
       )
    set /p choice=": "

    Всего записей: 474 | Зарегистр. 20-06-2006 | Отправлено: 12:18 15-08-2007
    KapralBel



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

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

    Есть

    Код:
    sc \\Srv1 config messenger start= demand

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:49 15-08-2007
    igor_andreev

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

    Цитата:
    Хочу средствами cmd реализовать следуюшее: в директории есть файлы с определенным расширением, нужно вывести на консоль список этих файлов в виде "номер файла: имя файла" и при вводе номера нужного файла передать этот файл параметром нужной программе.

    тынц
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 12:50 15-08-2007
    01MDM



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

    Код:
     
    @ECHO OFF
    sleep -t 10
    ping google.com >nul
    if %errorlevel%==1 (goto:eof) else (w32tm /resync)
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:28 15-08-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru