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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anton1209
    Цитата:
    как это реализовать? спасибо!  
    у тебя кавычки при сравнении потерялись.
     
    IF /I "%EP%" == "ON" GOTO roselect  
    IF /I "%EP%" == "OFF" GOTO irect

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 14:10 28-11-2010 | Исправлено: wolf0425, 14:12 28-11-2010
    portolomeo

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    здраствуйте многоуважаемый народ!!  
    помогите пожалуйста с такой незадачей - ip прописан вручную (типа 192.168.1.**), при загрузке компа сетевое соединение говорит - подключено, но пинга нет, и странички соотв не грузятся. приходится по нескольку раз (от одного до 10) разрывать соединение и подключать заново, пока страница не загрузится...  
    очень хотелось бы закрепить эту процедуру за мини-батником, помогите, пожалуйста.  
    с программированием не дружу, здесь таких задач не нашел.
    ps сетевая карта и кабели все в норме, какой-то свой глюк у компа

    Всего записей: 12 | Зарегистр. 17-05-2007 | Отправлено: 13:43 29-11-2010 | Исправлено: portolomeo, 13:45 29-11-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    строки файла уже отсортированы по алфавиту.
    подскажите как прибить дублирующиеся строки (т.е. оставить по одной уникальной) - например через sed, хотя можнои  чем-то левым...

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 14:57 29-11-2010 | Исправлено: wolf0425, 14:59 29-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    батники когда сортируют сами дубли выкидывают вроде
     
    FIND /v "%MYSTRING%" <LIST.TXT > LIST1.TXT
     
    считываешь  строчку, без нее пересортируешь весь батник, там дублей не останется

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:10 29-11-2010 | Исправлено: bomzzz, 15:12 29-11-2010
    igor_andreev

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

    Цитата:
    подскажите как прибить дублирующиеся строки

    http://sed.sourceforge.net/sed1line.txt
     
    Там есть "delete duplicate, consecutive lines from a file"(для уже отсортированного файла) и след. пример для "nonconsecutive lines"

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 19:35 29-11-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Как-то так, если строчки без выкрутасов:

    Код:
     
    @echo off
    setlocal
     
    cd.>1.tmp
    for /f "tokens=*" %%i in (1.txt) do 1>nul findstr "%%i" 1.tmp || 1>>1.tmp echo %%i
    move 1.tmp 1.txt  
     


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



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

    Код:
    sed -r "$!N; /^(.*)\n\1$/!P; D" <file1.txt  >file2.txt

    вроде даже работает.
     
    01MDM не, батник, 1000+ раз запускающий findstr - это несколько не то, чего я хотел, да и для отсортированного списка можно и самому соседние строки посравнивать -  точно быстрее получится...
     
     

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 20:39 29-11-2010 | Исправлено: wolf0425, 20:39 29-11-2010
    01MDM



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

    Цитата:
    не, батник

    Тогда юниксовый sort

    Код:
     
    sort -u 1.txt -o 2.txt
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:09 29-11-2010 | Исправлено: 01MDM, 21:18 29-11-2010
    Alukardd



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

    Цитата:
    Народ подскажите как узнать свои привилегии в системе? Просто получить вывод типа User, Administrator, NT AUTHORITY\SYSTEM или еще что там...


    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6390 | Зарегистр. 28-08-2008 | Отправлено: 21:57 29-11-2010
    01MDM



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

    Код:
     
    net user %username%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:00 29-11-2010 | Исправлено: 01MDM, 22:01 29-11-2010
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    спасибо, а я еще вроде другой вывод видел...
    не знаете больше способов? с первым проблем нет, если что нужное вырежу, просто память терзают сомнения о другом способе.
     
    Добавлено:
    И хотя я уже получил информацию, которая меня интересовала, но указанный вами способ мне в этом не помог, так что очень хотелось бы услышать другой вариант, для общего развития.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6390 | Зарегистр. 28-08-2008 | Отправлено: 22:14 29-11-2010 | Исправлено: Alukardd, 22:21 29-11-2010
    01MDM



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

    Код:
     
    wmic useraccount get * /value
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:55 29-11-2010
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    и опять не то) я просто сам не смог найти в поисковиках ответа... поэтому надеялся что кто-нибудь да знает или хотя бы частично помнит как это...
     
    давайте еще раз суть - "надо узнать с какими правами запущена командная оболочка" - наверное я до этого не так выразился вам... извиняюсь...
    т.е. если войдя за пользователя запустить cmd.exe через runas, то надо получить в ответ на команду(ту что мне не известна ) права которыми на данный момент имеет запущенная оболочка.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6390 | Зарегистр. 28-08-2008 | Отправлено: 15:45 30-11-2010 | Исправлено: Alukardd, 16:29 30-11-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alukardd твой вопрос про права делится на два - к каким административным группам допуска принадлежит пользователь, от которого запущена программа, и доступны ли ей в данной сессии права администратора.
     
    вторая половина вопроса - от того что в висте и семерке программа, запущенная администратором, вовсе не обязана иметь права администратора, и вычислить свои текущие права -  некоторая проблема.
     
    а простая принадлежность NT AUTHORITY\SYSTEM, а также Users, Administrators, Power Users, и прочим группам - замечательно выясняются из %user" и net user %user% /domain ...

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 17:30 30-11-2010 | Исправлено: wolf0425, 19:02 30-11-2010
    Free_Soft



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

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 19:11 30-11-2010 | Исправлено: Free_Soft, 01:34 01-12-2010
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    нет меня интересует именно права командной оболочки. Не пользователя вошедшего в систему а самой оболочки!

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6390 | Зарегистр. 28-08-2008 | Отправлено: 19:23 30-11-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alukardd
    Узнать от чьего имени запущен процесс можно так, на примере calc.exe:

    Код:
     
    @echo off
    setlocal
     
    set "exec=wmic process where name^="calc.exe" call getowner"
     
    for /f "tokens=1,2 delims==; " %%i in ('%exec% ^| findstr /i "domain user"') do (
     
        set "%%~i=%%~j"
     
    )
    echo %domain%\%user%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:43 30-11-2010 | Исправлено: 01MDM, 20:44 30-11-2010
    king_stiven

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

    Цитата:
    подскажите как прибить дублирующиеся строки

    sed -n "G; s/\n/&&/; /^\(.*\n\).*\n\1/d; s/\n//; h; P" "%file1%"> "%file%"

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 21:24 30-11-2010
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    да тоже вариант, в некотором роде выводит... для моей задачи просто меняется на cmd.exe и получаем какие у нас права.
    правда если это надо просто посмотреть и дальше с этой переменной работать не требуется, то проще открыть Process Explorer...
     
    p.s. а вообще я в смятении мб я юзал когда-то команду не встроенную, а так же вызывающую какую-нить прогу?

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6390 | Зарегистр. 28-08-2008 | Отправлено: 21:41 30-11-2010
    Free_Soft



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

    Код:
    for /f "delims=*" %%a in ('"wmic /namespace:\\root\cimv2 path ... where (ID=...) call activate"')...

    выдает следующее сообщение:

    Код:
    ОШИБКА:
    Код = 0x8007000d
    Описание = Недопустимые данные.
    Услуга = Win32

    как загнать в переменную только выделенное жирным?

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 00:07 01-12-2010 | Исправлено: Free_Soft, 00:09 01-12-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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru