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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Smitis



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

    Цитата:
    Как передать в переменную X число месяц год из  
    программы curtime32.exe сколько ни пробывал  
    ничего не получается. Подскажите пожалуйста как нужно

    Это консольная программа?
    Что она выводит на экран (в каком формате)?
    Если просто дату и время, не будет ли лучше использовать переменные %date% и %time%?

    ----------
    Разум когда-нибудь победит

    Всего записей: 3216 | Зарегистр. 09-02-2003 | Отправлено: 16:19 07-09-2008 | Исправлено: Smitis, 16:42 07-09-2008
    azamapendrus



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно удалять файлы, расширения которых будут записаны в текстовом файле.
    Пример:
    echo on
    for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do if exist %%a: del/q %%a:\*bin
     
    Нужно, чтобы батник брал список удаляемых файлов из DEL.txt , написанных каждый на новой строчке.

    Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 18:40 07-09-2008
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:22 07-09-2008
    Dekabryi



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

    Цитата:
    for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do if exist %%a: del/q %%a:\*bin  

    for %%a in (del.txt) do if exist %%a: del/q %%a:\*bin  
    Так не пойдет ?
    или  
    for f "eol=; token=1" %%a (del.txt) do if exist %%a | del /q %%a *.bin

    Всего записей: 44 | Зарегистр. 29-05-2006 | Отправлено: 06:48 08-09-2008 | Исправлено: Dekabryi, 06:52 08-09-2008
    Nagual



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

    Цитата:
    <Win+R>cmd<enter>reg query /?<enter>  
     
    Код:REG QUERY Раздел [/v Параметр | /ve] [/s]  
     
     
     
    ЗЫ. а вот вывод уже разобрать с FOR (можно указать delims=<tab>)

    о каких сложностях ты говоришь?
    приведи рабочий код задачи
    запускать консоль и т.д. мы и так умеем

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 13:58 08-09-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть файл
    в файле много строк
    необходимо вытащить определнный блок из cтроки и переместить в другое место строки
    строки типа
    дд.мм.гггг.час.мин.1234;ххххх;12346/123456789;уууу;;810;ххххх
    нана так
    дд.мм.гггг.час.мин.1234;ххххх;;уууу;12346/123456789;810;ххххх
    х проивольное число произвольной длинны.
    у проивольное число из 4 символов
    123456/123456789 тош произвольные числа но до / стоит 6 символов после / 9
    810 не меняется ; тош
    чот как то тяшко....помготе хоть в каку сторону двигать..

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 00:55 09-09-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    avkorets
    Если поля ";" не меняются то попробуй:

    Код:
     
    @echo off
    chcp 1251 1>nul
    for /f "tokens=1-6 delims=;" %%1 in (1.txt) do (
        echo %%1;%%2;;%%4;%%3;%%5;%%6 1>>1.tmp
    )
    move /y 1.tmp 1.txt
    chcp 866 1>nul
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 05:14 09-09-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    о
    гут  
    спасибо все работает!все понятно, кроме..
    Обьясни строку chcp 1251 1>nul  и chcp 866 1>nul ...если не сложно =)

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 10:17 09-09-2008
    01MDM



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

    Цитата:
    Обьясни строку chcp 1251 1>nul  и chcp 866 1>nul ...если не сложно =)

     
    В общем можно и не делать, в данном случае это лишнее

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:31 09-09-2008 | Исправлено: 01MDM, 10:36 09-09-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хм..задача усложнилась...
    В файле присутсвует первая срока немного отличающаяся от той которую я описал
    получается так
    yyyyyyy;дд.мм.гггг;hh:mm:ss;yy;xxxxx
    впринципе все норм ток вот двоеточие лишнее он впихивает оно и понятно...
     
    @echo off
    for %%j in (*.txt) do (  
    chcp 1251 1>nul  
    for /f "tokens=1-8 delims=;" %%1 in (%%j) do (  
        echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp  
    )  
    move /y 1.tmp %%j  
    chcp 866 1>nul
    )
     
    Мож ешо цикл в тело впихнуть ток как описать чтоб обработал первую но не трогал остальные строки skip вроде не катит...
    Впринципе задача стоит в том чтоб первую строк вообще не трогать но на выходе она должна быть...

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 10:54 09-09-2008 | Исправлено: avkorets, 10:58 09-09-2008
    01MDM



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

    Цитата:
    Хм..задача усложнилась...
    Впринципе задача стоит в том чтоб первую строк вообще не трогать но на выходе она должна быть...
     

     

    Код:
     
    @echo off
    setlocal
     
    set /p firstline=<1.txt
    echo %firstline% 1>1.tmp
     
    for /f "skip=1 tokens=1-6 delims=;" %%1 in (1.txt) do (
        echo %%1;%%2;;%%4;%%3;%%5;%%6 1>>1.tmp
    )
    move /y 1.tmp 1.txt
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:26 09-09-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    гут работает,спасибо еще раз =)
    ток в случае если находится все в теле цикла  
     
    @echo off
     
    for %%j in (*.txt) do (
    setlocal
    set /p firstline=<%%j  
    echo %firstline% 1>> 1.tmp  
    for /f "skip=1 tokens=1-8 delims=;" %%1 in (%%j) do (  
        echo %%1;%%2;%%3;%%4;;;;%%6;;%%5;%%7;%%8 1>> 1.tmp  
    )  
    move /y 1.tmp %%j  
    )
     
    пишет первую строку  
    режим ввода команд на экран (echo) выключен/включен=)
    мож ему %%j не нравится?

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 12:30 09-09-2008
    Dis74



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите как это оформить 1 строкой? и без создания файла
     
    date /t > date.txt
    set /p curdate=<\date.txt  
     
    подозреваю что-то вроде  date /t|set /p curdate=
    но не срабатывает.

    Всего записей: 171 | Зарегистр. 12-11-2007 | Отправлено: 14:31 09-09-2008
    BuLLet3D

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток и заранее прошу прощения потому как может быть этот вопрос уже обсуждался
    НО тем не менее есть проблема
    есть скрипт выполняющий определенную задачу и в зависимости от переданного параметра выводящий результат либо в файл либо на экран.
    Проблема заключается в следующем: необходимо отредактировать результаты выводимые в файл так что бы требуемая информация выводилась в столбик а не строками  
    Скрипт написан для работы с windows AD
    Собственно скрипт
    @echo off
    rem esli parametr 2 raven 0 to vivod v file
    if %2==0 net group %1 /domain >group.txt  
    rem esli parametr 2 raven 1 to vivod na monitor
    if %2==1 net group %1 /domain
    net group %1 %2 /domain  
     
    Пример того как выводит в файл скрипт
    ........
    11111111                  111111111               1111111                  
    11111111                11111111                1111111                    
                           
    ........
     
    Пример того как нужно что бы отображалась информация
    .........
    1111111
    1111111
    111111111
    1111111111
    .........

    Всего записей: 2 | Зарегистр. 09-09-2008 | Отправлено: 14:32 09-09-2008
    king_stiven

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

    Код:
    set curdate=%date%

    или

    Код:
    set /p curdate=%date%

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:43 09-09-2008
    VitRom

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Цитата:
    о каких сложностях ты говоришь?  
    "такие сложности" - это устоявшееся фигуральное выражение русского языка, которое вовсе не означает, что речь идёт именно о "сложностях" в буквальном смысле. В этом случае речь шла о лишних "движениях" в виде временных файлов (в исходном вопросе) или пайпов (в твоём варианте). Не сомневаюсь, что консоль запускать ты умеешь (решпект и уважуха ); я же лишь показал (напомнил), откуда взято простое прямое решение (получить сразу само значение конкретного параметра).

    Всего записей: 3098 | Зарегистр. 18-06-2006 | Отправлено: 15:27 09-09-2008
    Dis74



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    пример с датой был условным.  
    на деле нужно передать результат работы bat файла (он возвращает строку) в ответ на set /p

    Всего записей: 171 | Зарегистр. 12-11-2007 | Отправлено: 15:42 09-09-2008
    S377



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно с ftp ресурса копировать файлы
    но в пути встречаются директории на кириллице и пробелы
    и поэтому батник ругается на путь
    например вот такой путь:
    ftp 321.21.564.231\фыва фыа\ыва ыва\file.df
     
    пишу
    ftp -s:res.txt 321.21.564.231
    а в res.txt файле уже пишу:
    cd \фыва фыа\      
    хочу перейти к нужному файлу
    но тут и ругань на путь
    и в кавычки заводил путь и чтотолько не делал...
    Перелапатил поиском всю ветку про батники и так и не нашел ответ...

    Всего записей: 39 | Зарегистр. 28-11-2006 | Отправлено: 16:42 09-09-2008
    Dis74



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    S377
    сохрани файл в той кодировке в которой работет FTP
     
    к тому же на фтп надо сначала зайти. у меня вот какой файл есть:
    get_ftp.bat:

    Код:
     
    echo anonymous>c:\ftp.tmp
    echo anonymous@pop3.ru>>c:\ftp.tmp
    echo binary>>c:\ftp.tmp
    echo get %2>>c:\ftp.tmp
    echo disconnect>>c:\ftp.tmp
    echo bye>>c:\ftp.tmp
    ftp.exe -s:c:\ftp.tmp %1
    del c:\ftp.tmp
     

     
    пользовать get_ftp.bat  ftp.server.ru  path\to\file\file.ext

    Всего записей: 171 | Зарегистр. 12-11-2007 | Отправлено: 16:51 09-09-2008 | Исправлено: Dis74, 16:57 09-09-2008
    S377



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

    Цитата:
    сохрани файл в той кодировке в которой работет FTP

    все сохранено в досовской кодировке
     
    Добавлено:
    на фтп заходит
    под логином и паролем
    проблема встала со сменой директории изза русской кодировки и пробелов

    Всего записей: 39 | Зарегистр. 28-11-2006 | Отправлено: 16:56 09-09-2008
       

    Страницы: 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-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru