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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    ZolotnikOV



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый вечер.
    Нужно что бы в зависимости от наличия или отсутстви Файла *.xxx  виполнялись соответственно команды 1 или команды 2
    написал что то, но не работает. помогите что не так:
     

    Код:
    IF dir D:\aaa\*.XXX  /a-d 2>nul >nul && goto 1 ELSE goto 2
    :1 команды 1
     
    :2 команды 2

     
    спасибо

    ----------
    — Ах, вы думали? Вы, значит, иногда думаете? Вы — мыслитель? Как ваша фамилия, мыслитель? Спиноза? Жан-Жак Руссо? Марк Аврелий?

    Всего записей: 393 | Зарегистр. 26-11-2007 | Отправлено: 19:19 01-11-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZolotnikOV
        IF EXIST имя_файла. (
            команды 1
        ) ELSE (
            команды 2  
        )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:12 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mat86
    @echo off
    for /f "tokens=*" %%A in ('fsutil fsinfo drives') do call :_1 "%%A"
    goto :eof
     
    :_1
    if /i "%1" equ "A:\" goto :eof
    if /i "%1" equ "B:\" goto :eof
    for /f "tokens=*" %%A in ('fsutil fsinfo drivetype %1 ^| findstr /v /i Неизвестный корневой Жесткий сетевой Компакт Электронный') do echo %%A && if exist "%1antivirus\curiet.exe" "%1antivirus\curiet.exe" >nul 2>&1
    goto :eof

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:14 01-11-2009
    mat86



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

    Цитата:
    @echo off  
    for /f "tokens=*" %%A in ('fsutil fsinfo drives') do call :_1 "%%A"  
    goto :eof  
     
    :_1  
    if /i "%1" equ "A:\" goto :eof  
    if /i "%1" equ "B:\" goto :eof  
    for /f "tokens=*" %%A in ('fsutil fsinfo drivetype %1 ^| findstr /v /i Неизвестный корневой Жесткий сетевой Компакт Электронный') do echo %%A && if exist "%1antivirus\curiet.exe" "%1antivirus\curiet.exe" >nul 2>&1  
    goto :eof

    Программа не запустилась с флэшки

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 20:21 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mat86
    а пробелы удалил? на концах строк кода
     
    Добавлено:
    mat86
    напиши в конце pause и удали >nul 2>&1  
    и покажи листинг работы

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:27 01-11-2009 | Исправлено: mugil_cephalus, 20:31 01-11-2009
    mat86



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    поудалял пробелы, поставил pause, но на пауе не останавливается

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 20:34 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    echo on
    for /f "tokens=*" %%A in ('fsutil fsinfo drives') do call :_1 "%%A"
    goto :eof
     
    :_1
    if /i "%1" equ "A:\" goto :eof
    if /i "%1" equ "B:\" goto :eof
    for /f "tokens=*" %%A in ('fsutil fsinfo drivetype %1 ^| findstr /v /i Неизвестный корневой Жесткий сетевой Компакт Электронный') do echo %%A && if exist "%1antivirus\curiet.exe" "%1antivirus\curiet.exe"
    goto :eof
     
    pause

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:38 01-11-2009
    mat86



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

    Цитата:
    echo on  
    for /f "tokens=*" %%A in ('fsutil fsinfo drives') do call :_1 "%%A"  
    goto :eof  
     
    :_1  
    if /i "%1" equ "A:\" goto :eof  
    if /i "%1" equ "B:\" goto :eof  
    for /f "tokens=*" %%A in ('fsutil fsinfo drivetype %1 ^| findstr /v /i Неизвестный корневой Жесткий сетевой Компакт Электронный') do echo %%A && if exist "%1antivirus\curiet.exe" "%1antivirus\curiet.exe"  
    goto :eof  
     
    pause

    На паузе не останавливается, не успеваю прочитать

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 20:41 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mat86
    на pause должен останавливаться...

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:48 01-11-2009
    mat86



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

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 20:52 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mat86
    запусти командную строку, введи имя батника с путем  до него, типа c:\folder\file.bat и enter

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:56 01-11-2009
    mat86



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня так:  
    D:\Cureit_flash - копия.bat
    Все равно не хочет останавливаться, а у тебя останавливается?

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 21:04 01-11-2009 | Исправлено: mat86, 21:10 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mat86
    G:\scripts>z3.bat
     
    G:\scripts>echo on
     
    G:\scripts>for /F "tokens=*" %A in ('fsutil fsinfo drives') do call :_1 "%A"
     
    G:\scripts>call :_1 "A:\"
     
    G:\scripts>if /I ""A:\"" EQU "A:\" goto :eof
     
    G:\scripts>if /I ""A:\"" EQU "B:\" goto :eof
     
    G:\scripts>for /F "tokens=*" %A in ('fsutil fsinfo drivetype "A:\" | findstr /v /i &#9552;хшчтхёЄэ&#8730;щ ъюЁэхтющ &#9566;хёЄъшщ ёхЄхтющ &#9577;юьяръЄ &#9612;ыхъЄЁюээ&#8730;щ') do
    echo %A   && if exist ""A:\"antivirus\curiet.exe" ""A:\"antivirus\curiet.exe"
    FINDSTR: Не удается открыть корневой
    FINDSTR: Не удается открыть ?есткий
    FINDSTR: Не удается открыть сетевой
    FINDSTR: Не удается открыть ?омпакт
    FINDSTR: Не удается открыть ?лектроннvй
     
    G:\scripts>goto :eof
     
    G:\scripts>goto :eof
     
    G:\scripts>
     
     
    Добавлено:
    mat86

    Цитата:
    У меня так:  
    D:\Cureit_flash - копия.bat

    D:\  - это жесткий диск?
    если запустить командную строку и в ней запустить батник, командная строка не должна закрываться

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:17 01-11-2009
    mat86



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

    Цитата:
    D:\  - это жесткий диск?

    Да, жесткий диск

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

    Я протупил запускал с 'выполнить', а не с cmd
    Запустил с cmd пишет непредвиденное появление: С:\.

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 21:36 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mat86
    у меня флэшки нет, fsutil fsinfo drivetype - глючит (правда, я ее не пользовался)
    fsutil fsinfo drives нормально отрабатывает:
     
    G:\scripts>fsutil fsinfo drives
     
    A:\ C:\ D:\ F:\ G:\ H:\ I:\ W:\
     
    G:\scripts>
     
     
    Добавлено:
    mat86
    переименуй Cureit_flash - копия.bat в curf.bat (на всякий случай), запусти командную строку и в ней вбей D:\curf.bat и enter  
    и покажи весь листинг, как у меня (все что напишет ком.строка)
    хотя лучше запустить скрипт с флэшки: запустить комстроку и в ней - букваФлышки:\curf.bat + enter

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:39 01-11-2009
    mat86



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все понял только незнаю как скопировать весь листинг из командной строки

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 21:58 01-11-2009
    mugil_cephalus

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

    Цитата:
    Все понял только незнаю как скопировать весь листинг из командной строки

    на панели задач нажми на окно cmd - выбери свойства - общие - поставь галку Выделение мышью и OK - сохранить св-ва для  других окон - Да
    потом выделяй мышью текст в окне cmd и жми enter (enter копирует текст) и вставляй

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:07 01-11-2009
    mat86



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    C:\Users\Геннадий>h:\curf.bat
     
    C:\Users\Геннадий>echo on
     
    C:\Users\Геннадий>for /F "tokens=*" %A in ('fsutil fsinfo drives') do call :_1 "
    %A"
     
    C:\Users\Геннадий>call :_1 "Диски: C:\ D:\ E:\ H:\ "
    Непредвиденное появление: C:\.
     
    C:\Users\Геннадий>if /i ""Диски: C:\ D:\ E:\ H:\ "" equ "A:\" goto :eof
     
    C:\Users\Геннадий>
     
    Добавлено:
    mugil_cephalus
    сегодня больше немогу общаться, трафик заканчивается, завтра я на работе, там хоть целый день. Ты ж завтра будеш в интенете

    Всего записей: 438 | Зарегистр. 19-03-2009 | Отправлено: 22:17 01-11-2009
    ZolotnikOV



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а возможно что бы батник(а потом .exe) брал инфу для параметра  set с текстового файла (типа аналогия с ini). что бы путь C:\PROGRA~1\WINRAR был в отдельном (текстовом) файле и мог легко изменяться, а сам исполняемый файл нет.
     

    Код:
    set WR=C:\PROGRA~1\WINRAR


    ----------
    — Ах, вы думали? Вы, значит, иногда думаете? Вы — мыслитель? Как ваша фамилия, мыслитель? Спиноза? Жан-Жак Руссо? Марк Аврелий?

    Всего записей: 393 | Зарегистр. 26-11-2007 | Отправлено: 23:30 01-11-2009 | Исправлено: ZolotnikOV, 23:32 01-11-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, может кто поможет, а то я уж голову сломал, где ошибка  
     
     

    Цитата:
    mat86  
    @echo off  
    for /f "tokens=*" %%A in ('fsutil fsinfo drives') do call :_1 "%%A"  
    goto :eof  
     
    :_1  
    if /i "%1" equ "A:\" goto :eof  
    if /i "%1" equ "B:\" goto :eof  
    for /f "tokens=*" %%A in ('fsutil fsinfo drivetype %1 ^| findstr /v /i Неизвестный корневой Жесткий сетевой Компакт Электронный') do echo %%A && if exist "%1antivirus\curiet.exe" "%1antivirus\curiet.exe" >nul 2>&1  
    goto :eof

     
    ( http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1280#4 )
     
    если бы еще не
    Цитата:
    mat86  
    я бы тебе набил непаллиативный скрипт, - но у меня третий день шина на правой руке, - уж замучился левой вбивать  

    , может справился....  
     
     
    О решаемой задаче для mat86'a ( http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1240#8 ):
     

    Цитата:
    Помогите пожалуйста, создал себе барт. Хочу чтобы антивирусы запускались с флэшки, если она есть. Создал папку antivirus на флэшке в нее положил сканер curiet.exe. Как написать bat чтобы запускать curiet.exe с флэшки ведь буква флэшки на каждом компе может быть разная?

     

    Цитата:
    Цитата: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:\antivirus\curiet.exe" "%%i:\antivirus\curiet.exe"  
     
    Все четко работет, а возможно сделать чтобы не проверялось на cd-rom?  

     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 23:44 01-11-2009 | Исправлено: mugil_cephalus, 23:59 01-11-2009
       

    Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru