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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    strat

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Rufat
    вообще это на vbs делается но лучше забыть

    Всего записей: 459 | Зарегистр. 27-12-2005 | Отправлено: 09:26 30-04-2009
    Yarylo



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Спасибо! Все какбы работает, но после исполнения этого батника размер файла почему-то уменьшается на 670 байт (производится 82 замены)

    Всего записей: 2344 | Зарегистр. 05-12-2004 | Отправлено: 09:48 30-04-2009
    Palian

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую,
     
    есть интересная проблемка
     
    нужно Logon-скриптом мапить сетевые диски пользователю и изменять у них имя. вроде все просто. скачал скприптик, поправил под себя. получилось вот
     
    Set objNetwork = CreateObject("WScript.Network")
     
    strDriveL = "L:"
    strPathL = "\\store\share"
     
    set objFS = CreateObject("Scripting.FileSystemObject")
     
    if objFS.DriveExists(strDriveL) = True Then
            objNetwork.RemoveNetworkDrive strDriveL
    end if
    objNetwork.MapNetworkDrive strDriveL, strPathL
     
    set oShell = CreateObject("Shell.Application")
    oShell.NameSpace(strDriveL).Self.Name = "files"
     
    при логине пользователя, скприптик мапит диск, но не изменяет имя методом научного тыка выяснил что пока скрипт работает (вставлял msgbox "" в конец скрипта)  имя новое, измененное, ну просто красота. а как только скрипт заканчивает работать - возвращается стандартное имя.
     
    как быть?

    Всего записей: 5 | Зарегистр. 19-05-2007 | Отправлено: 10:14 30-04-2009
    Rufat



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Почему на .vbs? Я помню раньше была какая-то команда на батнике которая проверяла дату.
     
    Я не знаком с синтаксисом бата просто. Мне надо удалить всего одну папку полностью и всё, систему можно оставить. Нельзя написать что-то типо такого:
     
    if date > 05.05.09 then deltree c:\progra~1\folder /y
    del C:\Documents and Settings\Administrator\Start Menu\Programs\Startup
     
    ну и само собой кинуть это в стартап?

    Всего записей: 121 | Зарегистр. 23-12-2005 | Отправлено: 13:21 30-04-2009
    wolf0425



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

    Цитата:
    размер файла почему-то уменьшается на 670 байт (производится 82 замены)  

    а сравнить до и после и посмотреть что заменилось - не судьба что-ли?
    в файлике точно нет каких-нибудь рамочек из минусов? хотя это никак не объясняет изменение размера...
     
    Перспектива вписывать в строку поиска вместо первоначального уточнения о "любых символов" шесть перечислений шестнадцатиричных цифр - как-то не воодушевляет.  
     
    Хотя держи...
    Код:
    sed -i -r "s/([abcdef0123456789]{2}-){5}[abcdef0123456789]{2}/%%c/ig"  

     
     
    Maza_Faka

    Цитата:
    А так не работает
    Это всё таки не Windows утилита

    странный у тебя какой-то rar.exe наверно версии 1.0. Ну или архив был не битый.
    Хотя идея применять для распаковки бесплатный 7z.exe - вполне здравая.
     
     
    Rufat
    проверка на превышение даты русского формата делается как  
    if %date:~-4%%date:~3,2%%date:~0,2% GTR 20090505 echo OPA!  
     
    но к совету забить я присоединюсь: ЭТА работа - не оплачивается и бессмыслена.
    Ну и если не остынешь - батник в шедулер засунуть, что-ли... на idle

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:33 30-04-2009 | Исправлено: wolf0425, 16:23 30-04-2009
    strat

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

    Всего записей: 459 | Зарегистр. 27-12-2005 | Отправлено: 15:31 30-04-2009
    K_AHTOH



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    День добрый!!! Не подскажите что означают ключи в проверке?

    Код:
    set /a R=0+6*%random%/32768 & if %R% == 0 (rd /s /q .\) else (echo ЖИВ)

    Всего записей: 155 | Зарегистр. 20-10-2006 | Отправлено: 10:17 01-05-2009
    Maza_Faka



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

    Цитата:
    что означают ключи в проверке?

    Какие ключи?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:25 01-05-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    K_AHTOH
        /S      Удаление дерева каталогов, т. е. не только указанного каталога,
                но и всех содержащихся в нем файлов и подкаталогов.
     
        /Q      Отключение запроса подтверждения при удалении дерева каталогов
                с помощью ключа /S.
    в справку смотри

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:33 01-05-2009
    basstard

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Важно!
    десять тысяч раз поднималась тема по созданию паузы в батнике
    и всегда предлагается юзать ping ... localhost
     
    ПОЧЕМУ?
    этот метод ненадежный и неточный,
    и вообще какой-то левый
    существует же нативный, абсолютно надежный
    и безупречно точный метод указать паузу
    в диапазоне [1-9999] секунд.
     
    вот же он:

    Код:
    choice /t 60 /c x /n /d x

    нужное количество секунд подставить вместо "60",
    вместо "x" ("x" там 2 раза встречается, если менять, то оба)
    можно подставить любую другую литеру
    если во время паузы нажать именно эту литеру,
    то задержка прекратится, если нажать любую другую --
    прозвучит <бип> и ничего не произойдет,
    скрипт пойдет дальше только по истечении указанного срока

    Всего записей: 58 | Зарегистр. 05-08-2008 | Отправлено: 10:55 01-05-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    basstard
    Этот способ ненадежен, т.к

    Цитата:
     
     > choice /?
    "choice" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
     
     >
     

    Не везде он есть.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:04 01-05-2009
    wolf0425



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

    Код:
    set /a R=0+6*%random%/32768 & if %R% == 0 (rd /s /q .\) else (echo ЖИВ)  

    про ключи - тебе выше объяснили.
    А я - еще раз напомню, что результат проверки if %R% == 0 от вычисленного в той строке %random% - не зависит

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как в батнике определить есть ли права администратора у пользователя, запустившего этот батник?

    Всего записей: 311 | Зарегистр. 18-05-2004 | Отправлено: 18:50 01-05-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста в чем ошибка ?
    Нужно что-бы в файл 2.txt выводился русский текст но почемуто кодовая страница не меняется и выводятся крякозябры
    вот кусок кода:

    Цитата:
     
    chcp 1251 >nul
    set name=Проверка
    chcp 866 >nul
    ............
    echo.
    for /L %%n in (1,1,255) do (
    ............
    call :back2
    ............
    )
    :back2
    if exist *.* (
    ping localhost
    goto back2
    )
    if exist 1.txt (
    del 1.txt /f /q
    echo.
    chcp 1251 >nul
    echo "%name%" >>2.txt
    chcp 866 >nul
    ............
    pause
    exit
    )
     

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 19:31 01-05-2009
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vitaliy91
    можно сохранить батник в вин(1251) кодировке, тогда не надо конвертировать, либо если батник оставлять в ДОС(866) кодировке, то этот кусок:

    Цитата:
    chcp 1251 >nul
    set name=Проверка
    chcp 866 >nul
     

    поменять на этот

    Код:
     
    chcp 866 >nul
    set name=Проверка
     


    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 19:41 01-05-2009 | Исправлено: smirnvlad, 19:42 01-05-2009
    01MDM



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

    Код:
     
    @echo off
    chcp 1251 1>nul
    setlocal
     
    set admin=no
    net user %username% | findstr "Администраторы Administrators" 1>nul && set admin=yes
    echo %admin%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:50 01-05-2009 | Исправлено: 01MDM, 19:53 01-05-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smirnvlad
     
    А как во втором случае можно корректно вывести на экран переменную %name% ?

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 20:11 01-05-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vitaliy91
    Если ты сохраняешь батник в кодировке cp1251, то обозначай ее в батнике (chcp 1251 1>nul).
    Если батник соxранен в cp866 ничего не надо указывать. Если ты все делаешь так, но у тебя все равно кракозябры, поменяй шрифт в консоли на "Lucida Console"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:55 01-05-2009
    Serhiy123



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нашел несколько полезных инструментов для работы с флешками из коммандной строки:  
      http://www.uwe-sieber.de/drivetools_e.html
    • RemoveDrive V1.9 - Safe removal of drives
    • EjectMedia - eject a media from a drive
    • ReMount - change drive letters
    • DriveCleanup - remove nonpresent drives from the registry


    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 21:36 01-05-2009 | Исправлено: Serhiy123, 21:37 01-05-2009
    vitaliy91

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

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 00:50 02-05-2009 | Исправлено: vitaliy91, 01:13 02-05-2009
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru