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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а нет темы ориентированой на SH  или подскажите как на линуксе запускать bat файло

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 15:28 21-05-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как (с помоью sed?) удалить пробел между инициалами, т.е. из
    Швед А. Б.  получить
    Швед А.Б. (т.е. без пробела между А. и Б. Инициалами считаем заглавные буквы,  в количестве 1 символ плюс точка)

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 18:27 21-05-2010
    Fenixion



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

    Всего записей: 41 | Зарегистр. 15-04-2008 | Отправлено: 18:37 21-05-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    Не уверен, что SED будет работать с кириллицей. Под рукой сейчас ничего нет. Только в понедельник смогу глянуть, мож кто до тех пор отпишет.
     
    Добавлено:
    Fenixion

    Код:
    wmic volume get "drive letter"

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 20:04 21-05-2010
    igor_andreev

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

    Код:
     
    chcp 1251
    sed -r -e "s/ ([А-Я]{1}\.) ([А-Я]{1}\.)/ \1\2/" old.txt>new.txt
     

    sed у меня 3.62
     
     
    Добавлено:
    Хотя вроде и 4.2 с gnuwin32.sourceforge.net работает, сейчас попробовал...

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 22:31 21-05-2010
    kvazigorynich

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Требуется зайти во все поддиректории в директории и переименовать внутри jpg-файлы задав в качестве имени имя директории + счетчик.
    Наваял такое, но не работает

    Код:
     
    for /d %%i in (*.*) do (
    cd "%%i"
    set res=0
    for %%j in (*.jpg) do  (
    mkdir "%%j" "%%i%res%".jpg
    set /a res+=1
    )
    cd ..
    )
     

    Всего записей: 794 | Зарегистр. 06-09-2007 | Отправлено: 19:45 22-05-2010
    01MDM



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

    Цитата:
    + счетчик.  

     
    Для конкретной поддиректории или общий?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:07 22-05-2010
    kvazigorynich

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

    Всего записей: 794 | Зарегистр. 06-09-2007 | Отправлено: 20:24 22-05-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Цитата:
    Для конкретной поддиректории или общий?  
    да пофиг, отличается только местом его сброса и не работает не из-за него.
     
    kvazigorynich  

    Код:
    @echo off
    chcp 1251 >nul
    for /d %%i in (*.*) do (
        pushd "%%~fi"
        set res=10000
        for %%j in (*.jpg) do  (
            call ren "%%~j" "%%~i%%res:~-4%%.*"
            call echo.%%~i%%res:~-4%%%%~xj
            set /a res+=1
        )
        popd
    )  

    счетчик переделан на фиксированную ширину 4 символа.
     
    а не работало из-за неправильного использования %переменных% и страной в заданном контексте команды mkdir "%%j" "%%i%res%".jpg  
     
    вместо финта с call можно setlocal enabledelayedexpansion в начало и тупо  ren "%%~j" "%%~i!res!.*"
    счетчик, если надо прежний, переменной ширины - надеюсь сам вернешь

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:24 22-05-2010 | Исправлено: wolf0425, 20:35 22-05-2010
    kvazigorynich

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Спасибо большое, работает.
     
    С mkdir экспериментировал просто.

    Всего записей: 794 | Зарегистр. 06-09-2007 | Отправлено: 20:38 22-05-2010
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:56 22-05-2010 | Исправлено: 01MDM, 21:04 22-05-2010
    wolf0425



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

    Цитата:
    у иеня такой вариант:  
    ну, для сквозного счетчика - нормальный вариант.
    Для локальных счетчиков - переделывать дофига.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:00 22-05-2010 | Исправлено: wolf0425, 21:20 22-05-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как с помощью sed преобразовать строку вида
    One, Two, Three
     
    Преобразвать в строки вида
    One|Near
    Two|Far
    Three|Far
     
    Т.е. разбить строку на несколько (разделитель в исходной строке - запятая), к первой строке (до первой запятой) дописать в конец |Near, последующим - |Far

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 10:49 24-05-2010
    igor_andreev

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

    Код:
    echo One, Two, Three| sed -e "s/, /\|Near\n/;s/, /\|Far\n/g;s/$/\|Far/"

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 13:13 24-05-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Еще вопос по sed
     
    Возможно ли с его помощью "склеить" две строки и разных файлов.
     
    Допустим, есть строка в файле f1
    стр1
    и строка в файле f2
    на выходе получить стрстр2
    ?
     
    В простейшем случае (который вполне устроит), пусть в файлах только по одной строке

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 22:12 24-05-2010
    kermit

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужно выключать вечером компы, которые не выключили пользователи
     
    сделал spisok.txt с именами компов и батник из одной строчки:
     
    for /F %%i in (spisok.txt) do shutdown \\%%i /C /T:1
     
    как сделать проверку на доступность компа в сети?
     
    типа  
    for /F %%i in (spisok.txt) do (ping -n 1 %%i) && (shutdown %%i /C /T:1)

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 22:43 24-05-2010
    wolf0425



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

    Цитата:
    как сделать проверку на доступность компа в сети?

     
    да как ты написал так и сделать  
    for /F %%i in (spisok.txt) do ping -n 1 %%i && shutdown -m \\%%i /C "shutdown all" /T:1

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 00:01 25-05-2010 | Исправлено: wolf0425, 00:03 25-05-2010
    kermit

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

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 00:33 25-05-2010
    wolf0425



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

    Цитата:
    пытается шатдаунить даже те, по кому пинг не прошел  
    а почему у меня не пытается?
    всегда так проверял включенность компов и проблем не имел.
    ты точно написал && а не &  
    и пинг у тебя точно родной виндовый, а не чей-то левый вызывается? ОС какая?
     
    там невредно вывод пинга придушить - это да, а с ветвлением работает/не работает - всё замечетельно. XP pro sp3

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:01 25-05-2010 | Исправлено: wolf0425, 01:18 25-05-2010
    MuxauJl

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

    Добрый день.  
    Нужна помощь со следующей задачей:
    В файл result.txt необходимо вывести строки из файлов *.txt в папке text, для которых совпадают числа из файла 1.txt.
     
    1.txt
    12345
    12346
    12347
     
    2.txt (*.txt)
    12345 eeee eeee
    12346 eeee eee
    12347 eee eeee
    11111 eeee eee eeee
    22222 eee eee ee
     
     
    Код ниже берет только один файл (2.txt) и выводит в result.txt имя файла 2.txt чего быть не должно.
     

    Код:
     
    for /f "delims=" %%A in (2.txt) do (  
    find /i "%%A" 1.txt  >> result.txt  )  
     

     
    PS Возможно ли так же брать диапазон значений, то есть в файле 1.txt прописать 12345 - 12347 или в другом виде?

    Всего записей: 3 | Зарегистр. 10-12-2009 | Отправлено: 09:45 25-05-2010
       

    Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru