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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
 
Прочее
  • Если используете "белый список" в брандмауэре Windows, то для работы сценариев в сети необходимо создать 2 исходящих правила для svchost.exe и PowerShell.exe.
  • В отличие от батников кодировка скриптов на PowerShell должна быть 1251 (ANSI). Начиная с версии Powershell Core 6.0, кодировка по умолчанию UTF8.
Расширение возможностей
Функции
Write-Color
Провайдеры
Готовые скрипты
Ошибки и предупреждения в журнале событий по электронной почте (в4.0)
Преобразование алиасов в скриптах к полным командам.
Получение детализированной информации из файлов.
 
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?

Cmd
Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 7055 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: KLASS, 10:36 01-05-2018
YuS_2



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

Цитата:
А вот то что скипты написанные и отлаженные в старших версиях не будут работать в младших

Тут небольшое уточнение: не всегда будут, но в большинстве случаев вполне себе... хотя, тут, всё же, лучше уточнять именно версии.
 
ЗЫ А вообще, плиз, народ не начинайте холивары на ровном месте, что лучше, что хуже... здесь же тема не для этого, есть специальный топик для обсуждений.
Да и на спрашивающего зачем "нападать"? Ну, хочет человек утилитку (а консоль cmd большей частью из утилит и состоит), подскажите если знаете, а если нет, то предложите решения в том или ином варианте, а дальше пусть уже сам выбирает, что ему больше подходит. Захочет повершел установить - спросит, не захочет - его решение.

Всего записей: 1890 | Зарегистр. 03-02-2009 | Отправлено: 07:44 28-02-2018
2as

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

Цитата:
Тут небольшое уточнение:

Да, конечно.
 
DCT
Я могу написать вам утилитку под ваши требования и нужды - если есть необходимость и желание - обращайтесь в личку. (Для обсуждения тех. задания и прочих сопутствующих вопросов).

Всего записей: 3283 | Зарегистр. 09-09-2003 | Отправлено: 07:48 28-02-2018 | Исправлено: 2as, 07:51 28-02-2018
NIKZZZZ



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

Цитата:
А в плане инструмента "для здесь и сейчас" PowerShell универсальнее и предпочтительнее bat и cmd  

Вообще-то всегда считал, что задачи надо решать напрямую, не используя посредников, типа .NET Framework, что по сути и батник делает.
Ну, уж о тормозах, вообще говорить нечего, простой запуск PowerShell уже занимает несколько секунд.

Всего записей: 4762 | Зарегистр. 08-02-2006 | Отправлено: 08:15 28-02-2018
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, убедительно прошу, в теме обсуждаем\предлагаем решения поставленной задачи
Все разговоры о:
1. что лучше
2. что хуже
3. что тормоз
4. личные разборки
5. зачем темы объединили
и подобную муть, обсуждаем в отведенной теме Шапка и около-темные вопросы
Предлагайте любые решения задачи относительно темы.
Мля, DCT, например, причем тут Cygwin, если раздел Windows.
Надеюсь на понимание

Всего записей: 7055 | Зарегистр. 12-10-2001 | Отправлено: 08:35 28-02-2018
2as

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

Цитата:
задачи надо решать напрямую, не используя посредников

мы так можем далеко в дебри залезть, даже просто пытаясь прийти к общему мнению, что считать посредником )))
Дабы избежать этого "сценария" я и написал выше:

Цитата:
лучшее - это всегда то, чем лучше владеешь...

 
далее ни про что, потому перенес в озвученную тему




Там Шапка и около-темные вопросы обсудили, зашли в шапку и исправили

Всего записей: 3283 | Зарегистр. 09-09-2003 | Отправлено: 08:39 28-02-2018 | Исправлено: KLASS, 09:02 28-02-2018
Smitis

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

Цитата:
Подскажите пожалуйста, есть ли утилитка, позволяющая в батнике ждать заданное количество минут (а не секунд, как все обычные утилиты; пересчитывать в секунды лень и легко спросонку ошибиться, что может быть чревато ошибками).

Гибридный CMD+JS (запускается как cmd)

Код:
@if (true == false) @end /*
::wait [кол-во минут]
@%SystemRoot%\System32\cscript.exe //nologo //e:jscript "%~f0" %*
@goto :eof
*/
WScript.Sleep(Number(WScript.Arguments(0))*60000);

 
2as

Цитата:
Здесь про сценарии речь ведут - за утилитами в другое место.  

Уж послал, так послал (С) Только, интересно, куда?

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

Всего записей: 1277 | Зарегистр. 09-02-2003 | Отправлено: 10:05 28-02-2018 | Исправлено: Smitis, 10:14 28-02-2018
YuS_2



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

Цитата:
например, причем тут Cygwin, если раздел Windows.

А, хм-м-м, не понял... Cygwin - как раз, для Windows и он вполне подходит для создания консольных сценариев.  
Это ведь, в основном, портированные из никсов консольные утилиты и оболочки для Windows, которые успешно используются по отдельности, а это просто пакет таких программ.




Нет в системе Cygwin, раздел по Windows, все остальное лесом

Всего записей: 1890 | Зарегистр. 03-02-2009 | Отправлено: 10:34 28-02-2018 | Исправлено: KLASS, 10:48 28-02-2018
2as

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

Цитата:
Здесь про сценарии речь ведут - за утилитами в другое место.  
 


Цитата:
Уж послал, так послал (С) Только, интересно, куда?
 

навскидку сразу могу подсказать два варианта, ранее они были уже "озвучены":
1. Гугл (но автор запроса утверждает, что он там уже был)
2. ко мне в личку
...
Вы вправе придумать самостоятельно любой другой ... )))
 
Ах, да, был еще вариант №3 решить вопрос несколькими строчками bat-файла...
но, видимо, целью было не решить свою задачу ...

Всего записей: 3283 | Зарегистр. 09-09-2003 | Отправлено: 10:39 28-02-2018 | Исправлено: 2as, 11:48 28-02-2018
VVL99



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

Код:
 
@echo off
set /a m=%1*60
set sleep=for /f "tokens=2" %%i in ('choice /t %m% /c y /n /d y') do (.)
%sleep%
pause
 

Я просто слабо понимаю всю эту механику.

----------
----------

Всего записей: 1784 | Зарегистр. 03-02-2011 | Отправлено: 17:57 28-02-2018
2as

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

Цитата:
Я просто слабо понимаю всю эту механику.

А вы вообще что хотите сделать?
В cmd-файле для ожидания используется команда:
 
sleep время_ожидания_в_секундах
 
Выше обсуждалось что делать чтобы время задавать в минутах, не рассчитывая вручную для команды sleep время в секундах
 

Код:
команда1
команда2
...
командаN                                    // выполнение сценария
 
set minuts=1                                // присваиваем переменной munuts значение паузы в минутах
set /a secunds= %minuts% * 60    // переводим в секунды для команды sleep
sleep %secunds%                         // делаем паузу в 1 минуту
 
командаM                                    // продолжение выполнения сценария
командаM+1

 
 
Описание языка командных файлов, например, здесь:

Всего записей: 3283 | Зарегистр. 09-09-2003 | Отправлено: 19:02 28-02-2018 | Исправлено: 2as, 19:07 28-02-2018
YuS_2



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

Цитата:
А можно использовать для ожидания такой вариант?

Нет, так лучше не делать:
1. Синтаксис не позволит. Точку нельзя использовать в качестве выполняющейся команды.
2. Бессмысленно так использовать choice, проще запустить timeout, к тому же, у него период ожидания можно использовать более длительный

Код:
@echo off
set "x=%~1"
if not defined x echo Not parameter&pause&exit
set /a x*=60
timeout /t %x%

Всего записей: 1890 | Зарегистр. 03-02-2009 | Отправлено: 19:14 28-02-2018 | Исправлено: YuS_2, 09:28 01-03-2018
VVL99



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2as
Цитата:
Описание языка командных файлов, например, здесь:
Спасибо за ссылку.
 
YuS_2
Угу, я как раз нашёл такой же почти вариант.

Код:
 
@echo off
set /a m=%1*60
timeout /t %m% /nobreak >nul
pause
 

Только без проверки параметра.
Одно время пробовал варианты с пингом, но они в зависимости от наличия сети по разному работают, да и время не идеально совпадает (секунда в секунду), были неудобства.
Ладно спасибо, задача абстрактная была.

----------
----------

Всего записей: 1784 | Зарегистр. 03-02-2011 | Отправлено: 19:49 28-02-2018 | Исправлено: VVL99, 19:50 28-02-2018
YuS_2



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

Цитата:
Одно время пробовал варианты с пингом, но они в зависимости от наличия сети по разному работают, да и время не идеально совпадает

Лучше pathping использовать, там время точнее будет работать, т.е. паузу можно в миллисекундах задавать. Примерно так:

Код:
>nul pathping -h 1 -p 2000 -q 1 -w 1 127.0.0.1

Всего записей: 1890 | Зарегистр. 03-02-2009 | Отправлено: 19:59 28-02-2018 | Исправлено: YuS_2, 20:02 28-02-2018
VVL99



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2 - пост
Цитата:
Лучше pathping использовать, там время точнее будет работать, т.е. паузу можно в миллисекундах задавать. Примерно так:

Код:
pathping -h 1 -p 2000 -q 1 -w 1 127.0.0.1&gt;nul
 
О как, я чёта даже не встречал такого, работает нормально и с сетью и без.
С ноликами получилось

Код:
 
@echo off
set /a m=%1*60
pathping -h 1 -p %m%000 -q 1 -w 1 127.0.0.1>nul
pause
 

Спасибо.

----------
----------

Всего записей: 1784 | Зарегистр. 03-02-2011 | Отправлено: 20:09 28-02-2018 | Исправлено: VVL99, 20:10 28-02-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
Чтобы не выпадал в ошибку в случае отсутствия параметра

Код:
set /a m=(%1-0)*60


Всего записей: 4762 | Зарегистр. 08-02-2006 | Отправлено: 21:51 28-02-2018
DCT

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




Сколько уже говорить сюда не по теме

Всего записей: 748 | Зарегистр. 22-12-2005 | Отправлено: 01:28 01-03-2018 | Исправлено: KLASS, 01:34 01-03-2018
VVL99



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ - пост
Тоже кстати интересная тонкость, как бы два в одном и проверка и присвоение ноля в случае отсутствия параметра.
Спасибо.
 
Поскольку человек спрашивал про вариант со временем, решил и про такой вариант спросить.
Тут главное не забыть, что и как передаём в параметр (1:46)

Код:
 
@echo off
:wait
timeout /t 1 /nobreak >nul
if %time:~0,-6% NEQ %1 goto wait
pause
 

Опять же без проверки параметра, даже не знаю что тут лучше сделать.


----------
----------

Всего записей: 1784 | Зарегистр. 03-02-2011 | Отправлено: 01:45 01-03-2018 | Исправлено: VVL99, 03:14 01-03-2018
DCT

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




Ваше ПО, тоже стороннее идите в программы

Всего записей: 748 | Зарегистр. 22-12-2005 | Отправлено: 01:47 01-03-2018 | Исправлено: KLASS, 07:25 01-03-2018
suz191



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день!
Помогите пожалуйста создать ярлык с относительными путями  
т.е. Z:\BROWSER\GiperFox\BASILISK\Profiles = %~d0
 
Объект: Z:\BROWSER\GiperFox\BASILISK\Profiles\hidcon.exe Z:\BROWSER\GiperFox\BASILISK\Profiles\!Clear.bat
Папка: Z:\BROWSER\GiperFox\BASILISK\Profiles\
Ярлык: Z:\BROWSER\GiperFox\BASILISK\Profiles\!Clear.lnk
 
Я не понимаю как работать с vbs  
Как можно получить такое?
 
@set @x=0; /*
@cscript /e:jscript "%~f0"
@exit */
oShell = new ActiveXObject("WScript.Shell");
myDir = oShell.CurrentDirectory;
uShortcut = oShell.CreateShortcut(myDir + "\\!Clear.lnk");
uShortcut.TargetPath = myDir + "\\hidcon.exe" myDir + "\\!Clear.bat";
uShortcut.WorkingDirectory = myDir;
uShortcut.Save();
 
Пробовал так myDir = oShell.CurrentDirectory
Но в любом случае не работает ссылка Объект: Z:\BROWSER\GiperFox\BASILISK\Profiles\hidcon.exe Z:\BROWSER\GiperFox\BASILISK\Profiles\!Clear.bat
 
Большое Спасибо за помощь!
Прошу не кидаться тапками объяснил как смог то что хочу сделать

Всего записей: 670 | Зарегистр. 17-11-2005 | Отправлено: 21:53 04-03-2018 | Исправлено: suz191, 23:18 04-03-2018
Smitis

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
suz191
Если через ярлык нужно запустить hidcon и ему передать путь к батнику, должно быть что-то типа

Код:
uShortcut.TargetPath = myDir + "\\hidcon.exe";
uShortcut.Arguments = myDir + "\\!Clear.bat";


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

Всего записей: 1277 | Зарегистр. 09-02-2003 | Отправлено: 23:36 04-03-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » Сценарии Windows

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru