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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, помогите из файлика рядом с bat'ником вытащить сведения.
Есть текстовый файл LastSyncs.log
В него соответственно пишется лог синхронизации (всегда в начало).
Вид дословно такой:

Код:
________________________________________________________________________________________________
|13.04.2018 - CompFlash: Синхронизация завершена. В процессе синхронизации возникли проблемы
|
|    Элементов обработано: 237 (48,2 МБ)
|    Общее время: 00:00:26
|_______________________________________________________________________________________________
 
[16:15:30] Информация: Начать сравнение
[16:15:32] Информация: Обновление файла "34654466"
[16:15:32] Информация: Обновление файла "4654645646"
[16:15:32] Информация: Обновление файла "45645646"
[16:15:32] Информация: Обновление файла "4554465"
[16:15:32] Информация: Обновление файла "5454466"
[16:15:32] Информация: Обновление файла "132131"
...
 
 
 
Хотелось бы вытащить первое упоминание (т.е. в начале файла) даты (13.04.2018) времени (16:15:30) начала синхронизации и имени (CompFlash) задания на синхронизацию, с последующим присвоением этих значений переменным для использования в bat далее по тексту.

Всего записей: 404 | Зарегистр. 18-02-2008 | Отправлено: 15:10 14-04-2018 | Исправлено: Taran2ul, 15:20 14-04-2018
BorlandIMHO

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

Код:
@echo OFF
setlocal enabledelayedexpansion
REM номер строки, из которой тащим дату
set /a DATESTRING=2
REM Счётчик строк для использования в цикле
set /a SCOUNT=1
REM считываем дату из соответствующей строки
for /f "tokens=1,3 delims=^|: " %%A in (LastSyncs.log) do (
    if !SCOUNT! == %DATESTRING% (set "LOGDATE=%%A" && set "TASKNAME=%%B")
    set /a SCOUNT+=1
)
set "SCOUNT="
REM считываем время из строки лога с "Информация: Начать сравнение"
for /f "usebackq delims=[]" %%B in (`find /i "Информация: Начать сравнение" LastSyncs.log`) do set LOGTIME=%%B
setlocal disabledelayedexpansion
echo Дата: %LOGDATE%
echo Время: %LOGTIME%
echo Имя задания: %TASKNAME%
pause
 


----------
http://www.imho.ws

Всего записей: 943 | Зарегистр. 12-10-2006 | Отправлено: 23:11 14-04-2018 | Исправлено: BorlandIMHO, 23:24 14-04-2018
Taran2ul



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Спасибо.
Вот только если имя задания содержит пробел, то выводится часть до него.
И время выводится не очень корректно:

Код:
Время: ---------- LASTSYNCS.LOG

 
И для ускорения обработки достаточно 8 первых строк.

Всего записей: 404 | Зарегистр. 18-02-2008 | Отправлено: 12:06 16-04-2018
BorlandIMHO

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

Цитата:
время выводится не очень корректно:

На опубликованном Вами куске лога у меня выводится корректное время...

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

Логично, ибо в логе-примере никаких пробелов в имени задания нет, и я предположил, что их и не бывает...
 
Если время всегда в восьмой строчке:
Код:
@echo OFF
setlocal enabledelayedexpansion
call :GETVARS
setlocal disabledelayedexpansion
echo Дата: %LOGDATE%
echo Время: %LOGTIME%
echo Имя задания: %TASKNAME%
pause
exit /b 0
 
:GETVARS
REM номер строки, из которой тащим дату и имя задания
set /a DATESTRING=2
REM номер строки, из которой тащим время старта. "-1" из-за особенностей обработки пустых строк в for.
set /a TIMESTRING=8-1
REM Счётчик строк для использования в цикле
set /a SCOUNT=0
REM разгребаем :-)
for /f "tokens=1,2,3 delims=^|:[]-" %%A in (LastSyncs.log) do (
    set /a SCOUNT+=1
    if !SCOUNT! == %DATESTRING% (set "LOGDATE=%%A" && set "TASKNAME=%%~B")
    if !SCOUNT! == %TIMESTRING% (set "LOGTIME=%%A:%%B:%%C" & exit /b 0)
)
REM Следующая команда в принципе не нужна, ибо никогда не достигается, если в логе более 7 строк, но пусть будет
exit /b 1
 
 
Обработка лога вынесена в подпрограмму.
Теперь имя задания не должно содержать "-"...


----------
http://www.imho.ws

Всего записей: 943 | Зарегистр. 12-10-2006 | Отправлено: 15:30 16-04-2018 | Исправлено: BorlandIMHO, 15:36 16-04-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый вечер!
 
Помогите разобраться, пожалуйста.
 
Есть программа Печать НД с PDF417, позволяет печатать разные документы для ФНС. Внутри есть пример как работает. Я ни как не могу понять, каким образом работает Печать НД с PDF417, у меня есть файл XML и форма документа в формате Tiff. Изучаю пример и не могу понять как сделать.

----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3276 | Зарегистр. 30-12-2007 | Отправлено: 21:41 16-04-2018 | Исправлено: lorents, 00:51 18-04-2018
ShadowBroker

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

Код:
netsh wlan add profile filename=D:\profilwaifi\*.xml interface="Беспроводное сетевое соединение"  

Всего записей: 55 | Зарегистр. 25-01-2017 | Отправлено: 16:02 18-04-2018 | Исправлено: ShadowBroker, 16:03 18-04-2018
NIKZZZZ



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

Код:
for /f "delims=" %%a in ('dir /b /a:-d "D:\profilwaifi\*.xml"') do netsh wlan add profile filename="%%~fa" interface="Беспроводное сетевое соединение"


Всего записей: 4761 | Зарегистр. 08-02-2006 | Отправлено: 16:20 18-04-2018 | Исправлено: NIKZZZZ, 19:24 18-04-2018
ShadowBroker

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Спасибо за помощ но не сработало пишет:
D:\profilwaifi>netsh wlan add profile filename="%fa" interface="Беспроводное сетевое соединение"
Не удается найти указанный файл.
 
вин7 32розрядная запуск от админа, файлы профиля на месте.

Всего записей: 55 | Зарегистр. 25-01-2017 | Отправлено: 19:19 18-04-2018 | Исправлено: ShadowBroker, 19:24 18-04-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShadowBroker
Я поправил пост, там тильды не хватало, невнимательность.

Всего записей: 4761 | Зарегистр. 08-02-2006 | Отправлено: 19:26 18-04-2018 | Исправлено: NIKZZZZ, 19:27 18-04-2018
ShadowBroker

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Работает все добавило, Спасибо Вам Большое, у меня возник вопрос в Winpe можно сделать импорт експорт профилей с клиентской машины?

Всего записей: 55 | Зарегистр. 25-01-2017 | Отправлено: 20:00 18-04-2018 | Исправлено: ShadowBroker, 20:05 18-04-2018
svin88

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте всем !
Имеется батник, который создает файл *.txt в директории bat-файла с MAC-адресом сетевой карты в виде текста
mac=XX-XX-XX-XX-XX-XX. Код батника ниже.
Но нужно чтобы выводил текст mac-адреса без тире (дефисов) в виде таком mac=XXXXXXXXXXXX.
Как поправить код чтобы еще удалял тире в создаваемом тексте файла ?
 

Код:
 
@Echo Off
SetLocal EnableExtensions
(
for /f %%a in ('getmac^|find /i "device"') do echo mac=%%a
))>mac1.txt
Exit
 

 

Всего записей: 258 | Зарегистр. 11-06-2009 | Отправлено: 00:20 21-04-2018
NIKZZZZ



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

Код:
@Echo Off
SetLocal EnableExtensions
(
for /f "tokens=1,2,3,4,5,6 delims=- " %%a in ('getmac^|find /i "device"') do echo mac=%%a%%b%%c%%d%%e%%f
))>mac1.txt
Exit

 
ShadowBroker

Цитата:
у меня возник вопрос в Winpe можно сделать импорт експорт профилей с клиентской машины?

Можно, в некоторых сборках реализовано.
 
 

Всего записей: 4761 | Зарегистр. 08-02-2006 | Отправлено: 08:24 21-04-2018 | Исправлено: NIKZZZZ, 08:28 21-04-2018
svin88

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




В ПМ пасибы шлем, согласно уставу п. 2.8.2. главы VIII Соглашения по использованию

Всего записей: 258 | Зарегистр. 11-06-2009 | Отправлено: 09:27 21-04-2018 | Исправлено: KLASS, 09:38 21-04-2018
ShadowBroker

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

Цитата:
Можно, в некоторых сборках реализовано.  

 
В каких например? я не встречал а может плохо смотрел.

Всего записей: 55 | Зарегистр. 25-01-2017 | Отправлено: 16:28 25-04-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Запускаю один скрипт в bat, который запускает скрипт wsf.
внутри скрипта wsf есть строчка:

Код:
var file = "D:\\XML\\UT_ZVIUN_7725_7725_772578652046_20180422_96D15EE7-0102-462D-8204-DF1A4E199A67.xml";

запуск wsf через bat

Код:
"%folder%\cscript.exe" //I //Nologo //Job:testPrint "%~dp0test.wsf" testPrint

Как сделать, что я мог задать var file самостоятельно? например:  

Код:
"D:\test.bat" "D:\XML\UT_ZVIUN_7725_7725_772578652046_20180422_96D15EE7-0102-462D-8204-DF1A4E199A67.xml"


----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3276 | Зарегистр. 30-12-2007 | Отправлено: 18:34 02-05-2018 | Исправлено: lorents, 18:35 02-05-2018
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lorents
А что внутри .wsf? В смысле, VBS или JS?
В принципе, доступ к параметрам запуска скрипта осуществляется через объект WScript (во всяком случае для VBS).
WScript.Arguments.Count - количество параметров
WScript.Arguments(0) - первый параметр
WScript.Arguments(1) - второй параметр
WScript.Arguments(WScript.Arguments.Count - 1) - последний параметр
И.т.д.
 
Насколько я вижу, Ваш скрипт получает из батника параметр "testPrint". Ничто не мешает передать вторым параметром имя xml-файла.

----------
http://www.imho.ws

Всего записей: 943 | Зарегистр. 12-10-2006 | Отправлено: 21:33 02-05-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Вот сам скрипты, никак не могу понять как сделать.
http://dropmefiles.com/axrNE

Всего записей: 3276 | Зарегистр. 30-12-2007 | Отправлено: 21:41 02-05-2018 | Исправлено: lorents, 21:58 02-05-2018
BorlandIMHO

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

Цитата:
Вот сам скрипты

"ГНИВЦ продакшнс"?..
 
В test.bat, после {@echo OFF}, добавляем строку
Код:
set "FILE2PRINT=%~1"

Вызов {"%folder%\cscript.exe" //I //Nologo //Job:testPrint "%~dp0test.wsf" testPrint} заменяем на
Код:
"%folder%\cscript.exe" //I //Nologo //Job:testPrint "%~dp0test.wsf" testPrint "%FILE2PRINT:\=\\%"

 
В test.wsf заменяем {var file = "D:\\XML\\UT_ZVIUN_7725_7725_772578652046_20180422_96D15EE7-0102-462D-8204-DF1A4E199A67.xml";} на
Код:
var file = WScript.Arguments(1);

 
Соответственно, test.bat будет принимать аргументом имя файла с путём и отдавать его скрипту wsf (заменив все одиночные слеши двойными).
test.wsf будет присваивать это дело переменной file.
 
Гарантировать работоспособность не могу, ставить гнивцовские поделки для проверки - никакого желания...
 
Надеюсь, появится кто-нить из здешних Мастеров и поправит, если что не так.

----------
http://www.imho.ws

Всего записей: 943 | Зарегистр. 12-10-2006 | Отправлено: 23:42 02-05-2018 | Исправлено: BorlandIMHO, 14:14 03-05-2018
lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Спасибо! выручили.
 
Кстати можно использовать  

Код:
"%folder%\cscript.exe" //I //Nologo //Job:testPrint "%~dp0test.wsf" testPrint "%FILE2PRINT%"

Цитата:
"ГНИВЦ продакшнс"?..  

Он самый

----------
Image Catalyst - оптимизация изображений без потери качества

Всего записей: 3276 | Зарегистр. 30-12-2007 | Отправлено: 00:12 03-05-2018 | Исправлено: lorents, 00:38 03-05-2018
BorlandIMHO

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

Цитата:
Кстати можно использовать...
Ну, в таком случае вообще не нужно вводить переменную FILE2PRINT в батнике, вместо неё с тем же успехом можно скормить wsf непосредственно "%1".
Код:
"%folder%\cscript.exe" //I //Nologo //Job:testPrint "%~dp0test.wsf" testPrint "%~1"

Просто тогда не очень понятно, нафига вообще путь в wsf указан с удвоенными слешами...

----------
http://www.imho.ws

Всего записей: 943 | Зарегистр. 12-10-2006 | Отправлено: 20:34 03-05-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