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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как записать системную дату в файл, установить другую, после выполнения проги (я так понимаю батнико по-любому ждет ее выполнения, если не указано обратное) поставить актуальную дату из файла.
     
    Нашел тут в топике код:
     
    Set dtCurrent=%date%  
    Set dtWork=03.02.2006  
    IF /i %dtWork% GTR %dtCurrent% Date %dtWork%
     
    Но не разобрался.

    Всего записей: 184 | Зарегистр. 07-06-2004 | Отправлено: 17:16 15-12-2006
    igor_andreev

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

    Код:

    @ECHO OFF
    :: Пробелы не забываем удалять в конце строк при копировании с ru-board
    :: Для формата даты dd.mm.yyyy
    :: для даты в другом формате ниже три значения сменить
     
    SET today_day=%DATE:~0,2%
    SET today_month=%DATE:~3,2%
    SET today_year=%DATE:~8,2%
     
    ECHO %today_day%-%today_month%-03 | DATE
     
    ECHO Current system date %today_day%.%today_month%.2003 :-) >"%temp%\~.txt"
    notepad.exe "%temp%\~.txt"
    DEL "%temp%\~.txt"
     
    ECHO %today_day%-%today_month%-%today_year% | DATE

     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 22:46 15-12-2006 | Исправлено: igor_andreev, 22:57 15-12-2006
    sD31337

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
     
     да тупонул ( хотя думал что так можно теоретически =)

    Всего записей: 30 | Зарегистр. 27-10-2006 | Отправлено: 01:46 16-12-2006
    Codmaker

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2 Elroir,
    извиняюсь за длительную задержку ответа, выделенка падала.
    вот начало
    Выяснил таки где именно останавливалось выполнение (вписал PAUSE перед каждой командой в пакетном файле, а то оказывается не всегда отображается команда вызвавшая ошибку... но это другая тема). Это:
    Код:
    FOR /F "usebackq tokens=*" %%I IN (`"rar lb -idcdp -c- -x"*\*" -- %1"`) DO (
        SET /A Number_of_files+=1
        SET Name_of_file="%%I")

    Поясняю. Команда FOR считает количество файлов (Number_of_files) в корне архива и записывает имя последнего файла в переменную Name_of_file. При этом каталоги тоже считаются файлами (терминология справки по консольной версии Rar). Команда rar lb -idcdp -c- -x"*\*" -- %1 выдает строки с именами файлов лежащих в корне архива, где %1 это полный путь и имя архива содержащее амперсанд заключенные в двойные кавычки. Вот во что раскрывается .bat "D:\TEMP\Архив & backup .rar" (то есть то что видно в команндной строке после запуска пакетного файла)
    Код:
    Непредвиденное появление: &.
    D:\TEMP>FOR /F "usebackq tokens=*" %I IN (`"rar lb -idcdp -c- -x"*\*" -- "D:\TEMP\Архив & backup .rar""`) DO (
    (выполнение именно так и прерывается на открытой скобке) С именами файлов без амперсанда работает на ура.

    Всего записей: 5 | Зарегистр. 07-12-2006 | Отправлено: 11:58 16-12-2006 | Исправлено: Codmaker, 12:20 16-12-2006
    Elroir



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

    Код:
     
    set fname=%1
    set fname=%fname:&=^&%

    for /f "usebackq tokens=*" %%I in (`"rar lb -idcdp -c -x"*\*" -- %fname%"`) DO (  
        SET /A Number_of_files+=1  
        SET Name_of_file="%%I")
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:33 16-12-2006
    Donbass

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Очень простой вопрос, может уже был, но я не нашел.
    Надо, чтобы приложению передавались переменные TEMP и TMP отличные от системных.
    Делаю так.
     
    my.bat:
    set var1=aaa
    set var2=bbb
    set temp=c:\dir1\temp
    set tmp=c:\dir1\temp
    start myapp.exe
    exit
     
    start использую, т.к. приложение с GUI, чтобы не было окна с cmd. В итоге var1 и var2 нормально передаются, а TEMP и TMP становятся C:\WINNT\TEMP, т.е. стандартному значению. Где я ошибаюсь?

    Всего записей: 5 | Зарегистр. 07-03-2006 | Отправлено: 19:04 16-12-2006
    TAILORD



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал батник для пакетной установки обновлении и там есть строки описания каждого обновления. Типа:  
    ECHO KB898461 27.06.2005 устанавливает постоянную копию установщика пакетов  
    start /wait .\WindowsXP-KB898461-x86-RUS.exe /Q /O /N /Z  
    Так из описания русские буквы не коректно отображаются в командной строке. Как это исправить? Спасибо большое заранее.

    Всего записей: 4294 | Зарегистр. 28-10-2005 | Отправлено: 21:06 16-12-2006
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TAILORD
    Ответил тебе в теме Командная строка, батники\сценарии
    P.S. Не стоит задавать один и тот же вопрос в двух местах одновременно.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:47 16-12-2006
    TAILORD



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасибо большое, но не помогло, перестало корректно отображатся даже сообщение от команды Pause.  
    P.S.Без злого умысла, просто показалось что там много таких, которых тут нет. Хотел иметь менине как много большего количества

    Всего записей: 4294 | Зарегистр. 28-10-2005 | Отправлено: 00:08 17-12-2006 | Исправлено: TAILORD, 05:19 17-12-2006
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TAILORD
    Запусти в командной строке просто "chcp", что выдается?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:24 18-12-2006
    TAILORD



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    При chcp 866 все нормально, и англ и русские.  
    При chcp 20866 и chcp 21866 вообще не буквы, какие-то линии.  
    При chcp 1251 русские отображаются, но ни те которые я набираю    
    При chcp 437 и chcp 1252 в любой расскладке одни вопросительные знаки.
     
    Пробовал и шрифт терминал, ничего не помогает. Единственное, я копировал из блокнота в батник (сохраненные ранее в блокноте описания с саитов МС). Но не вручную же набирать? Это может быть виной?

    Всего записей: 4294 | Зарегистр. 28-10-2005 | Отправлено: 02:59 18-12-2006 | Исправлено: TAILORD, 03:00 18-12-2006
    Elroir



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

    Цитата:
    Но не вручную же набирать? Это может быть виной?

    Э.... может. А может и не быть
    Решение, которое работает всегда - это набрать русский текст в DOS (866) кодировке.
    Ну или пeрекодировать WIN->DOS, что-бы не набирать вручную. Например программкой "Штирлиц"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:16 18-12-2006
    TAILORD



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

    Всего записей: 4294 | Зарегистр. 28-10-2005 | Отправлено: 04:10 18-12-2006
    Jon_Dow

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FAR-manager вам поможет... В нем нет проблем с базовыми кодировками (OEM, ANSI) и переключение кодировок элементарно. К тому же он прекрасно работает с буфером обмена.

    Всего записей: 732 | Зарегистр. 25-11-2006 | Отправлено: 09:48 18-12-2006
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    команда sort сортирует каталоги не по алфавиту, а по дате создания .Пример:
    Автор неизвестен - Нобель (48v)
    Автор неизвестен - Мистификатор (48v)
    Автор неизвестен - Байки от Петровича (48v)
    Можно ли это исправить?
     
    Добавлено:
    Вернее в любом случае так сортирует!

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:35 18-12-2006
    Elroir



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

    Код:
     
    sort /l "C" .....
     

     
    Добавлено:
    А чем не нравится команда dir ?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:41 19-12-2006
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    И sort /l "C" работает и dir, спасибо.  Блин, пока с этой справкой о командах разберёшься!

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:32 19-12-2006
    mich76



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    простите за глупый вопрос, но как работать с результатом команды ?
    Например в батнике я запустил compname -d которая вывела имя нетбиос компа. теперь мне нужно это имя сравнить на легитивность со строковой переменной.

    Всего записей: 152 | Зарегистр. 14-12-2005 | Отправлено: 12:28 19-12-2006
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mich76
    Я ж тебе ответил в параллельной теме
     
    Добавлено:
    Упс.. ты сюда запостил раньше, чем я ответил
     
    2 Модераторы - удалите данный пост

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый. не думал что народ еще помнит о досе.
    помогите если можете задача такая.
    1)папку заархивировать так чтобы в конце имени добавилось время+дата
    2) подключить на сетевой диск
    3) скопировать туда
    4) посчитать сколько там уже таких архивов
    5) удалить все кроме 5 самых последний новых по дате файлов
     
    с 1-3 пунктом легко, а вот дальше....

    Всего записей: 29 | Зарегистр. 11-09-2006 | Отправлено: 20:19 20-12-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru