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

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

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

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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуйста со скриптом :
    в папке Svalka есть куча *.rar файлов и их описаний *.rar.txt
    в некторых *.rar файлах есть папка "заработок в интернете" или "ЗАРАБАТЫВАЙ с НАМИ!!!"  или "+" или "Как заработать в интернете"
    или
    файлы "GOLD-аккаунт на Depositfiles.doc" и "03.04.08.jpg" или "Прочитайте меня!!!.doc" и "Thumbs.db"
    требуется (если они есть) удалить все эти пакпки и файлы из архивов оставив остальное содержимое
     
    заранее спасибо

    Всего записей: 451 | Зарегистр. 14-11-2005 | Отправлено: 04:37 27-10-2008
    Sk09



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста! Как то пол года назад мне сдесь помогли с батником, который выполняет следующее действие: при вставке диска в привод он тупо копирует содержимое в определенную папку.
    Вот теперь мне понадобилось задать маску копируемых файлов - например *.exe, *123*.* и что то в этом роде. Вобщем надо как то добавить несколько масок, по которым будут выбираться файлы и копироваться в определенную папку. Самое главное что бы это проходило в фоновом режиме - тоесть на не видно было бы что происходит, кроме как мигания индикатора привода. Подскажите что доделать пожалуйста.
    Вот тот код:

    Код:
    @echo off
    chcp 1251 > nul
    Title y
    "C:\1\cmdow.exe" "y" /HID
    :begin
    ping -n 16 -w 1000 localhost > nul
    for /f "tokens=*" %%c in ('dir d:\ /b') do (
        for /f "tokens=1,2* delims=:" %%e in ("%time%") do (
            xcopy d:\ "c:\1\Copy\%date%_%%e.%%f.%%g" /s /e /h /r /i
            ping -n 640 -w 1000 localhost > nul
            goto :begin
        )
    )
    goto :begin


    Всего записей: 386 | Зарегистр. 15-09-2005 | Отправлено: 08:56 27-10-2008 | Исправлено: Sk09, 09:02 27-10-2008
    ev_robert



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    кто подскажет как завершать командой  удаленные сессии всех пользователей?  
    моно конечно  
    logoff rdp-tcp#29  
    но откуда знать кто когда под каким номером будет.  
    не хочется в батнике писать  
    logoff rdp-tcp#1  
    logoff rdp-tcp#2  
    logoff rdp-tcp#3  
    .  
    .  
    .  
    .  
    и так неизвестно до какого.  
    моно ли как то по именам пользователей или всех сразу?

    Всего записей: 295 | Зарегистр. 07-02-2003 | Отправлено: 10:12 27-10-2008 | Исправлено: ev_robert, 10:24 27-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ev_robert
    в шапке смотри смежные темы
     
    Sk09
    а что трудно посмотреть xcopy/?
     
    /EXCLUDE:file1[+file2][+file3]...
                 Указывает список файлов, содержащих строки. Каждая строка
                 должна находиться в отдельной линии в файлах.  Если одна из
                 строк совпадает с любой частью абсолютного пути копируемого
                 файла, то такой файл копироваться не будет.  Например,
                 указывание таких строк, как \\obj\\ или .obj, исключает
                 из копирования все файлы в папке obj и, соответственно, все
                 файлы с расширением .obj.
     
    Shadowland
    rar/?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:13 27-10-2008
    01MDM



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

    Цитата:
    и так неизвестно до какого.

    Не известно сколько пользователей?
     
    На твоем примере:

    Код:
     
    @echo off
    for /l %%i in (0,1,666) do logoff rdp-tcp#%%i
     

    666 - кол-во пользователей
     
    Либо со списком пользователей в отдельном файле:

    Код:
     
    @echo off
    for /f "tokens=*" %%i in (list.txt) do logoff %%i
     

     
    PS. Это только предположение что надо сделать

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:13 27-10-2008
    Sk09



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Посмотреть то не трудно - я только в этом не очень разбираюсь....
    а с параметром /EXCLUDE:file1[+file2][+file3]... вообще что то никак не разберусь -  может кто подскажет что и куда подставить ?

    Всего записей: 386 | Зарегистр. 15-09-2005 | Отправлено: 12:53 27-10-2008 | Исправлено: Sk09, 12:54 27-10-2008
    M1chA



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

    Всего записей: 283 | Зарегистр. 11-10-2006 | Отправлено: 13:33 27-10-2008 | Исправлено: M1chA, 15:38 27-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sk09
    да вроде как справка на ломаном русском должна быть понятна
    создаешь файл исключений file1 и в нем списком пишешь нужные исключения каждое с новой строки
    файлов исключений может быть несколько, как приведено в синтаксисе
    времени тестить нет
    а вообще, как предвещал предыдущий оратор, есть утилита robocopy
    и нет времени тестить все это

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 14:09 27-10-2008
    king_stiven

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

    Код:
    @echo off
    chcp 1251 > nul
    Title y
    "C:\1\cmdow.exe" "y" /HID
    :begin
    ping -n 16 -w 1000 localhost > nul
    for /f "tokens=1,2* delims=:" %%e in ("%time%") do (
        for /f "tokens=*" %%l in ('dir d:\*.exe d:\*.xls /b /s') do (
            xcopy "%%l" "c:\1\Copy%%~pl%date%_%%e.%%f.%%g" /s /e /h /r /i
            ping -n 640 -w 1000 localhost > nul
            goto :begin
        )
    )
    goto :begin

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 21:04 27-10-2008 | Исправлено: king_stiven, 21:57 27-10-2008
    rmvl

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, просвятите, плз.
     
    Задача - получение информации о членстве текущего пользователя в группах, и выполнение скриптов, расположенных в каталогах с именами, совпадающими с именами групп.
     
    Написал такой скрипт
    --------------------------
    @echo off
     
    setlocal enabledelayedexpansion
     
    set user=%username%
    set scripts=.
     
    for /F "usebackq tokens=2 delims=*" %%i IN (`net user %user% /domain`) do (
        echo "%%i"
        IF EXIST "%scripts%\%%i" (
            for %%f in ("%scripts%\%%i\*.bat" "%scripts%\%%i\*.cmd") do (
                call "%%f"
            )  
        )
    )
    --------------------------
    Но есть одно но: долбаная net user использует форматированный вывод, и имена групп либо обрезаются, либо дополняются пробелами до фиксированной длины. Т.е. получаем результат:
    --------------------------
    D:\bin\logon>init.bat
    "Administrators       "
    "AdmExtAccess         "
    "Администраторы предпр"
    "Пользователи домена  "
    "Администраторы домена"
    "Adm                  "
    "Администраторы схемы "
    --------------------------
    Не так страшно (в моем случае), что обрезаются длинные имена, как наличие пробелов в конце коротких.
     
    Смотрел set /?, нашел т.н. строки расширения. Например
    echo "%var:~0,-1%"      
    печатает переменную var без последнего символа. Но, понятно - это не совсем то.
     
    А есть ли возможность тупо отрезать все пробелы в конце переменной? Или, как вариант, получить неформатированную информацию, без пробелов изначально?
     
    Заранее спасибо.
     
     
    Добавлено:
    Извиняюсь, плохо искал. А может, просто не то. Одним словом этот скрипт делает то, что мне надо.
     
    @echo off
     
    setlocal enabledelayedexpansion
     
    set domain1=domain
    set domain2=local
     
    set user=%username%
     
    set scripts=\\server\netlogon
     
    for /F "usebackq tokens=2 delims==," %%i IN (`dsget user "cn=%user%,CN=Users,DC=%domain1%,dc=%domain2%" -memberof`) do (
        echo "%%i"
        IF EXIST "%scripts%\%%i" (
            for %%f in ("%scripts%\%%i\*.bat" "%scripts%\%%i\*.cmd") do (
                call "%%f"
            )  
        )
    )

    Всего записей: 1 | Зарегистр. 28-11-2006 | Отправлено: 21:20 27-10-2008
    nick_kagan

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Поможите кто знает.!!!
     
    Как из ВАТ-файла произвести чтение первых N-байт?
    (желательно наверное каждый байт в свою переменную)
     
    Ужо похоже весь Инет перерыл - кроме чтения Текстового файла ничего не нашел..(

    Всего записей: 2 | Зарегистр. 24-07-2007 | Отправлено: 11:08 28-10-2008
    fixxer2

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сильно не пинайте, не работает следующий скрипт, возможно неправильно заданы переменные:
     
    @echo off
    title Обновление баз для цеха...  
     
    set loc=%loc%; D:\ЗП б 82\Базы\
    set dest_1=%dest_1%; \\C82-532-1\eco_data\DucneT4ep\
    if exist "%dest_1%" goto 1
    goto 2
    :1
    xcopy "%loc%База ЗП.xls" "%dest_1%" /F /Y /Z
    cmd
    :2
    echo Не удалось обновить цеху.
    pause
     
    Хочется просто проверить, доступно ли сетевое имя, и если доступно, то скопировать файл...

    Всего записей: 3 | Зарегистр. 28-10-2008 | Отправлено: 11:47 28-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приве6т люди!!Как делишки?
    Скажмите как сделать ввод пользователя по маске.
    Например надо чтобы пользователь ввел телефон в таком формате х ххх ххх ххх ххх
    или 8(код)ххх ххх ххх
    Если не подходит то переходим к ошибке и возвращаемся к вводу.
    Заранее спасибо.

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 13:34 28-10-2008
    noiseless

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fixxer2
    А так работает
     
    @echo off
    title Обновление баз для цеха...  
     
    set loc="D:\ЗП б 82\Базы"
    set dest_1="\\C82-532-1\eco_data\DucneT4ep"
    if exist "%dest_1%" goto 1
    goto 2
    :1
    xcopy "%loc%\База ЗП.xls" "%dest_1%" /F /Y /Z
    cmd
    :2
    echo Не удалось обновить цеху.
    pause

    Всего записей: 182 | Зарегистр. 06-02-2006 | Отправлено: 13:44 28-10-2008
    fixxer2

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    noiseless
    твой вариант не работает - пишет "недопустимое число параметров"
    я все перепробовал что знал....(

    Всего записей: 3 | Зарегистр. 28-10-2008 | Отправлено: 14:20 28-10-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fixxer2
    Голову не забивай ерундой, если сетевой диск недоступен, xcopy ничего копировать не будет просто.

    Код:
     
    xcopy source \\comp\destination /f /y /z >nul 2>&1
    if errorlevel 1 echo "Error"
     


    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 14:28 28-10-2008 | Исправлено: igor_andreev, 14:32 28-10-2008
    sL4yer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с батником. Надо батник который будет пинговать адреса сети от 192.168.1.1 до 192.168.1.255 и выводить на екран после каждого пропингованого адреса жив он или нет... Если такое возможно.

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 14:59 28-10-2008
    U235

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

    Код:
    for /L %%i in (1, 1, 255) do ping 192.168.1.%%i


    Всего записей: 725 | Зарегистр. 14-12-2005 | Отправлено: 15:57 28-10-2008 | Исправлено: U235, 15:59 28-10-2008
    fixxer2

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev, ваш пример работает, только можно ли source и \\comp\destination определить в самом начале в виде переменных? это нужно для того, чтобы можно было в дальнейшем легко менять пути. спасибо.

    Всего записей: 3 | Зарегистр. 28-10-2008 | Отправлено: 16:13 28-10-2008 | Исправлено: fixxer2, 16:22 28-10-2008
    sL4yer



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

    Цитата:
    for /L %%i in (1, 1, 255) do ping 192.168.1.%%i

    я попросил "пинговать адреса сети от 192.168.1.1 до 192.168.1.255 и выводить на екран после каждого пропингованого адреса жив он или нет" Т.е. мне не надо всю статистику, сколько пакетов послано, принято, какой % потерь и т.д. Мне надо только 1 строчку: "Host 192.168.1.x is UP!" в противном случаи "Host 192.168.1.x is DOWN!"

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 19:39 28-10-2008 | Исправлено: sL4yer, 19:42 28-10-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru