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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    FAPSI



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Большое тебе спасибо! Ты ГЕНИЙ.  
    Я перерыл весь инет, нигде не нашел. "авторитетные" ребята с других форумов говорили что это невозможно ))) Думал, что придётся использовать нестандартные методы (
    Жму твою руку!
    +++

    Всего записей: 59 | Зарегистр. 03-08-2004 | Отправлено: 00:33 25-10-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lid111
     
    В общем iconv не справляется с utf-8 :( Перепробовал несколько версий и сборок. Хотя кодировка заявлена:

    Код:
     
    iconv -l
     

    В чем проблема не знаю. Надо искать другой кодировщик.
     
    PS. Причем файлы utf-8, созданные в блокноте не обрабатываются, а перекодированные с помощью самой iconv или созданные другими приложениями нормально перекодируются.
     
    ЗЫ. На всякий случай выкладываю, надеюсь поможет:

    Код:
     
    @echo off
     
    for %%i in (utf-8 cp1251) do (
     
        for /f "tokens=*" %%j in ('dir /b *.txt') do (
     
            1>nul 2>&1 iconv -f %%i -t cp866 "%%j" && iconv -f %%i -t cp866 "%%j" 1>"%%~nj.tmp"
            if exist "%%~nj.tmp" move "%%~nj.tmp" "%%j"
     
        )
     
     
    )
     

    Перекодирует все файлы *.txt из кодировок UTF-8 и CP1251 в CP866
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:41 25-10-2010 | Исправлено: 01MDM, 12:48 25-10-2010
    digis14

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM подскажи почему получается не по порядку при таких вариантах
    08.jpg, 09jpg, 10.jpg, 11.jpg, -> эти правильно по списку переименовывает
    8.jpg, 9.jpg, 10.jpg, 11.jpg, -> эти неправильно

    Всего записей: 35 | Зарегистр. 19-01-2007 | Отправлено: 12:22 25-10-2010 | Исправлено: digis14, 12:23 25-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    digis14
    потому что 0 и 1 до 8 и 9 идут

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:23 25-10-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    digis14,
    Как правильно заметил bomzzz, сортировка идет как строка, где символы 0 и 1 стоят раньше 8 и 9.
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:54 25-10-2010
    digis14

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Это понятно, я просто глядя на total commander подумал что есть универсальное решение

    Всего записей: 35 | Зарегистр. 19-01-2007 | Отправлено: 13:40 25-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужно получить список всех файлов на диске (с поддиректориями)  
    но dir /l /b /s /a-d t:\ - не устраивает: проблема в том, что в один из подкаталогов смонтирован отсутствующий на момент запуска программы диск, так что при выполнении такой команды выскакивает GUI запрос про отсутствие диска и батник тормозится пока не нажать мышкой "продолжить".
     
    Есть какие-то другие готовые варианты, например где бы можно было задать список каталогов-исключений, которые сканировать не нужно?
    или только писать самому обход каталогов?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:17 25-10-2010 | Исправлено: wolf0425, 15:23 25-10-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Может на момент выполнения dir просто отмонтировать этот диск?
    Как-нибудь так:

    Код:
     
    @echo off
    setlocal
     
    for /f %%i in ('mountvol C:\Folder /l') do set "id=%%i"
    mountvol "C:\Folder" /d
     
    dir /b /s /a-d 1>list.txt
     
    mountvol "C:\Folder" %id%  
     

     
    Или речь о сетевом диске?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:34 25-10-2010 | Исправлено: 01MDM, 16:42 25-10-2010
    wolf0425



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

    Цитата:
    Может на момент выполнения dir просто отмонтировать этот диск?  

    так - не хотелось бы. это же админские права тогда нужны...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:45 25-10-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425,
    Можно попробовать wmic, но не уверен, что проблема не останется:

    Код:
     
    wmic datafile where "drive='g:'" get name 1>list.txt
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:58 25-10-2010 | Исправлено: 01MDM, 16:59 25-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    попробовал я wmic, обломался ждать - подумал молча зависло,  
    попробовал wmic datafile where "drive='c:'" get name  1>file - оно явно чем-то занято, грузит одно ядро проца на 100%, но за 20 минут пока ничего в файл не выдало. загадка

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Ну да, тормозилово еще то . Логический раздел на 13500 файлов обрабатывал минуты 4, флешку почти сразу.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:27 25-10-2010
    wolf0425



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

    Цитата:
    Ну да, тормозилово еще то
    угу, думало полчаса, в итоге выдало файл из одной пустой строки

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:15 25-10-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Если ты это проделывал в 7-ке, то вероятно wmic банально не пускали в какой-нибудь каталог. Кстати обновилась nircmd до 2.45, в ней есть контекст elevate для запуска с повышением привилегий в висте и 7.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:57 25-10-2010
    wolf0425



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

    Цитата:
    вероятно wmic банально не пускали в какой-нибудь каталог.  
    по моему это ещё совершенно не повод не писать содержимое корня и всех прочих каталогов, в которые пускали...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 22:37 25-10-2010 | Исправлено: wolf0425, 22:44 25-10-2010
    fpkx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста написать батник, который проверяет некий процесс каждую минуту на кол-во используемой памяти, и по превышении определенного количества закрывал его...  
    с помощью pslist и pskill можно сделать, но я в батниках совсем ноль

    Всего записей: 3 | Зарегистр. 26-10-2010 | Отправлено: 09:58 26-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tasklist фильтр надо подобрать и вырезать память
     
    Добавлено:

    Цитата:

    for /f %%I in ('tasklist /NH /FI "MEMUSAGE ge 15000"') do (
    if %%I==MYPROCESS.EXE taskkill  /f /im MYPROCESS.EXE
    )

    так попробуй
     
    Добавлено:
    где 15000 - предел памяти в кб
     
    Добавлено:

    Цитата:

    @ECHO OFF
    COLOR 9F
    CLS
    :NEXT
    for /f %%I in ('tasklist /NH /FI "MEMUSAGE ge 15000"') do (
    if %%I==MYPROCESS.EXE taskkill  /f /im MYPROCESS.EXE
    )
    echo %TIME%
    ping -n 60 127.0.0.1>nul
    goto :NEXT

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 10:17 26-10-2010 | Исправлено: bomzzz, 10:32 26-10-2010
    fpkx

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

    Цитата:
    так попробуй

    Спасибо большое за быстрый ответ. Батник отрабатывает без ошибок, но процесс почему-то не закрывается. не пойму в чем может быть дело

    Всего записей: 3 | Зарегистр. 26-10-2010 | Отправлено: 11:35 26-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    наверно привелегий не хватает

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:42 26-10-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть текстовый файл, в нем три колонки вида
     
     
     41.59     105         0.388
       -90     300.0        -8.816
     
     
    Как с помощью sed поменять первую и вторую колонки местами,т.е. получить
     
    105      41.59         0.388
    300.0     -90            -8.816
     
     
    PS
    Данные в строке разделены пробелами

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 12:15 26-10-2010 | Исправлено: BagaBaga, 12:16 26-10-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru