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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

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

KLASS



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

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

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

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

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

Всего записей: 7219 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS_2, 10:11 03-07-2018
Falcon99



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Опять прошу помощи. Опять не могу понять где ошибка. Привожу код командного файла:
Подробнее...
 
Если убрать все относящиеся к "if" все работает нормально, но как только добавляю, то переменная ddmmyyyy после отработки :yesterday становиться пустой, хотя в самой функции, все задается нормально.
 
P.s. Пробовал использовать SetLocal EnableDelayedExpansion, но нужного эффекта не получил:
Подробнее...

Всего записей: 394 | Зарегистр. 12-10-2005 | Отправлено: 17:11 07-06-2018 | Исправлено: Falcon99, 17:52 07-06-2018
NIKZZZZ



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

Цитата:
Опять не могу понять где ошибка.

Ошибка в том, что используются блоки (то, что заключено в скобки), там либо надо использовать setlocal enabledelayedexpansion и переменные вида !var! вместо %var%, либо отказаться от блоков.
 

Код:
if  not exist "%path_sourse%\%file_name_1%"  goto _1
.....
exit
:_1
echo Исходных файлов не существует  
exit

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 17:30 07-06-2018
Falcon99



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробовал использовать вызов значения !var!, во втором варианте (написал в p.s.), но эффекта не дало, специально вставил строки:

Код:
echo дата=:!ddmmyyyy!
echo дата=:%ddmmyyyy%

В результате получаю :

Код:
дата=:!ddmmyyyy!
дата=:

Отказаться от блоков к сожалению не могу, т.к. это только заготовка и "if" еще будет использоваться в файле.
 

Всего записей: 394 | Зарегистр. 12-10-2005 | Отправлено: 17:38 07-06-2018 | Исправлено: Falcon99, 18:05 07-06-2018
NIKZZZZ



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

Цитата:
во втором варианте (написал в p.s.), но эффекта не дало

Там есть несколько ошибок, не все переменные правильно заменены на  !var!, а отказаться от блоков всегда можно, используя goto и call , это позволит избежать многих ошибок.

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 18:01 07-06-2018
Falcon99



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня будет куча if, т.к. будет последовательно проверятся путь к папке куда будет производиться копирование. При чем при отсутствии будет папка создаваться.  Поэтому не могли бы указать как правильно заменить на !var!?
Просто я пробовал вставлять

Код:
echo дата=:!ddmmyyyy!
echo дата=:%ddmmyyyy%

после вызова функции в результате получил:

Код:
дата=:!ddmmyyyy!
дата=:

Всего записей: 394 | Зарегистр. 12-10-2005 | Отправлено: 18:12 07-06-2018 | Исправлено: Falcon99, 18:20 07-06-2018
NIKZZZZ



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

Цитата:
P.s. Пробовал использовать SetLocal EnableDelayedExpansion, но нужного эффекта не получил

Так надо добавить в начало скрипта "setlocal enabledelayedexpansion", тогда и переменные типа !var! будут раскрываться.

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 19:07 07-06-2018
Falcon99



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Спасибо. Прошу прощение за вчерашнее, слегка устал потому был не адекватен. "setlocal enabledelayedexpansion" возможно не там использовал по той же причине. Но скорей всего послушаюсь вашего совета и просто в этом куске обойдусь без блоков, как показали. Еще раз спасибо.
 
p.s. Пришло пользоваться конструкцией goto, т.к. из-за скобок не захотела работать конструкция, которую помогли сделать на прошлой странице.

Всего записей: 394 | Зарегистр. 12-10-2005 | Отправлено: 08:42 08-06-2018 | Исправлено: Falcon99, 11:59 08-06-2018
Furee



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Подскажите пожалуйста как из батника добавить строчку
Код:
IF "%ERRORLEVEL%"=="0"  
в другой батник в Win XP?
 
Вот такая команда:

Код:
ECHO IF ^"^%ERRORLEVEL^%"=="0^"  >> "C:\MyScript.bat"

в Win10 без проблем отрабатывает и правильно добавляет нужную строчку в "C:\MyScript.bat".
 
А когда ее же исполняю в XP то результат вот такой:

Код:
IF ""=="0^"

Как победить?

Всего записей: 318 | Зарегистр. 13-10-2014 | Отправлено: 14:21 14-06-2018 | Исправлено: Furee, 14:23 14-06-2018
NIKZZZZ



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

Код:
>>"C:\MyScript.bat"  echo IF "%%ERRORLEVEL%%"=="0"  

В принципе, можно и так

Код:
echo IF "%%ERRORLEVEL%%"=="0">>"d:\MyScript.bat"

Но первый вариант предпочтительнее.
Экранирование символов в echo не требуется, только в некоторых случаях, а % должен удваиваться.

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 14:40 14-06-2018 | Исправлено: NIKZZZZ, 14:45 14-06-2018
Furee



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Отлично! Все получилось! Благодарю!
 
ЗЫ А в Win10 эта же команда выдает результат:

Код:
IF "%0%"=="0"

при чем в обоих ее вариантах.
Почему так? Нет ли универсального решения?

Всего записей: 318 | Зарегистр. 13-10-2014 | Отправлено: 14:51 14-06-2018
NIKZZZZ



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

Цитата:
ЗЫ А в Win10 эта же команда выдает результат:
Код:
IF "%0%"=="0"  

Странно, у меня на последней Win10 все корректно.  
 
 

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 15:05 14-06-2018
danetz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Други, подскажите. Есть строка выводящая на экран событие. (в моем случае это время загрузки виндовс) Как нужно дописать, чтобы на выходе осталась только длительность загрузки?
Пробовал добавить | findstr /с "Длительность загрузки", но ничего не выходит
Сам код:
WEVTUtil query-events Microsoft-Windows-Diagnostics-Performance/Operational /rd:true /f:Text /c:1 /q:"*[System[(EventID = 100)]]
 
Добавлено:
upd
вопрос снят - кавычки после квадратной скобки не закрыты

Всего записей: 146 | Зарегистр. 25-02-2012 | Отправлено: 16:09 15-06-2018
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, пожалуйста, как передать консольный вывод предыдущей программы в следующую программу как параметр командной строки?
 

NIKZZZZ
Спасибо, это оно.

Всего записей: 1693 | Зарегистр. 09-02-2006 | Отправлено: 19:36 19-06-2018 | Исправлено: romby, 20:22 19-06-2018
NIKZZZZ



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

Код:
for /f "delims=" %%a in ('prog1.exe') do prog2.exe %%a

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 19:48 19-06-2018
used

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На первой машине script octave.vbs запускается,
на второй машине установлен notepad++  и при клике на  octave.vbs  файл открывается в текст. редакторе.
При настройке типа файла vbs на cscript или wscript появляется сообщение что отсутствует ядро обработки типа vbs (~have not engine for vbs). Если переименновать vbs в  vbe то скрипт запускается нормально.
Как настроить на тип файла vbs?/ VBscript.dll в системе есть
WIN7

Всего записей: 243 | Зарегистр. 14-03-2007 | Отправлено: 18:22 25-06-2018 | Исправлено: used, 18:25 25-06-2018
NIKZZZZ



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

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 02:17 26-06-2018 | Исправлено: NIKZZZZ, 02:19 26-06-2018
qw12



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

Код:
resolve.exe domain_name dns_server

Как в переменную domain_name читать данные из файла последовательно, а в переменную dns_server читать данные из файла либо циклически либо рандомно, что важно, ну и перенаправить вывод в файл?
p.s. маленькая прожка, выдает ip домена, типа  
resolver.exe forum.ru-board.com 8.8.8.8
forum.ru-board.com => 94.156.128.52

Всего записей: 329 | Зарегистр. 04-06-2001 | Отправлено: 03:25 01-07-2018 | Исправлено: qw12, 03:27 01-07-2018
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как в bat можно результат выражения повесить на переменную ? Как в никсовом bash
Цитата:
test=`echo test 123`
пока пользуюсь костылём, почерпнутым на просторах сети
Цитата:
TaskList | Find /I /c "cmd.exe" >tmp.txt
for /F %%i in (tmp.txt) do set result=%%i
echo Found: %result%
но он мне НЕ нравится ввиду наличия буферного файла, да и \r\n или \n в некоторых ситуациях создают проблемы. Реально ли организовать вывод результата команды в переменную без лишних телодвижений ?

Всего записей: 1012 | Зарегистр. 19-09-2011 | Отправлено: 17:55 02-07-2018 | Исправлено: Baltazar500, 18:19 02-07-2018
NIKZZZZ



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

Цитата:
test=`echo test 123`  

Аналог батника

Код:
for /f "delims=" %%a in ('echo test 123') do set test=%%a
echo.%test%

 

Цитата:
TaskList | Find /I /c "cmd.exe" >tmp.txt
for /F %%i in (tmp.txt) do set result=%%i
echo Found: %result%  

 
Так можно и без tmp.txt

Код:
for /F %%i in ('TaskList ^| Find /I /c "cmd.exe"') do set result=%%i
echo Found: %result%

Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 19:54 02-07-2018
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ, понятно. Всё дело в одиночных кавычках внутри скобок. Адаптация bash скриптов под win - тот ещё гемморой )))
 
p.s. Спасибо.

Всего записей: 1012 | Зарегистр. 19-09-2011 | Отправлено: 19:58 02-07-2018 | Исправлено: Baltazar500, 19:59 02-07-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Компьютерный форум 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