Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 10

Автор: RSEREGAR
Дата сообщения: 28.06.2011 15:16
Elroir
Спасибо работает.
NIKZZZZ

Цитата:
Решение слишком не универсальное, например файрвол может влиять на это. Да и ping сетевая операция, он все-таки выполняется, хоть и на local host, и может мешать.
В windows 7 удобнее использовать choice.exe, но к сожалению ее нет в XP.

Не знаю такую команду. У меня win7 есть в сети и win XP и win 7. Как ей пользоваться?
Автор: NIKZZZZ
Дата сообщения: 28.06.2011 15:36
RSEREGAR
Пример задержки на 10 секунд

Код: > nul choice.exe /t 10 /d y
Автор: res2001
Дата сообщения: 28.06.2011 16:32
NIKZZZZ

Цитата:
Забивать гвозди мелкоскопом тоже можно, но зачем без нужды решать задачу через задницу?

Дык другого варианта как-бы и нет в ВинХР, чтоб на чистом бате и чтоб работало в системе по умолчанию. Понятно, что вот в Вин7 появился чойс, им конечно это решать лучше, но не универсально.
Да и пинг это далеко не мелкоскоп
pause.bat - нормальный вариант, но требует создания дополнительного файла, к тому же полученный test.com - утилита для DOS. А куча строчек в батнике с кракозябрами выглядит страшновато
Если и создавать временный файл, я бы предпочел сделать скрипт на JS/VBS с вызовом wscript.sleep(), можно даже в батник интегрировать. Правда cscript порой долго грузится.

В общем идеальных решений нет.
Автор: NIKZZZZ
Дата сообщения: 28.06.2011 16:46
res2001

Цитата:
В общем идеальных решений нет.

Так хочется решить задачу корректно, тем более достаточно простую (но слишком сложную для Microsoft)
Тем более не хочется жрать ресурсы, хотя на это уже давно все плюют.



Добавлено:

Цитата:
Понятно, что вот в Вин7 появился чойс, им конечно это решать лучше

Так этот "чойс" был в win2k
Автор: res2001
Дата сообщения: 28.06.2011 17:13

Цитата:
Так этот "чойс" был в win2k

Нету его в Вин2к (у меня есть машина с практически чистым вин2к про).
Он был помнится в ДОСе, в Вин95 тож был, а вот дальше уже не знаю.
Автор: RSEREGAR
Дата сообщения: 28.06.2011 17:15

Код: @echo off
:checkLoop
ping -n 1 host | find /i "ttl=" >nul && goto runProgram
goto checkLoop
:runProgram
choice /t 120 /d y
psexec \\host progam
Автор: Elroir
Дата сообщения: 28.06.2011 17:21
NIKZZZZ

Цитата:
Так этот "чойс" был в win2k

Задача-то (в идеале) - сделать так, чтобы работало на всех системах.
Кстати, choice "вернулся" в систему, только в Windows 2003 Server.
В WinXP и Win2000 его нет - надо ставить Resource Kit.
Автор: wolf0425
Дата сообщения: 28.06.2011 17:46

Цитата:
Забивать гвозди мелкоскопом тоже можно, но зачем без нужды решать задачу через задницу?
где же через задницу то?
готовая, всегда присутствующая (и компактная) утилита командной строки с документированной настройкой задержки времении до миллисекунды, в варианте пингования 127.255.255.255 ничего лишнего не делающая - это куда менее "через задницу" чем создание и запуск комфайла из батника или запуск из того же батника vbs интерпретатора.
так что в условиях возможного отсутствия в системе "правильного" choise - ping попросту наилучший выбор для генерации пауз.
к тому же работающий на старых машинах точнее чем вызов vbs (задержка отрабатывается той же ситемной функцией, а вот кода в память грузится за время выполнения - сильно меньше).
Автор: superman md
Дата сообщения: 28.06.2011 22:07
Нужна помощь с активатором Windows Loader by Daz хочу добавить его в образ, подскажите его правильный запуск из setupcomplete.cmd чтобы при наличии слика, он ставил только сертификат и ключ, если такое возможно...
От автора приписан вот такой setupcomplete.cmd, объясните исполняемые команды.

Код: @ECHO OFF
%~dp0"Windows Loader.exe" /silent /preactivate
cd %~dp0
attrib -R -A -S -H *.*
SHUTDOWN /R /T 5
RMDIR /S /Q "%WINDIR%\Setup\Scripts"
exit
Автор: Valdon
Дата сообщения: 28.06.2011 23:02
Подскажите, как в терминальной сессии (RDP 6.0) из батника узнать запущена ли она с ключом /console или нет ?
Автор: res2001
Дата сообщения: 29.06.2011 07:42
Valdon
А что это за ключ такой?
Если пользуешься mstsc - стандартным терминальным клиентом виндов, то у него нет такого ключа.

Добавлено:
superman md
Запускается Windows Loader.exe из папки с батником
%~dp0"Windows Loader.exe" /silent /preactivate
Устанавливается текущим каталогом, каталог, где лежит батник
cd %~dp0
В текущем каталоге снимаем атрибуты рид-онли, архивный, скрытый, системный со всех файлов
attrib -R -A -S -H *.*
перезагружаем винду с таймером в 5 сек.
SHUTDOWN /R /T 5
удаляем каталог "%WINDIR%\Setup\Scripts" со всем содержимым.
RMDIR /S /Q "%WINDIR%\Setup\Scripts"
Автор: Valdon
Дата сообщения: 29.06.2011 08:23
res2001, есть такой ключ, начиная с версии RDP 6.1 он заменен на /admin. Почитать можно например, здесь или запусти mstsc /?
Автор: res2001
Дата сообщения: 29.06.2011 08:48
Valdon
ага, это есть
Кароче, есть переменная окружения %CLIENTNAME%.
В случае когда заходишь в терминале с ключом /admin она либо не устанавливается, либо устанавливается в имя сервера на который заходишь (проверял на ВинХП и Вин2003). Когда заходишь без /admin переменная устанавливается в имя клиентского компа с которого заходишь.
Вот так и различать.
При этом, чтоб отличить что ты зашел именно через терминал, а не из консоли можно анализируя переменную %SESSIONNAME%, когда в терминале она равна "RDP-Tcp#NN", где NN - это порядковый номер текущей РДП сессии, если заходишь с консоли, то она равна "Console".
Автор: FantoMax22
Дата сообщения: 29.06.2011 09:41
Всех приветствую!

Помогите доделать батник. Основная часть есть:

dsadd user "..."
dsmod group "..."
dsmod user "..."

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

Спасибо!
Автор: res2001
Дата сообщения: 29.06.2011 09:49
FantoMax22
Ввод в батнике делается через команду
set /p in="Текст комментария"
В переменной in - введенное значение. (см. set /?)

Для организации цикла в начале поставь метку, типа этого
:label
а в конце переход на метку:
goto :label
см. goto /?
Автор: wolf0425
Дата сообщения: 29.06.2011 09:53

Цитата:
Когда заходишь без /admin переменная устанавливается в имя клиентского компа с которого заходишь.
Вот так и различать.
странно, захожу вот на 2008/64 сервер без /admin - %CLIENTNAME% не определена.

up: перезапустил FAR, из которого смотрел переменные - определена.
причем SESSIONNAME=RDP-Tcp#0

на соседнем 2003/32, где /admin по жизни - SESSIONNAME=RDP-Tcp#1
а %CLIENTNAME% тоже не определена
Автор: res2001
Дата сообщения: 29.06.2011 09:57
wolf0425
В 2008 не проверял, тестировал на ВинХП, 2003х32/64, Вин7 х32
Автор: FantoMax22
Дата сообщения: 29.06.2011 09:59
res2001
Спасибо!
Автор: igorivlev
Дата сообщения: 29.06.2011 16:07
Всем здрасти.

Есть необходимость на 100 серверах с линуксом выполнить одинаковые команды (залить туда пакет, остановить сервис, установить пакет, запустить сервис).

Перечитав кучу листов форума родился *.bat скриптец.


Код: @echo off
set adr=10.101.252.1
set lgn=loginuser
set pwd=password

pscp.exe -pw %pwd% comands.t %lgn%@%adr%:/tmp

plink.exe -ssh -2 %adr% -l %lgn% -pw %pwd% -m comands.t
Автор: res2001
Дата сообщения: 29.06.2011 16:12
igorivlev

Код: @echo off
for /f "tokens=1-3" %%a in (list.txt) do (
pscp.exe -pw %%c comands.t %%b@%%a:/tmp
plink.exe -ssh -2 %%a -l %%b -pw %%c -m comands.t
)
Автор: FantoMax22
Дата сообщения: 30.06.2011 04:21
Привет!

Что сделал не так?
есть батник:

@echo off
title Mac-Bypass
:4
echo Введите mac-адрес и описание:
set /p mac=
dsadd user ...
dsmod group ...
dsmod user ...
goto:4

Когда кликаю на него, то он запускается и предлагает "Введите mac-адрес и описание:", но когда ввожу мак-адрес и описание и жму ввод, то выходит сообщение
"dsadd ошибка:Не указано значение для "samid"

Если открываю батники из командной строки, сразу указав мак и описание, то скрипт срабатывает. Так понимаю, что косяк где-то с переменной.

С уважением!
Автор: wolf0425
Дата сообщения: 30.06.2011 06:18

Цитата:
"dsadd ошибка:Не указано значение для "samid"
мы у гадалки должны узнавать что ты там потерял в dsadd ... ?
или у тебя там так "..." и прописаны в батнике?

Цитата:
Так понимаю, что косяк где-то с переменной.
ты где-то в своем батнике видишь использование %mac%?
я - почему-то не вижу
Автор: FantoMax22
Дата сообщения: 30.06.2011 06:52
wolf0425

вот весь батник:

@echo off
title Mac-Bypass
:4
echo Введите mac-адрес и описание:
set /p mac=
dsadd user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd Password1 -pwdneverexpires yes -samid %1 -upn %1@mydomain.ru -fn %1 -display %1 -desc %2

dsmod group "cn=Security - MacB,ou=RADIUS Access Groups,ou=Consolidated Groups,ou=Organization Structure,dc=mydomain,dc=ru" -addmbr "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru"

dsmod user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd %1

goto:4
Автор: wolf0425
Дата сообщения: 30.06.2011 07:25
FantoMax22 повторяю вопрос:
Цитата:
ты где-то в своем батнике видишь использование %mac%?

а если переменная не используется - зачем её присваиваешь?


Цитата:
Когда кликаю на него, то он запускается
и вообще-то в тексте батника видны %1 и %2 - т.е. батник не предназначен для запуска простым кликаньем в эксплорере, ему два параметра нужны в командной строке, на отсутствие первого dsadd тебе и жалуется.
но куда там потерялась %mac% - всё равно интересно.

Добавлено:
вообще похоже ты вот это хотел написать:

Код: @echo off
title Mac-Bypass

if "%~1" neq == "" goto :add

:4
set /p mac="Введите mac-адрес и описание:"
call :add %mac%
goto :4

:add
dsadd user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd Password1 -pwdneverexpires yes -samid %1 -upn %1@mydomain.ru -fn %1 -display %1 -desc %2
dsmod group "cn=Security - MacB,ou=RADIUS Access Groups,ou=Consolidated Groups,ou=Organization Structure,dc=mydomain,dc=ru" -addmbr "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru"
dsmod user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd %1

exit /b
Автор: FantoMax22
Дата сообщения: 30.06.2011 07:48
wolf0425
Именно это и хотел. Переменную впихнул видать по непониманию. Огромное спасибо!!!
Автор: qqqbbb
Дата сообщения: 30.06.2011 08:38
Как через батник добавить в файл текст в начало каждой строки? Есть список файлов созданный через DIR, нужно в начало каждой строки добавить DEL.
Автор: res2001
Дата сообщения: 30.06.2011 09:05
qqqbbb

Код: sed -r "s;(.*$);DEL\1;" test.txt
Автор: igorivlev
Дата сообщения: 30.06.2011 09:27

Цитата:
igorivlev

Код:
@echo off
for /f "tokens=1-3" %%a in (list.txt) do (
pscp.exe -pw %%c comands.t %%b@%%a:/tmp  
plink.exe -ssh -2 %%a -l %%b -pw %%c -m comands.t
)

файл list.txt содержит строчки вида:
192.168.0.1 login password


Огромное спасибо, все получилось.

И еще вопросик, как передать пароль после ввода логина.
т.е. в файле comands.t есть команда su, после которой нужно ввести пароль, какой командой это сделать? (сразу подключиться рутом нет возможности).
Автор: wolf0425
Дата сообщения: 30.06.2011 09:29
qqqbbb, добавляет чуть больше чем ты попросил и вырезает пустые строки:

Код: for /f "delims=" %%a in ( file_in.txt ) do 1>>file_out.txt echo.del /q "%%~a"
Автор: res2001
Дата сообщения: 30.06.2011 09:57
igorivlev

Цитата:
И еще вопросик, как передать пароль после ввода логина.

Это тебе не сюда надо, а к линуксоидам.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.