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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    mem0rizer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to 01MDM:
     
    То, что надо. Благодарю.

    Всего записей: 120 | Зарегистр. 10-08-2010 | Отправлено: 19:30 04-03-2011
    Mr_Hat



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

    Код:
    REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /f "Common Desktop"

     
    вывод
     
    Код:
     Common Desktop    REG_SZ    C:\Users\Public\Desktop

    Теперь мне необходимо из этого получить C:\Users\Public\Desktop и облечь в  переменную Desktop
     
    только как сделать ума не приложу

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 01:22 05-03-2011
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mr_Hat

    Код:
    set "KEY="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Desktop""
    for /f "tokens=3*" %%a in ('REG QUERY %KEY%') do set "Desktop=%%b"

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 03:47 05-03-2011
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush
    Весьма признателен, работает с латиницей.
    но теперь возникла другая проблема - кодировка КИРИЛИЦЫ

    Цитата:
    "Desktop=C:\Documents and Settings\All Users\&#9576;рсюўшщ ёЄюы"

    chcp 1251 - не помогает
    в идеале должно быть так
    Цитата:
    c:\Documents and Settings\All Users\Рабочий стол
     
     
    может есть какие то более простые пути определения нахождения пути для разных OS ?
     
     
     
     
     

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 03:58 05-03-2011 | Исправлено: Mr_Hat, 04:09 05-03-2011
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mr_Hat

    Цитата:
    chcp 1251 - не помогает

    Не могу смоделировать - у меня нормально отображается при chcp 1251.
     
    Добавлено:

    Цитата:
    может есть какие то более простые пути определения нахождения пути для разных OS ?  

    %ALLUSERSPROFILE%\Рабочий стол

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 04:14 05-03-2011
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush
    Весьма странно. у тебя OS какая ?
    я проверяю на виртуалке Win Xp Pro SP3 Ru x32
    там имена папок в реестре кирилицей, на Семерке латиницей.  так что в случае с 7кой проблемы не возникает..
     

    Цитата:
    может есть какие то более простые пути определения нахождения пути для разных OS ?  
     
    %ALLUSERSPROFILE%\Рабочий стол

     
    ну этот вариант не универсален, так как папки Рабочий стол в семерке нет, там Desktop,
    а стало быть не сработает.
    хотя конечно просто не спорю, хотя хотелось бы все же добиться универсальности.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 04:23 05-03-2011 | Исправлено: Mr_Hat, 04:29 05-03-2011
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mr_Hat

    Цитата:
    Весьма странно. у тебя OS какая ?

    такая же.
    Попробуй так:

    Код:
    @set @x=0/*
    @echo off
    for /f "tokens=*" %%a in ('cscript /nologo /e:javascript %0') do set "Desktop=%%a"
    echo %Desktop%
    pause>nul
    goto:eof
    */
    WScript.Echo(WScript.CreateObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));

     
    Добавлено:
    Или так:

    Код:
    for /f "tokens=*" %%a in ('mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(new ActiveXObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));close();"') do set "Desktop=%%a"

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 05:00 05-03-2011
    Mr_Hat



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

    Цитата:
    @set @x=0/*  
    @echo off  
    for /f "tokens=*" %%a in ('cscript /nologo /e:javascript %0') do set "Desktop=%%a"  
    echo %Desktop%  
    pause>nul  
    goto:eof  
    */  
    WScript.Echo(WScript.CreateObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));

     
    В этом случае отображение кириллицы верно, но оно вроде не переменная которую можно использовать далее в командном файле.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 05:24 05-03-2011
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mr_Hat

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

    Почему?
    Оно также как и раньше в переменной %Desktop%

    Код:
    @set @x=0/*  
     
     
     
    <эдесь можно писать
    все что пожелаешь
    в батнике>
     
     
     
     
    for /f "tokens=*" %%a in ('cscript /nologo /e:javascript %0') do set "Desktop=%%a"  
     
     
     
    <эдесь можно писать
    все что пожелаешь
    в батнике>
     
     
     
    goto:eof  
    */  
    WScript.Echo(WScript.CreateObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 05:32 05-03-2011 | Исправлено: Rush, 05:35 05-03-2011
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush
    Буду пробовать, только соберу все до кучи..
     
    Добавлено:
     
    На виртуалке Win  XP Pro Rus Sp3 x32 - ok
                         Win XP Pro Rus Sp2 x64 - ok
                         Win 7 Home advansed Rus x64 - ok
                         Win 7 Home advansed Rus x32 - ok
     
    Выражаю тебе свою огромную благодарность

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 06:08 05-03-2011 | Исправлено: Mr_Hat, 06:30 05-03-2011
    Free_Soft



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

    ----------
    На вашей перфокартѣ обнаруженъ вирусъ, механизмъ будетъ остановленъ.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 13:22 05-03-2011 | Исправлено: Free_Soft, 00:09 08-03-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я снова про "увидеть все компы на роутере". Можно по телнету зайти на роутер и исполнить
    arp show
    но как это дело присобачить на автопроверку?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:30 05-03-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    king_stiven
    Можно, только виндовый телнет не пойдет, надо что-нить по продвинутей, который умеет сценарии выполнять, вывод в файл записывать.
    В составе PuTTY есть утиль plink, которая вроде бы все это умеет.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:50 05-03-2011
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:54 05-03-2011
    mem0rizer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Есть такой скриптец, каждые 1,5 минуты устанавливающий соединение с инетом:
     
    @echo off
    echo = %date% %time% -- START =
     
    rem Все настройки вынесены в этот блок:
     
    rem Имя подключения:
    set DialName=ХХХХХХХХХ
    rem Логин:
    set Login=ХХХХХХХХХ
    rem Пароль:
    set Password=ХХХХХХХХХ
     
    :start
    echo.
    echo %date% %time%
    echo.
    rasdial %DialName% %Login% %Password%
    echo.
    goto end
     
    :end
    echo.
    choice /C:C /T:C,90 /N Pause 1,5 minutes. [C]onnect
    goto start
    :1
    goto start
     
    нужно добавить туда еще командочку типа "rasdial %DialName% /disconnect", которая должна выполняться каждые 90 минут - как это сделать (и можно ли), не привлекая WSH и сторонних программ и файлов, кроме "CHOISE.COM"?

    Всего записей: 120 | Зарегистр. 10-08-2010 | Отправлено: 20:03 05-03-2011 | Исправлено: mem0rizer, 20:19 05-03-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mem0rizer да влепи в начало :start  счетчик цикла и вызывай /disconnect на каждый 60й раз, нафиг тебе точное то время там?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:13 05-03-2011 | Исправлено: wolf0425, 21:16 05-03-2011
    mem0rizer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to wolf0425:
     
    Ну, собственно, у меня пров - мудак: примерно каждые 90 минут происходит "залипание" соединения (данные не идут, но подключение не разрывается) и случаются разрывы соединения, но уже рандомно - для борьбы со второй напастью и служит этот скрипт, а вот для борьбы с первой я и хочу второй таймер замутить...

    Всего записей: 120 | Зарегистр. 10-08-2010 | Отправлено: 21:39 05-03-2011 | Исправлено: mem0rizer, 21:40 05-03-2011
    Misha1989



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mem0rizer
    Так wolf0425 правильно сказал - таймер тут особо не нужен, делаешь счётчик и на 60-м проходе перед установкой соединения делаешь дисконнект.

    Всего записей: 359 | Зарегистр. 22-03-2010 | Отправлено: 21:45 05-03-2011
    mem0rizer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to Misha1989:
    to wolf0425:
     
    Все-все, до меня дошло, сделал счетчик - работает, как надо. Вторые сутки на работе - бошка уже туго соображает Благодарю за помощь.

    Всего записей: 120 | Зарегистр. 10-08-2010 | Отправлено: 21:57 05-03-2011
    INKOGNI



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

    Всего записей: 1355 | Зарегистр. 09-01-2006 | Отправлено: 23:07 06-03-2011
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru