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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! Нужна помощь, задача довольно простая.
    Можно ли написать скрипт который будет менять настройки proxy в IE?
    указываемые на свойства - подключения - настройки сети
    буду благодарен за помощь )

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 20:33 11-01-2011
    ComradG



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

    Код:
    @echo off
     setlocal
      for /f "usebackq delims=" %%i in (
       `@mshta "javascript:var objShell = new ActiveXObject('Shell.Application'); var objFolder = objShell.BrowseForFolder(0, 'Choose folder:', 1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}'); try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(objFolder.Self.Path)}; catch (e){}; close();"`) do set fName=%%i
      if defined fName (
       echo %fName% was choosed.
      ) else (
       echo Terminated by user.
      )
     endlocal
    exit /b
    вот только как русскую локаль прикрутить не знаю!

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 22:07 11-01-2011
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F
    что-то типа:
    Код:
    reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d 192.168.1.1:8080

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 10:42 12-01-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо! Почти работает, только там надо еще удалить как то "AutoConfigURL", т.е. убрать галочку "использовать скрипт автоматической настройки" (

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 15:48 12-01-2011
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F
    Ну, по аналогии. Только надо знать имя этого параметра. Спроси в топике по реестру или вычисли самостоятельно с помощью regshot

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 16:53 12-01-2011
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно добавить в нижеприведённую команду параметр:  
    Копирует только те файлы-источники, которые не существуют в каталоге результата. Подскажите, пожалуйста, как это сделать ?  
     

    Цитата:
    xcopy a: b: /s /e

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 19:58 12-01-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737
    xcopy так не умеет. Она может наоборот, обновить только те файлы, которые уже есть в конечной папке. Или обновить существующие и скопировать которых нет.
     


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:59 12-01-2011
    berkut9737



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

    Цитата:
    xcopy так не умеет. Она может наоборот, обновить только те файлы, которые уже есть в конечной папке. Или обновить существующие и скопировать которых нет.

    Copy тоже не умеет (смотрел справочник).Тогда, с помощью какой команды выполнить данную операцию?

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 02:29 13-01-2011
    01MDM



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

    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 07:40 13-01-2011
    Pavlon333

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть батник, делает с помощью robocopy зеркалирование директории с сервера в директорию у пользователя. Процесс должен протекать прозрачно для пользователя, т.е. на экран не должно выводится никакой служебной информации.
    Проблема в том, что процесс этот продолжительный и иногда пользователь не дождавшись его окончания просто закрывает окно.
    Батник логи никакие не пишет.
     
    Можно ли прикрутить какой-нибудь простейший прогресс-бар для визуализации процесса?
    Например на основе команды ping -n 1 localhost > nul
     
    Пример используемого батника:
     
    @echo off
    robocopy \\откуда\ *.doc куда\ /Z /MIR /R:5 /W:15 >nul
    robocopy \\откуда\ *.txt куда\ /Z /MIR /R:5 /W:15 >nul
    robocopy \\откуда\ *.exe куда\ /Z /MIR /R:5 /W:15 >nul
     
    Может что-нибудь с использованием условия по errorlevel замутить? И запуском другого батника c прогрессом по команде call ?
     
     

    Всего записей: 42 | Зарегистр. 21-08-2006 | Отправлено: 12:22 13-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Pavlon333
    Вот пример прогресс-бара (в прошлой части этой темы пробегал.):

    Код:
    @ECHO OFF
    rem Количество экранных символов в одной строке
    set ScreenColums=80
    rem Установка режима экрана консоли
    mode con lines=50 cols=%ScreenColums%
    rem Количество итераций
    Set cntA=10
    set /a "N_Col=%ScreenColums%/%cntA%/2"
     
    for /l %%i in (1,1,%cntA%) do (
        >nul ping -n 1 127.0.0.1
        Call :Bar %%i
    )
    pause >nul & exit
     
    :Bar
    For /L %%a In (1,1,%N_Col%) Do <Nul Set /p "X= Ы"
    Set /a prsnt=%1*100/cntA
    Title %prsnt%%% Loaded
    exit /b

     
    Можешь прикрутить его к своему батнику.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:09 13-01-2011
    Pavlon333

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

    Цитата:
    res2001
    Вот пример прогресс-бара (в прошлой части этой темы пробегал.):  

     
    А как его привязать к процессу копирования? Чтобы этот прогресс был в течении копирования, а не прерывался ранее?

    Всего записей: 42 | Зарегистр. 21-08-2006 | Отправлено: 14:20 13-01-2011
    djveter



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот задачка:  
    Создать пакетный файл CONCAT.BAT, который выполнял бы следующую команду (синтаксис CONCAT файл1 файл2 файл3): объединяющее файлы файл1 и файл2 в одно и записывал его под именем файл3. Если файл1 или файл2 не существуют, должно выдаваться соответствующее сообщение "File (имя файла) is not exist."  
     
    Подскажите в чем ошибка???  
     
     
    @ echo off  
    title Vitalik3  
    if not exist d:\file1.*echo file1  
    is not exist  
    if not exist d:\file2.*echo file2  
    is not exist  
    copy d:\file1/*d:\file2.+*d:\file3.txt>NUL  
    echo  
    pause>NUL  
    exit

    Всего записей: 3 | Зарегистр. 13-01-2011 | Отправлено: 15:14 13-01-2011
    res2001



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

    Цитата:
    А как его привязать к процессу копирования? Чтобы этот прогресс был в течении копирования, а не прерывался ранее?

    По простому так (всего 3 итерации на каждое копирование):

    Код:
    @ECHO OFF
    rem Количество экранных символов в одной строке
    set ScreenColums=80
    rem Установка режима экрана консоли
    mode con lines=25 cols=%ScreenColums%
    rem Количество итераций
    Set cntA=3
    set /a "N_Col=%ScreenColums%/%cntA%/2"
     
    robocopy \\откуда\ *.doc куда\ /Z /MIR /R:5 /W:15 >nul
    Call :Bar 1
    robocopy \\откуда\ *.txt куда\ /Z /MIR /R:5 /W:15 >nul
    Call :Bar 2
    robocopy \\откуда\ *.exe куда\ /Z /MIR /R:5 /W:15 >nul  
    Call :Bar 3
     
    exit
     
    :Bar
    For /L %%a In (1,1,%N_Col%) Do <Nul Set /p "X= Ы"
    Set /a prsnt=%1*100/cntA
    Title %prsnt%%% Loaded
    exit /b  

    Если делать более продвинуто, то надо предварительно посчитать количество файлов и копировать каждый файл отдельно, после чего перерисовывать прогресс-бар.
     
    Добавлено:
    djveter
    Не понятно: у тебя file1 и file2 это конкретные файлы или это маски?
    Судя по тексту батника маски.
    Проверить на наличие файлов по маске с помощью if not exist нельзя - надо указывать конкретный файл.
    Сливать файлы по маске так:
    copy d:\file1.*+d:\file2.* d:\file3.txt >NUL  

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:59 13-01-2011
    Pavlon333

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

    Всего записей: 42 | Зарегистр. 21-08-2006 | Отправлено: 17:56 13-01-2011 | Исправлено: Pavlon333, 17:59 13-01-2011
    djveter



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
     
    у меня file1 и file2 это конкретные файлы *.txt, но одного из ниможет не существувать и тогда должно появляться сообщение "File (имя файла) is not exist."

    Всего записей: 3 | Зарегистр. 13-01-2011 | Отправлено: 18:46 13-01-2011 | Исправлено: djveter, 18:47 13-01-2011
    InSe0F



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

    Цитата:
    InSe0F
    что-то типа:
    Код:
    reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d 192.168.1.1:8080
     


    Цитата:
    Ну, по аналогии. Только надо знать имя этого параметра. Спроси в топике по реестру или вычисли самостоятельно с помощью regshot

    никак не получается, чтобы активировалось. у меня по умолчанию параметр Использовать прокси сервер выключен - и не активируется  

    Цитата:
    Спасибо! Почти работает, только там надо еще удалить как то "AutoConfigURL", т.е. убрать галочку "использовать скрипт автоматической настройки" (

    Аналогично с Автоконфигом, никак не могу найти параметр который за него отвечает
     
     
     
     

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 22:33 13-01-2011
    Elroir



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

    Цитата:
    никак не получается, чтобы активировалось. у меня по умолчанию параметр Использовать прокси сервер выключен - и не активируется  
    Аналогично с Автоконфигом, никак не могу найти параметр который за него отвечает  

     
    Попробуй так:

    Код:
     
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyEnable" /t REG_DWORD /d 00000001 /f
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyServer" /d 192.168.1.1:8080 /f
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "AutoConfigURL" /d 192.168.1.1/AutoConfig /f
     



    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:05 14-01-2011
    res2001



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

    Цитата:
    у меня file1 и file2 это конкретные файлы *.txt, но одного из ниможет не существувать и тогда должно появляться сообщение "File (имя файла) is not exist."

    Если конкретные, то и дай их конкретное название. Если file1.txt и file2.txt то так:

    Код:
    @ echo off  
    title Vitalik3  
    if not exist "d:\file1.txt" echo file1.txt is not exist  
    if not exist "d:\file2.txt" echo file2.txt is not exist  
    copy "d:\file1.txt"+"d:\file2.txt" "d:\file3.txt" >NUL  
    pause>NUL

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:43 14-01-2011 | Исправлено: res2001, 08:48 14-01-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кто подскажет, как можно проверить работоспособность wmic? с какими службами она завязана и без каких dll-ек не работает?
     
    Добавлено:

    Код:
    if not exist wmic.exe...

    это понятно, хотелось бы еще по каким-нибудь параметрам

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 14:19 14-01-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