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

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Подробнее...
    но я не думаю что там вирус. когда ей пользовался недолго. не заметил ничего такого
     
    Добавлено:
    битдефендер и касперский гаварят что там вирус, доктор говорит что нет. в таких случаях я обычно склоняюсь что это вирус.  пользоовался ей года полтора два назад, раз сохранил чем то она пригодилась. может тогда ее по другому распозновало. не помню уже. но проверяю все такое левое

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 02:42 06-12-2010 | Исправлено: bomzzz, 02:43 06-12-2010
    Joo1z



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

    Код:
    rundll32 printui.dll,PrintUIEntry /in /q /n\\servername\printername

    По принтерам, глянь здесь, может поможет.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 13:09 06-12-2010 | Исправлено: Joo1z, 13:24 06-12-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а существует какой-то штатный способ определить - какой юзер сейчас залогинен на \\workstation1 ?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 19:24 06-12-2010
    res2001



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

    Цитата:
    а существует какой-то штатный способ определить - какой юзер сейчас залогинен на \\workstation1 ?

     
    Нагуглил вариант на vbs:

    Код:
    strComputer = "workstation1"
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colComputer = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
     
    For Each objComputer in colComputer
    Wscript.Echo objComputer.UserName
    Next

    но он у меня не заработал.
     
    Есть утилита PsLoggedon.exe из состава утилит от sysinternals.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:17 07-12-2010
    wolf0425



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

    Цитата:
    Есть утилита PsLoggedon.exe из состава утилит от sysinternals.
    эта приблуда как-то совсем не то показывает, причем выполняется только локально...
     
    ладно, подумав я решил, что парсинга вывода tasklist для моих целей будет достаточно...

    Код:
    1>tempfile set "user=unknown user"
    tasklist /s \\%~1 /v /fi "imagename eq explorer.exe" | sed -r -n "/^explorer.exe/ s/^.{88}([^ ]*).*$/\1/igp" >tempfile
    set /p user=<tempfile

     
    теперь надо что-то придумать чтоб на принтерах не вешаться

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:11 07-12-2010 | Исправлено: wolf0425, 16:04 07-12-2010
    res2001



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

    Цитата:
    эта приблуда как-то совсем не то показывает, причем выполняется только локально...  

    Что она у тебя показывает?
    Я пол сети своей просканировал - показывает то что надо, правда не серверах почему-то не показывает, но на серверах терминальные юзера.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:08 07-12-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    никто не сталкивался с проблемой expand?
    суть в том, что на ХР при извлечении она не понимает русские буквы в пути назначения

    Код:
    expand My.cab -f:1.exe "Моя папка"

    но это только на Хрюше, на Win7 все норм и с латиницей и с кириллицей. Причем конструкция

    Код:
    expand -r My.ex_
    отрабатывает нормально с кириллицей
    Баг экспанда или что-то не так делаю?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 00:43 08-12-2010 | Исправлено: Free_Soft, 00:44 08-12-2010
    res2001



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

    Цитата:
    что на ХР при извлечении она не понимает русские буквы в пути назначения  

    Аналогично. Да и вообще эта тулза кривая какая-то, я использую 7z для распаковки кабов.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:46 08-12-2010
    Zhidkoff



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

    Всего записей: 4 | Зарегистр. 16-09-2006 | Отправлено: 09:11 08-12-2010
    Free_Soft



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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 09:17 08-12-2010 | Исправлено: Free_Soft, 11:13 08-12-2010
    BVV63



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

    Цитата:
    нестабильная связь, которая периодически падает

    Надолго падает? У команды "Copy" есть ключ /Z для сетевого копирования, по идее если связь обрывается, затем восстанавливается, то "Copy /Z" должно восстановить копирование. Правда, сам не проверял .

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 11:37 08-12-2010
    Zhidkoff



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

    Цитата:
    Надолго падает?

     
    Бывает по пол дня валяется

    Всего записей: 4 | Зарегистр. 16-09-2006 | Отправлено: 11:52 08-12-2010 | Исправлено: Zhidkoff, 11:52 08-12-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zhidkoff
    Можно, наверное, тогда зациклить:

    Код:
    :0
    Copy /Y /Z ... || GoTo :0

    Если копирование не пройдёт, начнётся заново.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 11:58 08-12-2010
    Zhidkoff



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
     
    Хм, нужно попробовать, спасибо.

    Всего записей: 4 | Зарегистр. 16-09-2006 | Отправлено: 12:07 08-12-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zhidkoff
    может, всё-таки, целесообразнее лить по ftp-протоколу ? Есть связь - льём с докачками. Нету связи - ждём её появления.

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 13:11 08-12-2010
    Zhidkoff



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

    Всего записей: 4 | Зарегистр. 16-09-2006 | Отправлено: 13:24 08-12-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Psloggedon прекрасно работает и на удаленных машинах, хотя иногда очень тормозит. Для себя писал такой скрипт:
     

    Код:
    @echo off
    setlocal
    set pc=%1
    if /i "%pc%"=="" set pc=%computername%
    if "%pc:~0,2%"=="\\" set pc=%pc:~2%
    Ping -n 1 %pc% >Nul
    If ErrorLevel 1 (
    ECHO Љ®¬ЇмовҐа %pc% -Ґ ¤®бвгЇҐ- Ї® бҐвЁ.
    ping -n 2 127.0.0.1 >Nul
    goto :EOF
    )
    for /f "tokens=3,*" %%t in ('reg query "\\%pc%\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion ^2^>nul ^| findstr 6.1') do GOTO WIN7
    set dpath=Software\Microsoft\Windows\CurrentVersion\Explorer
    for /f "tokens=*" %%a in ('reg query \\%pc%\HKU ^2^>nul^| findstr "HKEY_USERS\S-1-5-21" ^| findstr Classes') do set rpath=%%a\%dpath%
    for /f "tokens=5,*" %%l in ('reg query \\%pc%\%rpath:_Classes=% /v "Logon User Name" ^2^>nul') do (
    rem echo %%l    -    %pc%>>whologon.txt
    echo %%l    -    %pc%
    )
    GOTO :EOF
    :WIN7
    for /f "tokens=*" %%a in ('reg query \\%pc%\HKU ^2^>nul^| findstr "HKEY_USERS\S-1-5-21" ^| findstr Classes') do set rpath=%%a\Volatile Environment
    for /f "tokens=3,*" %%l in ('reg query "\\%pc%\%rpath:_Classes=%" /v UserName ^2^>nul') do (
    rem echo %%l    -    %pc%>>whologon.txt
    echo %%l    -    %pc%
    )
     

    Не всегда, правда, корректно отрабатывает.
     
    Соответственно для сканирования всей сети юзал строку:

    Код:
    for /f %a in ('net view ^| findstr \\') do скриптвыше.cmd %a

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 14:43 08-12-2010 | Исправлено: Joo1z, 14:54 08-12-2010
    wolf0425



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

    Цитата:
    wolf0425
    Psloggedon прекрасно работает и на удаленных машинах, хотя иногда очень тормозит.  

    на удаленных работает, разобрался, а что странно она иногда пишет - осталось.

    Код:
    D:\soft\SysinternalsSuite>PsLoggedon.exe \\192.168.х.ххх
     
    PsLoggedon v1.34 - See who's logged on
    Copyright (C) 2000-2010 Mark Russinovich
    Sysinternals - www.sysinternals.com
     
    Users logged on locally:
         <unknown time>             xx-16\xxxx
         <unknown time>             xx-16\?????????????
         <unknown time>             xxxxx\x.xxxxxxxx
         <unknown time>             xxxxx\xxxxx.xxxxxxx
         <unknown time>             xxxxx\xxxx.xxxxxxx
         <unknown time>             xxxxx\xxxxx.xxxxxxxx
         <unknown time>             xxxxx\xxxx.xxxxxxxxxx
         08.12.2010 11:33:55        xxxxx\xxxx.xxxxxxxx
         <unknown time>             xxxxx\x.xxxxxx
     
    Users logged on via resource shaxxx:
         08.12.2010 14:55:12        xxxxx\x.xxxxxx

    вот только что запустил (буковками х заменены буквы в юзерах/домене, ибо нефиг)
    такое парсить конечно тоже можно, но tasklist парсить не сложнее...
     
    особенно эротично смотрится строка из 13 знаков "?"
    я конечно догадываюсь что это хотели написать Администратор, но почему-то не смогли - но для прекрасно работающей программы это как-то не симпатично...
     
    а в тривиальных случаях - да, из пользователей показывает просто одну строку (где время) - создает видимость прекрасной работы
     
    Добавлено:

    Цитата:
    Соответственно для сканирования всей сети юзал строку:  
    мне только кажется или у твоего скрипта - тоже некоторые проблемы (тормоза), когда ему подсовывают просканировать ip принтерa?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:08 08-12-2010 | Исправлено: wolf0425, 15:30 08-12-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    А зачем ему принтер подсовывать? Конечно будет тормозить, т.к. reg query будет ждать ответа. Плюс я обычно работаю с сетевыми именами, чего принтер лишен.
     
    Ну или чтобы скрипт не отвлекался на всякие принтеры делать проверку nslookup %ip% | findstr Name:

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 15:33 08-12-2010 | Исправлено: Joo1z, 15:47 08-12-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zhidkoff
    Цитата:
    Как это, как это?
    на одной стороне ставится ftp-сервер. Лидером, я считаю, Gene6 FTP Server. А на второй стороне с помощью штатного ftp.exe этот файл скачивается пакетным файлом. Правда, не уверен умеет ли штатный ftp.exe делать докачку. Если нет, то тогда есть ещё консольные утилиты wget и ncftp. Кто-нибудь из них точно умеет докачивать.
    А вообще, я бы сделал связку Gene6 с одной стороны и ReGet с другой стороны. Т.е. вообще без пакетных файлов. На отдающей машине работает Гена. А на принимающей машине Регет со своим встроенным планировщиком. Регет может быть запущен как круглосуточно, так и запускаться в опредленное время и стартовать закачку.

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 16:01 08-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru