Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: bat-фаил в AD из под пользователя

Необходимо распространить статический маршрут по определенным пользователям. Создал батник
Код:
route ADD -p 192.168.2.х MASK 255.255.255.255 192.168.1.х METRIC 1
. Все работало но перестало после обновы винды через месяц. Задача: найти способ распространить по пользователям стат. маршрут. Подскажите какие методы сейчас есть и почему не работает батник? При запуски локально у пользователя батника, он отрабатывает, но маршрут не меняет, при запуски его от админа результатов не дает, срабатывает только, если запустить командную строку от админа и там прописать код. Спасибо всем.
Ответ:
Цитата cameron:
маршруты отлично раздаются через DHCP сервер.
Воистину.

Цитата demshuk:
Можете по подробней расписать как это сделать?
1. Открываете на сервере консоль службы сервера DHCP
2. Переносите нужные компьютеры в отдельный пул
3. В свойствах пула добавляете параметр типа "статичный маршрут"
4. PROFIT!!!
Вопрос: Подскажите команду bat для автозапуска после ребута или выключения

Здравствуйте.

Есть такая необходимость, запускать программу после ее автоматической перезагрузки, к примеру после "авто обновления". Конкретно это игровой сервер, обновления выходят часто и если я не у компа, то сервер просто находится в оффе до тех пор пока я сам его не включу. Так вот, нужна команда для bat фаила, которая включала бы сервер автоматически каждый раз когда он выключается или перезагружается или даже виснет.
Спасибо.
Ответ: Нашел, можно закрывать.
Вопрос: Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)

Тема создана для размещения "классических" примеров решения
только самых распространенных задач, предназначенных как для новичков, так и в роле справки (напоминания) для профессионалов.

Правила и особенности темы
  • первый пост содержит четкую структуру категорий и будет наполняться ссылками на будущие примеры из этой темы, а также гиперссылками на другие темы в разделах CMD (в редких случаях VBS).
  • в наполнении темы может поучавствовать любой желающий;
  • целесообразность поста в данной теме определяю я, поэтому такой пост может быть удален без объяснения причин;
  • автора размещенных здесь примеров будут отмечены отдельным списком благодарностей.
  • запрещено обсуждение выложенных здесь примеров. Если у Вас возникли проблемы - создавайте новую тему, ссылаясь на конкретное сообщение из этой темы (правый клик над сообщением c примером, слово "Permalink")

Что требуется от пользователей
  • разместить примеры кода BATCH, которые соответствуют задаче из определенной категории в шапке темы;
  • указать гиперссылку на тему, где по-Вашему подан "классический" пример решения задачи;
  • как исключение, разрешается давать ссылку на тему с другого форума мне в личку;

    В теме: Предложения по совершенствованию раздела и закреплению в "ВАЖНЫЕ" новых тем
  • принимаются предложения о внесении изменений в перечень категорий и их расположение, а также список задач.
  • предложения об изменении структуры/стиля оформления и т.п.

При размещении примера следует:
  • Проверить не размещен ли уже такой код. Если Ваша реализация лучше - укажите чем.
  • Описать, что этот код делает и к какой категории (задаче) относится.
  • Как можно более детально комментировать каждую строку.
После проверки Вашего поста я добавляю ссылку на него в шапку.

Все темы, побывавшие в шапке:



******************** Перечень категорий и задач: ********************

С чего начать
  • Как правильно скопировать и выполнить свой первый код? эта тема
  • Структура кода Batch-файла эта тема
  • Русский текст в консоли (что делать с "абракадаброй") ссылка
  • Как задать аргумент при запуске командного файла эта тема ссылка
  • Как проверить заданы ли аргументы запуска бат-файла ссылка
  • Как не нужно запускать .Bat .Cmd файлы ссылка
  • Как запустить батник от имени Администратора Програмно Вручную
  • Общие сведения о командной строке Windows ссылка
  • В чем разница между *.cmd и *.bat - ссылка
    Мельком просмотреть все закрепленные темы (они периодически пополняются). Полный список тем выше.

Архиваторы и операции с ними
  • WinRAR ссылка Англ.примеры Справка
  • 7Zip Справка
  • Cab ссылка ссылка
    - Извлечение
  • Разархивирование файлов по маске из архивов ARJ, RAR, ZIP, 7Z с удалением из архива ссылка
    - По датам
  • Создание еженедельных архивов с обновлением (запускать можно каждый день) ссылка
  • Архивация в 7zip файлов с определенной датой создания (модификации) и маской ссылка
    - Другие операции:
  • Поиск файла в архиве ссылка
  • Архивирование каждой папки в отдельный архив (WinRAR, 7zip) ссылка

Автозапуск

  • -- через папку "Автозапуск
  • помещение в папку "Автозапуск"
    -- через реестр
  • Поместить программу в автозапуск через реестр эта тема
  • запись пути к файлу в реестр ссылка
    -- через планировщик заданий
    Кликните здесь для просмотра всего текста

    Пример добавления нового задания:

    1) программно через командную строку:
    Код Bash
    1
    
    SCHTASKS /Create /TN Calculator /TR %windir%\system32\calc.exe /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 09:28 /RU домен\пользователь /RP пароль
    Для выполнения задания с повышенными привилегиями добавьте ключ /rl highest

    2) вручную через окно планировщика:

    Пуск -> Выполнить (или Win + R) -> taskschd.msc -> Нажмите {ENTER}

    Действия -> Добавить простое задание:

    - на триггер назначаем запуск батника или другой программы;
    - выбираем периодичность запуска;
    - по желанию галочку - "запускать с правами администратора";
    - галочку ~ прим. "активировать задачу сразу после создания".

    Служба планировщика заданий должна быть запущена для выполнения задания.
    Можно запустить ее программно:
    Код Bash
    1
    
    net start schedule
    и заодно установить ее автозапуск вместе с системой:
    Код Bash
    1
    
    sc config schedule start= auto
    Все операции должны выполняться в режиме
    повышенных прав.

    -- Через Autorun.inf
  • с диска (autorun.inf), отключение автозапуска на всех дисках ссылка

Автоматизация
  • Имитация нажатия клавиш (VBS) ссылка
  • Имитация нажатий клавиш (другие программы) ссылка ссылка
  • Как запустить внешнюю программу ссылка
  • Как запустить внешнюю программу с ожиданием завершения ее работы ссылка ссылка
  • Сворачивание окна ссылка
  • Центрирование окна ссылка
  • Имитация нажатий кнопок мыши, позиционирование указателя ссылка
Ответ:
Цитата Сообщение от FraidZZ Посмотреть сообщение
А что это? Виртуальная машина с х64?
да нет, обычная Win7 x64. Просто запускал с AkelPad-a. который в свою очередь запущен с x64-редакции Total Commander. Вот наверно и подхватило другую среду. Хотя SysWOW64 - это вообще 32-разрядная папка. Странно, на рабочем компе это не воспроизводится.

Цитата Сообщение от FraidZZ Посмотреть сообщение
P.S. Пока писал - заметил: Проценты раскрываются раньше восклицательных знаков!
Да есть такое. Поэтому, если нужно получить значение переменной, имя которой частично или целиком состоит из значения другой переменной, такой порядок и используем:
Код Bash
1
2
3
4
setlocal enabledelayedexpansion
set num=1
set param1=test
set value=!param%num%!
или так:
Код Bash
1
2
3
set num=1
set param1=test
call set value=%%param%num%%%
Цитата Сообщение от FraidZZ Посмотреть сообщение
Определение длины строки
Писал такое уже, но на рекурсии: Каталог простых примеров решенных задач BAT/CMD, с чего начать (■■■ основная тема ■■■)

Цитата Сообщение от FraidZZ Посмотреть сообщение
нельзя использовать переменные counter_0121 и string_q12e
Используя Setlocal в подпрограмме и вот такой трюк, можешь избавится от этого недостатка:
Пример:
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
set param=1
call :me "variable"
echo Value from sub=%variable%
::Проверяем изменилось ли значение переменной
echo Old value=%param% is saved !
pause
goto :eof
 
:me
setlocal
::Используем точно такое же имя переменной
set param=123
endlocal& set %~1=%param%
exit /b
Вопрос: Работа .bat от разных учёток

Здравствуйте.
Пытаюсь создать .bat который:
  1. создаёт папку %ProgramFiles%\MyProg и копирует туда файлы
  2. создаёт папку %AppData%\MyProg для текущего пользователя (не администратора)и копирует туда файлы
Если .bat запускать от имени простого пользователя, то п.1 не выполниться
Если .bat запускать от имени администратора, то п.2 не выполниться - %AppData% будет ссылаться не на профиль нужного пользователя.

Посоветуйте как быть.
Ответ: После повышения привилегий от имени другого пользователя процесс находится уже в другом контексте.
Пройтись по цепочке родительских процессов, дабы узнать имя исходного пользователя, это, по-моему, нереал.
Лучше иначе организовать работу инсталлятора или что у Вас там.
Пусть сперва он запускается в среде ограниченных прав затем либо запоминает имя пользователя, либо сразу делает необходимую установку для текущего пользователя, а уж затем затребует повышенные привилегии и продолжает установку в папки, требующие повышенных прав.
Вопрос: Создание файла INI из файла cmd/bat итд

Доброго времени суток.
Есть задача - Создать файл с указанием параметра Х
Есть пусть к файлу (диск\Пользователи\Пользователь\AppData\Local\Программа\программа.ini)
При запуске файла cmd должно требовать ввода параметра Х(три цифры)
а выполнение - записывать файл
Код
[Profile0]
Name=X
Enabled=1
CMDID=X
AuthUser=X
AuthID=X
AuthPass=qwertyX
Addr=servak.ru
TRAddr=servak.ru
остальные параметры в файле не трогать

Помогите, пожалуйста!
Ответ:
Сообщение от CyberCyanide
Есть задача - Создать файл с указанием параметра Х
на bat это примерно так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
set "f=диск\Пользователи\Пользователь\AppData\Local\Программа\программа.ini"
set /p X="Введите 3-х значное число: "
>"%f%" (
 echo [Profile0]
 echo Name=%X%
 echo Enabled=1
 echo CMDID=%X%
 echo AuthUser=%X%
 echo AuthID=%X%
 echo AuthPass=qwerty%X%
 echo Addr=servak.ru
 echo TRAddr=servak.ru
)
exit
Но вот это сбивает с толку
Сообщение от CyberCyanide
остальные параметры в файле не трогать
я так понимаю надо взять один файл и из него создавать другой?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
set "f=диск\Пользователи\Пользователь\AppData\Local\Программа\программа.ini"
set /p X="Введите 3-х значное число: "
<"file.ini">"%f%" (for /f "tokens=1* delims==" %%a in ('more') do @(
  if "%%a"=="[Profile0]" (echo [Profile0]) else (
  if "%%a"=="Name" (echo %%a=%X%) else (
  if "%%a"=="Enabled" (echo %%a=1) else (
  if "%%a"=="CMDID" (echo %%a=%X%) else (
  if "%%a"=="AuthUser" (echo %%a=%X%) else (
  if "%%a"=="AuthID" (echo %%a=%X%) else (
  if "%%a"=="AuthPass" (echo %%a=qwerty%X%) else (
  if "%%a"=="Addr" (echo %%a=servak.ru) else (
  if "%%a"=="TRAddr" (echo %%a=servak.ru) else (
  echo %%a=%%b)))))))))
 )
)
exit
вот такие извращения на cmd.
Вопрос: Написать BAT-файл, показывающий сведения о пользователях

Нужно создать командный файл с помощью команды net user. Сложность заключается в том, что я могу узнать о каждом пользователе отдельно, то есть написать: net user admin.
Мне же нужно, чтобы сначала выполнялась команда, показывающая всех пользователей, а затем - по очереди появлялись подробные сведения о пользователях. Но я могу это сделать, только если буду вручную вводить имена, а мне нужно - автоматически. Например:
Windows Batch file
@echo Users...
net user >C:\Users.txt
@pause
net user admin >>C\Users.txt
@pause
Это срабатывает, если знаешь, какие на компьютере пользователи, но что, если не знаешь?
В общем, цель - в полной автоматизации, чтобы пользователь ничего не вводил.

На mail.ru мне сказали обратить внимание на оператор for. Но я не понимаю принцип ее работы. Получается, вначале мне нужно экспортировать данные обо всех пользователях в общем в текстовый файл, затем снова его импортировать и применить к нему цикл, с указанием, какие строки пропустить.

Помогите пожалуйста, подскажите, как правильно оформить команду.

На mail.ru мне порекомендовали использовать цикл FOR. Изучив подробно справку, "сочинила" вот это (но эта команда ничем не отличается от стандартной net user):
Windows Batch file
for /F "usebackq delims==" %i in (`net user`) do echo %i
Также мне непонятно, как указать команде, какие строки нужно брать для раскрытия более подробных сведений о файлах, так как сама net user предоставляет данные в виде таблицы в командной строке. Я думала, что смогу экспортировать сначала все в файл, потом снова его импортировать и указать какие строки использовать (с помощью token), но так и не поняла.
Помогите пожалуйста!
Ответ: Galadriel1987, так пойдёт?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off&cls&set "tag=Команда выполнена успешно."
set /a cnt=0
(for /f "skip=4 tokens=*" %%v in ('net user^|find /v /i "%tag%"') do (
  for %%u in (%%v) do net user %%u|find /v /i "%tag%"&&set /a cnt+=1
 )
)>userlist.txt 
if %cnt% neq 0 (echo:
  echo:в файл "%~dp0userlist.txt" записаны сведения
  echo%cnt% пользователях компьютера "%computername%"
  timeout /t 7
)
start "" "%~dp0userlist.txt"
exit /b 0
зы. скрипт сохранить в кодировке 866
Вопрос: Запуск bat-файла после загрузки рабочего стола

win7
Доброго дня.
Как автоматом запустить bat файл не при запуске windows (gpedit.msc logon)
а после того как рабочий стол загрузится ?
Ответ:
Сообщение от wolf7808
именно после запуска рабочего стола,
ну именно так и не будет нигде, а близко к этому, при входе в систему - флаг пользователь...

Добавлено через 6 минут
Для текущего пользователя кстати, если что:
Код
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run - для всех юзеров.
Вопрос: Автозапуск bat-файла при старте системы

Всем привет. Возникла необходимость в Windows 7 запускать батник при входе пользователя-не администратора. Планировщик заданий почему-то эту задачу на данном компьютере не выполняет, хотя раньше работал. На другом компе всё как надо. Просто положить в автозагрузку - тоже ничего, даже пароля не просит. Как автоматически пустить батник от имени администратора при старте/входе в систему. Мб, какие утилиты есть?
Смысл: монтировать виртуальный дискетник и грузить в него образ при помощи установленной программы OSFMount:
Bash
1
start "osfmount" "C:\Program Files\OSFMount\OSFMount.com" -a -t file -o ro,rem -f C:\imges\obras.img -m K:
Или если я соглашусь использовать выражение
Bash
1
runas /savecred /user:Admin
, то как переделать батник?
Ответ: Данный вопрос решил следующим способом:
1. Переводишь из-под администратора ограниченного пользователя (Вася) в администраторы.
2. Заходишь в запись Вася.
3. Создаешь через планировщик задач простую задачу - запуск программы при входе в windows. Обязательно ставишь галочку "выполнять с наивысшими правами" (для отключения вопроса UAC).
4.Перегружаешь машину и заходишь под Васей, проверяешь - выполняется ли программа. Если нет - ставишь задержку перед стартом программы 3-4 минуты и снова перегружаешься, заходишь под Васей.
5.Если все работает - в задаче планировщика снимаешь галочку "выполнять с наивысшими правами".
6.Переводишь из-под администратора Васю в ограниченного пользователя. Перегружаешь машину.
Должно все работать...
(иногда галочку можно не снимать...)
Вопрос: Закачивание файла с сервера через bat-файл

Здравствуйте!
Недавно начал изучать CMD, написал бат-файлик но работает через раз.

Есть батник который должен выкачивать файлик с портала SharePoint командой.
Windows Batch file
1
@if exist C:\AK\%fil% ( ERASE  C:\AK\%fil% /Q & robocopy %wau% C:\AK %fil% /Z /R:3 /W:10)  else ( robocopy %wau% C:\AK %fil% /Z /R:3 /W:10 & )
(Строка проверяет существует ли файл, удаляет его при наличии и скачивает актуальную версию с портала)

где
Windows Batch file
1
set wau=\\portal\ХХХ\ХХХ\Shared%%20Documents\AK
путь к файлу

Есть портал на базе SharePoint. В обычном состоянии его не видно и пользователи обращаются к нему через браузер, как к сайту, но если ввести его адрес в проводник он появляется в сетевом окружении.

Пока портал не появится в сетевом окружении файлик ругается и говорит что такого пути нет, после его появления все работает прекрасно.

Подскажите как можно это вылечить!
Ответ: Большое спасибо, alpap!
Powershell дело хорошее, но я его пока не знаю, а на освоение пока не хватает времени.
Тем более что "robocopy" меня устраивает, проблема в том что нужно сначала "увидеть" сетевой ресурс а уже потом применить его.

В связи с чем решил превратить баг в фичу)))
В той же папке разместил маленький рисунок (когда будет время он станет большим приветственным логотипом).
Windows Batch file
1
start "" "\\portal\XXX\XXX\Shared Documents\AK\dbicon.ico" 
открывает картинку заставляя компьютер попутно увидеть сетевой ресурс
Windows Batch file
1
@if exist C:\AK\%fil% ( ERASE  C:\AK\%fil% /Q & robocopy %wau% C:\AK %fil% /Z /R:3 /W:10)  else ( robocopy %wau% C:\AK %fil% /Z /R:3 /W:10 & ) 
(тут ничего не поменялось) Качает оболочку базы (замечу что сетевой ресурс притормаживает и работать напрямую без скачивания невозможно)
Windows Batch file
1
TASKKILL /F /FI "WINDOWTITLE eq dbicon*"
закрывает логотип (рисунок).

Дальше оболочка прекрасно открывается и управление передаётся пользователю.
Пусть не элегантно но работает без сбоев.
Профит.

Считаю что тему на этом можно закрывать.
Всем спасибо!
Вопрос: Как сделать так, чтобы bat-файлы самостоятельно вводили данные?

Вопрос звучит так: Как сделать чтобы bat/cmd самостоятельно вводили данные?
Например, copy con test, а дальше он должен написать "любой текст", затем закрыть редактирование и продолжить выполнять последующие команды
Или допустим мы запускаем команду mvn archetype:generate (показывает библиотеки в репозитории), и в дальнейшем он автоматически вводит номер библиотеки и в своем духе продолжает работать

Еще появился вопрос: Как добавлять строчки к переменным средам (для пользователя и для системных переменных)

Пс: особо не шарю
Ответ:
Сообщение от damirqa
Вопрос звучит так: Как сделать чтобы bat/cmd самостоятельно вводили данные?
Это SkyNet.

Но потом придётся закидывать себя в прошлое, чтобы превентивно уничтожить данные,
которые ушлый негр приготовил для введения.