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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    701

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dekabryi
     
    Огроменное спасибо всё арбайтен !!!
    С меня ведро пельменей
     
    прочитал про /f в инете  
     /f - overwrite без подтверждения, а так ему нужно было какое-то подтверждение ?

    Всего записей: 29 | Зарегистр. 29-11-2006 | Отправлено: 12:10 30-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    noiseless
    Где ты хочешь поменять кодировку в *.bat или в *.log? Поставь chcp 1251 >nul для вывода *.bat в cp1251
    И зачем 02.bat?

    Код:
     
    @echo off
    chcp 1251 >nul
    ...
    for /F %%i in (dipost.txt) do call:job %%i
    goto:eof
    :job
    echo Идет обновление папки %1. Ждите...
    rar x -o+ -ilogagg.log %arch% %1 >> update.log
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:13 30-01-2008
    noiseless

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Нужна одна кодировка в файле update.log
     
    Ну если мою задачу можно решить одним батником, то тогда ваще мегареспектище!

    Всего записей: 182 | Зарегистр. 06-02-2006 | Отправлено: 12:18 30-01-2008 | Исправлено: noiseless, 12:19 30-01-2008
    zhuchella

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ToAll
    Обращаюсь к специалистам - очень нужно решить такую задачу: есть текстовій файл (файл настроек), в нем может быть в единый момент времени тока одно число от 1 до 9. Так вот, надо прочитать с этого файла это число, и в зависимости от того, какое оно (или 1, или 2, или..., или 9) выполнить строго определённые (для каждого числа они разные) команды.
    Очень нужна ваша помощь - буду ждать ответов...

    Всего записей: 5467 | Зарегистр. 15-07-2003 | Отправлено: 12:24 30-01-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    201MDM
    Спасибо! Подскажите, а если у юзера не существует папки C:\Temp то она будет создана? Просто дело в том что нужно чтоб этот батник работал на разных компах включая те на которых, например, вообще нет диска С, а есть только D... А нету ли универсального пути к папке Documents and Settings по принципу %windir% ?
     
     
    Заранее, огромное спасибо!

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 12:35 30-01-2008
    king_stiven

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

    Код:
    for /f "usebackq tokens=*" %%c in ("file.txt") do set Value=%%c
    if %Value%==1 команда
    if %Value%==2 команда
    if %Value%==3 команда
    if %Value%==4 команда
    if %Value%==5 команда
    if %Value%==6 команда
    if %Value%==7 команда
    if %Value%==8 команда
    if %Value%==9 команда

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:41 30-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grim_Repo
    Папка должна существовать, иначе reg выдаст ошибку. Создай командой md
    Если ты хочешь экспортировать в определенную папку для любого компьютера то посмотри переменные среды командой set и выбери, что надо (%temp%, %userprofile% и т.д)
     
    Не забывай путь заключать в кавычки

    Код:
     
    md "%userprofile%\RegSaves"
    reg export hkcu "%userprofile%\RegSaves\hkcu_saved.reg"
     


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

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

    Всего записей: 5467 | Зарегистр. 15-07-2003 | Отправлено: 13:12 30-01-2008
    01MDM



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

    Цитата:
    Нужна одна кодировка в файле update.log

    Сам бат-файл в какой кодировке? Пересохрани его в win-1251 и поставь chcp 1251 >nul

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть еще одна задача: есть ярлык у которого рабочая папка C:\program\files\ нужно с помощью батника поменять рабочую папку ярлыка на D:\pr0gram\filez\
     
     
    Заранее, огромное спасибо!

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 13:52 30-01-2008
    noiseless

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Сам файл естественно в Дос-кодировке, т.к. выводимые сообщения на русском.

    Всего записей: 182 | Зарегистр. 06-02-2006 | Отправлено: 14:21 30-01-2008
    OOD

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите написать батник есть логические диски A-Z нужно выполнить команды:
    cd a:\   .............   cd z:\
    dir
     
    по всем этим дискам по очереди  
    и в случае обнаружения start.bat нужно запустить его с того диска на котором он находиться.

    Всего записей: 3379 | Зарегистр. 20-05-2006 | Отправлено: 14:52 30-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    OOD
    Нужно просканировать весь диск или только корень? Вариант если искать start.bat в корне каждого раздела.

    Код:
     
    @echo off
    for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
        if exist %%i:\start.bat (
            pushd %%i:\
            start cmd /c start.bat
            popd
        )
    )
     

    Если надо поочередно запускать, замени "start cmd /c" на "call"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:29 30-01-2008 | Исправлено: 01MDM, 15:41 30-01-2008
    OOD

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    О спасиво великий гуру , как вы мне помогли!!!!!!

    Всего записей: 3379 | Зарегистр. 20-05-2006 | Отправлено: 15:49 30-01-2008
    PuzzleW

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grim_Repo
    Батником ты этого не сделаешь.
    Как вариант - возьми эталонный ярлык со ссылкой на c:\program files\
    измени его так чтобы стартовый каталог был D:\pr0gram\filez\ как тебе надо
    а потом найди это .lnk файл и копируй вместо того что у тебя есть.
     

    Всего записей: 185 | Зарегистр. 19-12-2005 | Отправлено: 17:44 30-01-2008
    LDAP



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    king_stiven
    А-а, теперь понятно.
    А вот если мне нужно копирование нескольких типов файлов с разных папок, то нужно на каждый тип в этот батник писать новую такую же конструкцию. Или можно как-то это организовать в одной?

    Всего записей: 522 | Зарегистр. 03-08-2005 | Отправлено: 18:35 30-01-2008 | Исправлено: LDAP, 18:36 30-01-2008
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:57 30-01-2008 | Исправлено: king_stiven, 22:43 30-01-2008
    LDAP



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Попробовал задать несколько условий в FOR одновременно, в таком случаи файлы копируются, впринципе. Но в случаи "внештатной ситуации" сообщения не выдаются. Так что, похоже что нужно для каждого типа писать свой цикл, чтобы все цывильно, с выдачей ошибок.
    И последний вопрос. Если я задам во всех циклах одну и ту же переменную, она в каждом новом цикле будет заново менять значение, или лучше для каждого цикла задать свою переменную?

    Всего записей: 522 | Зарегистр. 03-08-2005 | Отправлено: 11:01 31-01-2008
    01MDM



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

    Код:
     
    for %%i in (cnt jpg pdf mp3) do (
         for %%x in ("E:\TEMP_RA\IRBIS\DATAI\IBIS\*.%%i") do (
             xcopy "%%x" C:\test\WebIRBIS3.3\irbis\ibis\ /Y /R /H
             if ERRORLEVEL 1 (
                 Комманда копирования файла "%%x1" вернула код ошибки!!! >> log.txt
             ) else (
                 Echo Файл  "%%x" скопирован успешно >>log.txt
             )
             set proverka=yes  
         )
    if not defined proverka Echo Скрипт копирования вернул код ошибки "Файлы для копирования не найдены" >> log.txt  
    set proverka=
    )
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:24 31-01-2008 | Исправлено: 01MDM, 12:25 31-01-2008
    king_stiven

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

    Цитата:
    Если я задам во всех циклах одну и ту же переменную, она в каждом новом цикле будет заново менять значение, или лучше для каждого цикла задать свою переменную?

    вопроса не понял, с примерами задай

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:40 31-01-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 100 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru