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

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А подскажите следующую проблемку / задачку:
    существует два диска, скажем M: и N:
    Нужно чтобы при запуске батника происходило сравнение содержимого дисков и при наличии новых файлов на M: они заменялись на N:
    (в условие также входят что на дисках есть и папки и подпапки)

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



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JNoone
    Утилита RoboCopy - идеальный вариант для этого

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
     
    sc \\ASUP0 config eserv.exe start= demand
     
    Это не пашет. Я как понял вместо eserv.exe вписывать процесс.
    Пробовал короче по разному, не поучается...
    Ошибка [SC] OpenSCManager FAILED 1722:

    Всего записей: 62 | Зарегистр. 09-11-2006 | Отправлено: 11:44 30-11-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Levitant
    Либо поставь вместо \\ASUP0 правильное имя машины, либо убери совсем

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



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

    Всего записей: 62 | Зарегистр. 09-11-2006 | Отправлено: 12:04 30-11-2006 | Исправлено: Levitant, 12:04 30-11-2006
    NIKZZZZ



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

    Цитата:
    Формируй батничек вида
     
    Код:
    @Echo Off
    CHCP 1251
    Dir >%Temp%\List.txt
     

    Так весь вопрос и состоит в том, чтобы обойтись без этого батника!

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:45 30-11-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ
    А чем временный батничек мешает?

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все. Вопрос отпал. Разобрался с xcopy )
    Теперь вопрос как заставить понимать русские названия папок?

    Всего записей: 4 | Зарегистр. 30-11-2006 | Отправлено: 14:28 30-11-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JNoone
    Батничек пиши в ОЕМ кодировке
    либо первой строкой вставляй
    CHCP 1251

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:46 30-11-2006
    JNoone



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel не срабатывает с CHCP
    подскажи, может в ОЕМ кодировке получится? (интересует как именно докопаться до нее?)
     
    UPD:сорь. наврал. работает все... единственный минус - в лог он пишет такую фигню )) поправить полагаю на нормальный текст не получится?

    Всего записей: 4 | Зарегистр. 30-11-2006 | Отправлено: 14:49 30-11-2006 | Исправлено: JNoone, 14:51 30-11-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JNoone
    В чем ты создаешь батнички?
    Я работаю с FAR manager - он одинаково легко работает, как с ANSI (1251), так и OEM (866) кодировкой
    , Что просматривать, что редактировать

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:57 30-11-2006
    JNoone



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    я через TotalCMD  
    в целом мне не влом просматривать через ANSI просто создаются они в txt )). расчет на глупого юзверя. Можно конечно сделать чтоб он создавал *.log но тогда будут возмущаться что мол не читается... )

    Всего записей: 4 | Зарегистр. 30-11-2006 | Отправлено: 15:20 30-11-2006
    NIKZZZZ



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

    Цитата:
    А чем временный батничек мешает?

    У меня есть мной написанное приложение. Мне нужно из него запускать дос-команды и получать результат в Win-кодировке (dir я привел для примера). Каждый раз создавать временный батник для нужной команды неудобно. Можно перекодировать результат с самом приложении, но все равно возникают глюки с русскими буквами. cmd.exe /u (Юникод) работает хорошо, но с ним сложно работать. Поэтому меня и интересует как решить эту задачу средствами доса.
    И почему не работает строка
    cmd.exe /c chcp 1251 & dir > xxx.txt

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:45 30-11-2006
    Kirillhome



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

    Цитата:
    ViSiToR

    Цитата:
    Elroir
    почему нельзя переместить (move) файлы в нужную директорию

     
    Не, перемещать не подходит, файлы должны быть не тронутыми, это флэш диск, таких действии происходить должно много, а насколько всем известно, запись\перезапись\смещение, и любая работа на флэшке, портит её. Прсто нужно решить задачу как есть...  

    А не проще всё, что нужно, скопировать в %TEMP%\q@wsa (ну, т.е. в любой временный каталог), там - сделать нужные операции и грохнуть этот каталог? Что так, что по другому - с флешки-то читать всё равно придётся... А выполняется - на порядок легче...
     
    Или "шашечки" нужны
     
    Пробовал сравнивать архивы... Тоже ничего не получается... Была даже мысль найти что-то вроде RamDrive... Но - через Temp - всё одно проще и понятнее (IMHO, конечно)

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 15:58 30-11-2006
    KapralBel



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

    Код:
    cmd /c chcp 1251 & cmd /c Dir >1.txt

     
    JNoone
    Тогда пиши батнички в OEM кодировке

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:00 30-11-2006
    NIKZZZZ



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

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:12 30-11-2006
    MegaSin

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите решить такую задачу:
    есть большой bat файл, в нем встречаются часто куски вида:

    Код:
     
    :Step0
    echo. ===================================
    echo. I                                                                            I
    echo. I     ляляля                                                             I
    echo. I____________________________________________I
    echo. I                                                                            I
    echo. I  1 - some.                                                            I
    echo. I  2 - some2.                                                           I
    echo. I  3 - some3.                                                           I
    echo. I                                                                            I
    echo. ===================================
    set Step0=x
    set /p Step0= Сделайте выбор:  
    if /i %Step0%==1 goto some
    if /i %Step0%==2 goto some2
    if /i %Step0%==3 goto some3
    goto Step0
     

    хочу сделать скрипт на 2 языках (язык меняется в конфиге) и вынести такие меню в файл вида:

    Код:
     
    [menu1]
    ===================================
    I                                                                            I
    I     ляляля                                                             I
    I____________________________________________I
    I                                                                            I
    I  1 - some.                                                            I
    I  2 - some2.                                                           I
    I  3 - some3.                                                           I
    I                                                                            I
    ===================================
    [/menu1]
    [menu2]
    ....
    ....
    ....
    [/menu2]
     

    Нужен скрипт который подгружал бы файл языков, и в любом месте основного скрипта можно было написать вроде такого:

    Код:
     
    :Step0
    echo %menu1%
    set Step0=x
    set /p Step0= Сделайте выбор:  
    if /i %Step0%==1 goto some
    if /i %Step0%==2 goto some2
    if /i %Step0%==3 goto some3
    goto Step0
     

    и выводился код между [menu1] и [/menu1]
     
    заранее спс

    Всего записей: 25 | Зарегистр. 26-11-2006 | Отправлено: 17:17 30-11-2006
    igor_andreev

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

    Цитата:
    И почему не работает строка  
    cmd.exe /c chcp 1251 & dir > xxx.txt  

    Потому что надо поставить два символа конкатенации &&
     
     
    Добавлено:
    MegaSin
    Легче в батнике пункты меню два раза прописать, чем парсить конфиг

    Код:

    @ECHO OFF  
    CHCP 1251 > NUL  
     
    REM Тут язык, EN или RU
    SET language=EN  
     
    IF /I %language%==RU (  
     SET my_title=ЛАЛАЛА  
     SET item_1=Первый пункт меню  
     SET item_2=Второй пункт меню  
     SET item_3=Третий пункт меню  
     SET my_question= Сделайте выбор
    )  
     
    IF /I %language%==EN (  
     SET my_title=LALALA  
     SET item_1=The first item of the menu  
     SET item_2=The second item of the menu  
     SET item_3=The third item of the menu  
     SET my_question= Select your choice
    )  
     
    :Step0
    CLS  
    ECHO.  
    ECHO. %my_title%  
    ECHO.  
    ECHO. 1 - %item_1%  
    ECHO. 2 - %item_2%  
    ECHO. 3 - %item_3%  
    ECHO.  
     
    SET /P Step0=%my_question% [1-3]:  
       
    IF /I %Step0%==1 GOTO some1  
    IF /I %Step0%==2 GOTO some2  
    IF /I %Step0%==3 GOTO some3  
    GOTO Step0  
    REM ...и так далее

    Всего записей: 1669 | Зарегистр. 08-12-2004 | Отправлено: 18:50 30-11-2006 | Исправлено: igor_andreev, 19:37 30-11-2006
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Насчет флешки - ничего кроме того, что предложил Kirillhome, мне в голову так и не пришло . Понятно, что если много файлов - это лишнее время.  
    А ты не пробовал спросить автора 7-zip?  

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:11 30-11-2006
    ViSiToR



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

    Цитата:
    А не проще всё, что нужно, скопировать в %TEMP%

     
    От Elroir

    Цитата:
    Понятно, что если много файлов - это лишнее время.  

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

    Цитата:
    ты не пробовал спросить автора 7-zip?  

    Нет, хм... мысль заманчива... ладно, Elroir и Kirillhome спасибо вам за попытки помочь... если найду решение задачки, обязательно отпишусь (ну или если вы найдётье, дайте знать ).

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:35 30-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