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

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Lepar79
     
    Батник что я приводил выше возвращает время последней записи, чтобы вытащить время создания надо запрашивать у системы атрибуты времени и их анализировать. Простым батником это не сделать.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 13:56 20-11-2017
    Orlandovich

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
     
    Я наверно неправильно описал задачу =) надо присвоить переменной значение имени файла, который, например, не старше 4-х дней.
     
    Использование явного присвоения с помощью команды forfiles не работает:

    Код:
    set RefArch=forfiles /P C:\Backup\Weekly /M *.zip /D -04 /C "cmd /c echo @FILE"

    Всего записей: 3 | Зарегистр. 09-04-2012 | Отправлено: 18:08 20-11-2017 | Исправлено: Orlandovich, 18:09 20-11-2017
    YuS_2



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

    Цитата:
    Странно? Я тоже так думаю, но факт остается

    Да нет, как раз, у микрософт это не странно, а в порядке вещей. Вывод утилиты wevtutil.exe имеет кодировку 1251, поэтому команды батника, использующие в своих шаблонах кодировку 866 и кириллицу, без приведения к единой кодировке, корректно работать не умеют...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:12 20-11-2017
    thejustsoul



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Koster_2
    От админа запускайте..

    Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 13:38 21-11-2017
    sherba800

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Какой на данный момент самый простой способ заставить запускаться батник от админа автоматически?

    Всего записей: 58 | Зарегистр. 22-09-2014 | Отправлено: 00:55 28-11-2017
    NIKZZZZ



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

    Цитата:
    Какой на данный момент самый простой способ заставить запускаться батник от админа автоматически?

    Создать ярлык для батника, в его свойствах поставить галку "Запускать от имени администратора".
     

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Такой способ не будет работать при запуске с флешки.

    Всего записей: 58 | Зарегистр. 22-09-2014 | Отправлено: 01:18 28-11-2017
    thejustsoul



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

    Код:
    @echo off
    :check
    net session >nul 2>&1
    if "%errorlevel%" equ "0" ( goto start ) else ( goto elevate )
    exit /b
     
    :start
    rem -----------------------
    echo ...your code there...
    echo Scripts path: "%~f0"
    echo.Arguments: %*
    pause
    rem -----------------------
    exit /b
     
    :elevate
    rem powershell.exe Start-Process "%~f0" -Verb runAs
    powershell.exe Start-Process -FilePath "%comspec%" -ArgumentList '/c "%~f0" %*' -Verb runAs 2>nul
    if "%errorlevel%" neq "0" (
        echo Error: Administrator privileges required!
        pause
        exit /b 1
    )
    exit /b

     
    У него есть минус, нельзя передавать батнику параметры в кавычках (в powershell не шарю, может оно и можно если как-то экранировать), кавычки опускаются.. Еще оно падает, если батник имеет пробелы в имени.. Если использовать другие варианты (другие elevate exe, vbs..), то почти аналогично, с багами, как обойти это, хз.
     
    Если найдете способ это исправить, дайте знать в ПМ.

    Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 14:30 28-11-2017 | Исправлено: thejustsoul, 14:57 28-11-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    thejustsoul
    Интересно... давно пользуюсь объединенным cmd+js вариантом, никаких багов не замечал

    Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 14:36 28-11-2017
    thejustsoul



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

    Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 14:57 28-11-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    thejustsoul
    Цитата:
    @set @x=0 /*
    @echo off
    setlocal enableextensions disabledelayedexpansion
     
    net sessions>nul 2>nul
    if not errorlevel 1 goto :IsAdmin
    echo Not an admin. Elevating...
    start "" cscript //nologo /e:jscript "%~f0" %*
    goto :eof
    :IsAdmin
     
    echo Running as admin...
    rem Commands of CMD...
    goto :eof
     
    */
     
    var WSh = new ActiveXObject("WScript.Shell");
    var Env = WSh.Environment("PROCESS");
    var ShA = new ActiveXObject("Shell.Application");
    var S = "";
    for (var i = 0; i<WScript.Arguments.Length; i++)
      if (WScript.Arguments(i).search("[ \t]") < 0)
        S += " " + WScript.Arguments(i);
      else S += ' "' + WScript.Arguments(i) + '"';
    ShA.ShellExecute(Env("COMSPEC"), '/c ""' + WScript.ScriptFullName + '"' + S + '"', "", "runas", 1);

    Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 15:09 28-11-2017 | Исправлено: Pasha_ZZZ, 17:03 28-11-2017
    thejustsoul



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    Оно же не передает параметры с которыми был запущен батник, можно ли сделать, чтобы оно передавало параметры как есть (%*), в батник которому повышает привилегии?
    Допустим запускается батник с параметрами: /a "test param 1" /b param x
    В результате должно передаться точно

    Код:
    /a "test param 1" /b param x


    Код:
    А не  
    /a test param 1 /b param x

    Как в моем случае.

    Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 15:36 28-11-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    thejustsoul
    Исправил. Сделал передачу параметров. Как есть командную строку не нашел. Сделал так: если какой-то параметр содержит пробел или табуляцию - значит окавычиваем, иначе нет.
     
    Добавлено:
    Но... если параметр беспробельный и был передан в кавычках - он станет без кавычек
    Цитата:
    "param1" -> param1

    Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 17:05 28-11-2017
    thejustsoul



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

    Цитата:
    он станет без кавычек  

    Это возможно исправить? А то как передавать в параметрах пути с пробелами..
    upd: если вручную с кавычками писать, передается без них, но если мышкой перенести в консоль файл, в пути где есть пробелы, передается с кавычками.. странно..
    А если передать так:

    Код:
    /a="User Data"

    получится в итоге так:

    Код:
    "/a=User Data"

    Не проверял на живом примере, но по-моему так не очень хорошо..

    Всего записей: 1789 | Зарегистр. 30-03-2014 | Отправлено: 17:28 28-11-2017 | Исправлено: thejustsoul, 17:44 28-11-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    thejustsoul
    Если параметр с пробелом - то он будет в кавычках. Это если вы зачем-то захотите передать параметр без пробелов, но в кавычках - кавычки уберутся.

    Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 17:30 28-11-2017
    bomzz

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

    Всего записей: 3412 | Зарегистр. 29-03-2016 | Отправлено: 08:29 29-11-2017
    omsk_mail



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    @echo off
    net time /set \\192.168.11.1 /y

    Всего записей: 407 | Зарегистр. 18-02-2008 | Отправлено: 08:55 29-11-2017
    prav333dorub



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

    Всего записей: 371 | Зарегистр. 22-12-2014 | Отправлено: 09:00 29-11-2017 | Исправлено: prav333dorub, 09:09 29-11-2017
    bomzz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    omsk_mail
    ntp1.stratum2.ru а как сервер времени подставить в строку?
     
    prav333dorub
    консольную программу тоже вариант использовать, но вроде винда должна сама уметь время синхронизировать
     
    Добавлено:

    Цитата:
     
    Обмен пакетами с 74.125.196.99 по с 32 байт данных:
     
    Ответ от 74.125.196.99: число байт=32 время=189мс TTL=34
    Ответ от 74.125.196.99: число байт=32 время=189мс TTL=34
    Ответ от 74.125.196.99: число байт=32 время=189мс TTL=34
    Ответ от 74.125.196.99: число байт=32 время=189мс TTL=34
     
    Статистика Ping для 74.125.196.99:
        Пакетов: отправлено = 4, получено = 4, потеряно = 0
        (0% потерь)
    Приблизительное время приема-передачи в мс:
        Минимальное = 189мсек, Максимальное = 189 мсек, Среднее = 189 мсек
     
    System error 53 has occurred.
     
    The network path was not found.
     
    Для продолжения нажмите любую клавишу . . .

     
    Добавлено:
    http://forum.oszone.net/thread-76474.html

    Цитата:
    @Echo Off
     
    cmdtime3.exe /T ntp2.sth.netnod.se
    ::cmdtime3.exe /T ntp2.sp.se
    cmdtime3.exe /T swisstime.ee.ethz.ch
    cmdtime3.exe /T Time2.Stupi.SE
     
    cmdtime3.exe /T ntp1.belbone.be
    cmdtime3.exe /T ntp.tuxfamily.net
    cmdtime3.exe /T time.flygplats.net
    cmdtime3.exe /T ntp.cis.strath.ac.uk
     
    Pause
    ::cmdtime3.exe SYNC ntp2.sth.netnod.se ntp2.sp.se swisstime.ee.ethz.ch Time2.Stupi.SE
    cmdtime3.exe SYNC ntp2.sth.netnod.se swisstime.ee.ethz.ch Time2.Stupi.SE
    Pause

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

    Цитата:
    * CmdTime 3.0 (c) Jury Gerasimov, 2000-2002.
    * Adjusting time via Internet Time Servers.
    * Contact author: http://www.softshape.com
     
    Connecting time.windows.com...  Cannot reach the time server
     
    Time is not adjusted.

    проблема сети. у провайдера какой то косяк или слишком нмого запросов с нашего ИП
     
    Добавлено:
    нет ни фига. тот же сервер утилитой синхронизируется, а виндой не хочет. фигня какая то
     

    Всего записей: 3412 | Зарегистр. 29-03-2016 | Отправлено: 09:15 29-11-2017 | Исправлено: bomzz, 09:37 29-11-2017
    sherba800

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    thejustsoul
    Спасибо, нашёл вот такие варианты: http://www.cyberforum.ru/post3934558.html
    Второй взял себе, так как то что нужно. Очень короткие в исполнениии, при этом работают.

    Всего записей: 58 | Зарегистр. 22-09-2014 | Отправлено: 11:01 29-11-2017 | Исправлено: sherba800, 12:13 29-11-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