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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    gobleep



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

    Цитата:
    Я попробую слепить из этого что-нибудь более удобоваримое, но не сейчас.  

     
    Хорошо, если / когда получится... 
     

    Цитата:
    Upd: http://scripts.sil.org/fontutils  
    если не лень, разберитесь с утилитой "addfont": похоже, это именно то, что нужно для вашей задачи...

     
    Я с языками программирования незнаком, самообучаюсь, думал что батник несложный будет...
    Пока нашёл утилиту fontinst.exe, буду решать как её "завернуть" в одну оболочку со шрифтами

    Всего записей: 33 | Зарегистр. 14-04-2016 | Отправлено: 11:47 15-01-2017 | Исправлено: gobleep, 11:12 16-01-2017
    Smitis



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

    Цитата:
    Помогите написать батник, для установки шрифтов в систему (win7), есть папка со шрифтами нужно все установить разом.
    По возможности как всё это упаковать в SFX-модуль.


    Цитата:
    Пока нашёл утилиту fontinst.exe, буду решать как её "завернуть" в одну оболочку со шрифтами

    По ссылке есть простенькая утилита fontreg: http://code.kliu.org/misc/fontreg/
    С ключом /copy устанавливает ВСЕ шрифты, которые находит рядом с собой в папке.
    Т.е., создаёте sfx winrar-ом или 7zip, который распаковывает все Ваши шрифты и fotreg во временную папку, запускает fotreg.exe /copy (можно fontreg.exe /move).
     
    Как вариант, создать простенький инсталятор на InnoSetup, там есть специальная опция FontInstall.

    ----------
    Разум когда-нибудь победит

    Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 11:47 16-01-2017
    gobleep



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smitis
    Спасибо, может посмотрю и fontreg. Сейчас упаковал winrar-ом fontinst.exe вместе со шрифтами, всё устанавливается как нужно, только запускать надо правой кнопкой "от имени администратора" но это мелочь...

    Всего записей: 33 | Зарегистр. 14-04-2016 | Отправлено: 16:53 16-01-2017
    ipmanyak



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

    Код:
     
    @echo off                                                    
    REM Poisk files large  then 300 bytes  and delete it          
    set maxsize=300                                              
    for /f "tokens=*" %%I in ('dir /b /s /a:-d "*.*"') do  (    
                                                                 
     echo %%~zI %%~fI                                            
     if %%~zI  geq %maxsize%  del "%%~fI"                        
          )                                                      
                                                                 
     

    Удаляет в том же каталоге , где сам батник  лежит. Если не устраивает, дипиливай сам.

    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 08:00 17-01-2017
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gobleep
    Smitis
    Сравнил приведённый мной батник, fontutils, fontinst и fontreg.
    Батник дорабатывать не стал - много геморроя, мало толку.
    Наиболее простое решение поставленной задачи - fontreg (кстати, он и разрабатывался именно как замена fontinst).
    Fontinst - для правильной работы требует создания inf-файла, что, на мой взгляд, несколько сложновато. И, к тому же, не умеет работать с .otf.
    Fontutils, в данном конкретном случае - "забивание гвоздей телескопом". Утилита обладает огромной (для поставленной задачи - существенно избыточной) функциональностью; зато позволяет не только добавлять шрифты в систему (причём без копирования их в соответствующую системную папку), но и удалять их из системы, а также производить со шрифтами ещё огромное множество операций (более нужных для разработчика шрифтов, чем для кого-либо ещё). Тем не менее, её тоже стОит иметь в виду, на всякий случай.

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 22:03 19-01-2017
    ZuB007



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Это весьма глупый вопрос, но всеже...
     
    через set /p input=
    Делаю ввод имени файла, содержащие пробелы и символы отличные от букво-цифр
    но при появлении первого пробела уходит в ошибку, как занести в переменную всё название файла целиком с его расширением?

    Всего записей: 105 | Зарегистр. 23-06-2007 | Отправлено: 00:16 21-01-2017
    NIKZZZZ



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

    Код:
    set /p input=
    set input="%input%"
    echo %input%


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:27 21-01-2017
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    А зачем второй set?
    Код:
    set /p "ERUNDA=Введите какую-нибудь ерунду:"
    echo %ERUNDA%


    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 19:18 21-01-2017
    NIKZZZZ



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

    Цитата:
    А зачем второй set?  

    А введите что-нибудь , типа "А зачем второй set >не_знаю" (без кавычек) и посмотрите, что получится.
    Вместо вывода фразы будет создан файл "не_знаю" с содержимом "А зачем второй set", такие уж батники юмористы.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:25 21-01-2017
    GCRaistlin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Можно подумать, для вашего способа не придумать такой ерунды, которая его повалит.
     
    ZuB007
    Когда именно "уходит в ошибку"? Ибо самой команде "set /p" пробелы глубоко до фонаря.

    ----------
    Magically yours
    Raistlin

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 23:45 21-01-2017
    NIKZZZZ



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

    Цитата:
    Можно подумать, для вашего способа не придумать такой ерунды, которая его повалит.

    Конечно есть такая ерунда, которая его повалит, например кавычки.
    Не предназначены батники для работы с текстом, поэтому и приходится изгаляться.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:10 22-01-2017
    superman md



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть xml файл, нужно получить из него список ссылок. Вручную редактировать, слишком долго получается.
     
    http://www.fayloobmennik.net/6823907
     
    Подскажите, как это сделать?

     
    добавлено
     
    Pasha_ZZZ
     
    Спасибо огромное. А то я уже думал придется ручками редактировать, а там более 1000 ссылок.

    Всего записей: 1205 | Зарегистр. 27-06-2010 | Отправлено: 14:07 22-01-2017 | Исправлено: superman md, 14:28 22-01-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    superman md
    Это не XML-файл, а XHTML - абсолютно разные вещи
     
    Добавлено:

    Цитата:
    grep -Eio "'http:\/\/[^']*'" OS.html>links.txt
    если нужно убрать апострофы
    Цитата:
    grep.exe -Eio "'http:\/\/[^']*'" OS.html|tr -d "'">links.txt
    grep и tr можно взять, например, из UnxUtils

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 14:18 22-01-2017 | Исправлено: Pasha_ZZZ, 14:23 22-01-2017
    BorlandIMHO

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

    Цитата:
    А введите что-нибудь , типа

    В постановке задачи явственно указано, что вводится имя файла. Соответственно, ввод символов, недопустимых в имени файла, не ожидается...

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 03:28 24-01-2017
    NIKZZZZ



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

    Цитата:
    Соответственно, ввод символов, недопустимых в имени файла, не ожидается...

    Ну, например, такие символы, как "%()+!~&" довольно часто используются в именах, а для батников это спец. символы.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:54 24-01-2017
    GCRaistlin



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

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

    Да нет никаких проблем у батников с работой с текстом.

    Код:
     
    set /p input=
    setlocal enabledelayedexpansion
    echo !input!
    endlocal
     

     
    BorlandIMHO

    Цитата:
    ввод символов, недопустимых в имени файла, не ожидается

    Должен ожидаться ввод любых символов, которые можно ввести с клавиатуры.

    ----------
    Magically yours
    Raistlin

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 09:50 24-01-2017
    omsk_mail



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
    Подскажите как запустить этот батик из под простого пользователя не отключая Контроль учетных записей (сокращенно UAC) в ОС 7
    Это батник на Автозагрузка Агента УТМ ЕГАИС
    Сами службы стартуют и работают, а вот Агент к сожалению нет.
    Ярлык в автозагрузке C:\Windows\SysWOW64\cmd.exe /C agent.bat

    Код:
     
    @REM ----------------------------------------------------------------------------
    @REM  Copyright 2001-2006 The Apache Software Foundation.
    @REM
    @REM  Licensed under the Apache License, Version 2.0 (the "License");
    @REM  you may not use this file except in compliance with the License.
    @REM  You may obtain a copy of the License at
    @REM
    @REM       http://www.apache.org/licenses/LICENSE-2.0
    @REM
    @REM  Unless required by applicable law or agreed to in writing, software
    @REM  distributed under the License is distributed on an "AS IS" BASIS,
    @REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    @REM  See the License for the specific language governing permissions and
    @REM  limitations under the License.
    @REM ----------------------------------------------------------------------------
    @REM
    @REM   Copyright (c) 2001-2006 The Apache Software Foundation.  All rights
    @REM   reserved.
     
     
     
     
    @echo off
     
    set START=
    if "%*" == "-c" goto :withNoPrivileges
    if "%*" == "-check" goto :withNoPrivileges
    if "%*" == "-u" goto :withNoPrivileges
    if "%*" == "-update" goto :withNoPrivileges
     
    set START=start ""
     
    for /f "tokens=4-5 delims=[.XP " %%i in ('ver') do set VERSION=%%i.%%j
    echo %version%
    if "%version%" == "5.1" goto winxp
     
    CLS
    ECHO.
    ECHO ==================================
    ECHO Starting EGAIS Agent - Admin shell
    ECHO ==================================
     
    :checkPrivileges
    NET FILE 1>NUL 2>NUL
    if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
     
    :getPrivileges
    if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
    ECHO.
    ECHO **************************************
    ECHO Invoking UAC for Privilege Escalation
    ECHO **************************************
     
    setlocal DisableDelayedExpansion
    set "batchPath=%~0"
    setlocal EnableDelayedExpansion
    ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
    ECHO args = "ELEV " >> "%temp%\OEgetPrivileges.vbs"
    ECHO For Each strArg in WScript.Arguments >> "%temp%\OEgetPrivileges.vbs"
    ECHO args = args ^& strArg ^& " "  >> "%temp%\OEgetPrivileges.vbs"
    ECHO Next >> "%temp%\OEgetPrivileges.vbs"
    ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
    "%SystemRoot%\System32\WScript.exe" "%temp%\OEgetPrivileges.vbs" %*
    exit /B
     
    :gotPrivileges
    if '%1'=='ELEV' shift /1
    setlocal & pushd .
    cd /d %~dp0
     
    ::::::::::::::::::::::::::::
    ::START
    ::::::::::::::::::::::::::::
     
    :winxp
     
    :withNoPrivileges
     
    title Agent
     
    set ERROR_CODE=0
     
    :init
    @REM Decide how to startup depending on the version of windows
     
    @REM -- Win98ME
    if NOT "%OS%"=="Windows_NT" goto Win9xArg
     
    @REM set local scope for the variables with windows NT shell
    if "%OS%"=="Windows_NT" @setlocal
     
    @REM -- 4NT shell
    if "%eval[2+2]" == "4" goto 4NTArgs
     
    @REM -- Regular WinNT shell
    set CMD_LINE_ARGS=%*
    goto WinNTGetScriptDir
     
    @REM The 4NT Shell from jp software
    :4NTArgs
    set CMD_LINE_ARGS=%$
    goto WinNTGetScriptDir
     
    :Win9xArg
    @REM Slurp the command line arguments.  This loop allows for an unlimited number
    @REM of arguments (up to the command line limit, anyway).
    set CMD_LINE_ARGS=
    :Win9xApp
    if %1a==a goto Win9xGetScriptDir
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto Win9xApp
     
    :Win9xGetScriptDir
    set SAVEDIR=%CD%
    %0\
    cd %0\..\..  
    set BASEDIR=%CD%
    cd %SAVEDIR%
    set SAVE_DIR=
    goto repoSetup
     
    :WinNTGetScriptDir
    set BASEDIR=%~dp0\..
     
    :repoSetup
    set REPO=
     
     
    @REM Using embedded jre
    set PROJECT_DIR=%BASEDIR%\..
     
    set JAVACMD=java
    if exist "%PROJECT_DIR%\jre\bin\javaw.exe" set JAVACMD="%PROJECT_DIR%\jre\bin\javaw.exe"
     
    if "%REPO%"=="" set REPO=%BASEDIR%\lib
     
    set CLASSPATH="%BASEDIR%"\conf;"%REPO%"\*
     
    set ENDORSED_DIR=
    if NOT "%ENDORSED_DIR%" == "" set CLASSPATH="%BASEDIR%"\%ENDORSED_DIR%\*;%CLASSPATH%
     
    if NOT "%CLASSPATH_PREFIX%" == "" set CLASSPATH=%CLASSPATH_PREFIX%;%CLASSPATH%
     
    @REM Reaching here means variables are defined and arguments have been captured
    :endInit
     
    %START% %JAVACMD% %JAVA_OPTS%  -classpath %CLASSPATH% -Dapp.name="agent" -Dapp.repo="%REPO%" -Dapp.home="%BASEDIR%" -Dbasedir="%BASEDIR%" ru.centerinform.terminal.agent.Agent %CMD_LINE_ARGS%
     
    if %ERRORLEVEL% NEQ 0 goto error
    goto end
     
    :error
    if "%OS%"=="Windows_NT" @endlocal
    set ERROR_CODE=%ERRORLEVEL%
     
    :end
    @REM set local scope for the variables with windows NT shell
    if "%OS%"=="Windows_NT" goto endNT
     
    @REM For old DOS remove the set variables from ENV - we assume they were not set
    @REM before we started - at least we don't leave any baggage around
    set CMD_LINE_ARGS=
    goto postExec
     
    :endNT
    @REM If error code is set to 1 then the endlocal was done already in :error.
    if %ERROR_CODE% EQU 0 @endlocal
     
     
    ostExec
     
    if "%FORCE_EXIT_ON_ERROR%" == "on" (
      if %ERROR_CODE% NEQ 0 exit %ERROR_CODE%
    )
     
    if "%START%" NEQ "" exit %ERROR_CODE%
     
     


    Всего записей: 407 | Зарегистр. 18-02-2008 | Отправлено: 10:53 25-01-2017
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    omsk_mail
    Из-под простого пользователя вы UAC никак не обойдёте.
    Вариантов, в принципе, 2: настроить запуск батника от имени встроенной учётки администратора либо запускать назначенным заданием от имени системы (либо, опять же, от имени встроенной учётки администратора).

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 15:11 30-01-2017
    Kavar

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток.
    Есть батник для перезапуска служб на сервере (Win2008R2).
    Если запускаю вручную отрабатывает нормально.
    Если запускаю планировщиком - не отрабатывает.
    Планировщик запускаю от имени того же пользователя что и вручную, обладающего правами администратора.
     

    Код:
    @echo off
    echo start: %DATE% %TIME% >> "D:\BackUp\Logs\restart.log"
    net stop "1C:Enterprise 8.3 Server Agent" >> "D:\BackUp\Logs\restart.log"  
    TIMEOUT /T 15 /NOBREAK
    net stop SQLSERVERAGENT >> "D:\BackUp\Logs\restart.log"
    TIMEOUT /T 15 /NOBREAK
    net stop MSSQLSERVER >> "D:\BackUp\Logs\restart.log"  
    TIMEOUT /T 20 /NOBREAK
    net start MSSQLSERVER >> "D:\BackUp\Logs\restart.log"
    TIMEOUT /T 20 /NOBREAK
    net start SQLSERVERAGENT >> "D:\BackUp\Logs\restart.log"
    TIMEOUT /T 20 /NOBREAK
    net start  "1C:Enterprise 8.3 Server Agent" >> "D:\BackUp\Logs\restart.log"
    echo stop: %DATE% %TIME% >> D:\BackUp\Logs\restart.log

     
     
    Лог после запуска вручную:
    start: 29.01.2017  9:21:28,58  
    Служба "Агент сервера 1С:Предприятия 8.3" останавливается.
    Служба "Агент сервера 1С:Предприятия 8.3" успешно остановлена.
     
    Служба "Агент SQL Server (MSSQLSERVER)" останавливается..
    Служба "Агент SQL Server (MSSQLSERVER)" успешно остановлена.
     
    Служба "SQL Server (MSSQLSERVER)" останавливается..
    Служба "SQL Server (MSSQLSERVER)" успешно остановлена.
     
    Служба "SQL Server (MSSQLSERVER)" запускается.
    Служба "SQL Server (MSSQLSERVER)" успешно запущена.
     
    Служба "Агент SQL Server (MSSQLSERVER)" запускается.
    Служба "Агент SQL Server (MSSQLSERVER)" успешно запущена.
     
    Служба "Агент сервера 1С:Предприятия 8.3" запускается.
    Служба "Агент сервера 1С:Предприятия 8.3" успешно запущена.
     
    stop: 29.01.2017  9:23:18,06

     
    Лог после запуска планировщиком:
    start: 29.01.2017  4:01:03,26  
    stop: 29.01.2017  4:02:34,21

     
    Службы не перезапускаются. что происходит в промежутке между start и stop непонятно.
     
    Что я не так делаю?

    Всего записей: 112 | Зарегистр. 12-04-2004 | Отправлено: 07:17 31-01-2017
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kavar
    Может заменить net на %SystemRoot%\System32\net.exe ?
    И как называется сам батник ?  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:43 31-01-2017
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru