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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mr_SMiT
curl не является системным средством виндовз - и потому здесь офтопик.
Есть другой curl - псевдоним командлета Invoke-WebRequest в Powershell, который идёт с виндой  
 
Но линуксоиды были сильно против, и из следующей кроссплатформенной версии PS его убрали.
Так что вы прежде определитесь, какой курл и в какую тему.
 

Всего записей: 10565 | Зарегистр. 14-10-2001 | Отправлено: 11:17 11-03-2018
Mr_SMiT



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

 
Добавлено:
Ничего не понимаю. Я как раз про CMD (BAT) которые для Windows спрашивал. И Curl про который говорил в шапке этой темы имеется. В старой ветке по батникам зачастую помогали и подобных вопросов даже не возникало.




Дал ведь ссылку в предыдущем посту. Все, что не по Windows оффтоп.

Всего записей: 632 | Зарегистр. 18-07-2006 | Отправлено: 11:38 11-03-2018 | Исправлено: KLASS, 11:41 11-03-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mr_SMiT
 
Ставьте здесь вопрос иначе: помогите мне сделать ЧТО, а не КАК
Раз просите о помощи - значит, средства решения вашей задачи выбирают помогающие.
Может, помогут curl-ом, а может иначе.
 
Тонкости именно линуксячьих инструментов (коли уж вам упёрлись именно они) - в линуксоидной теме.

Всего записей: 10565 | Зарегистр. 14-10-2001 | Отправлено: 11:55 11-03-2018 | Исправлено: LevT, 11:56 11-03-2018
Mr_SMiT



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

Цитата:
Может, помогут curl-ом, а может иначе.

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

Всего записей: 632 | Зарегистр. 18-07-2006 | Отправлено: 12:00 11-03-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mr_SMiT
ну тогда ставьте задачу на языке человеческом, а не на птичьем языке параметров юниксовой curl
Я например их вовсе не понимаю и не хочу понимать.
 
Если задача на человеческом языке меня заинтересует - подумаю, как её скормить винде через Invoke-WebRequest
(говорю за себя, а так может кто и курлом захочет помочь - но это будет средство, а не самоцель)
 

Всего записей: 10565 | Зарегистр. 14-10-2001 | Отправлено: 12:07 11-03-2018 | Исправлено: LevT, 12:09 11-03-2018
YuS_2



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

Цитата:
ну тогда ставьте задачу на языке человеческом

Ну, чего там непонятно? Человек хочет авторизоваться на странице с предназначенной для этого формой. Всё, что надо для человеческой задачи лежит под ковриком там...
 
Mr_SMiT
А вот конечная цель не совсем понятна. Что же там необходимо получать в итоге?
Попробовал авторизацию в браузере, но никаких ключевых фраз не увидел... в смысле обозначьте, что именно является ключевой фразой.
 
Примерно так (подсмотрено в тырнетах):
script.ps1

Код:
if($host.version.major -ge 6){write-host Sorry, this version of powershell, script is not working correctly;sleep -s 5;exit}
$url = 'https://cas.x431.com/login?service=http://mycar.x431.com/mycar/softCenter/queryDownloadSofts.action'
$lin = 'здесь_логин'
$pas = 'здесь_пароль'
$s = iwr $url -ses tmp
$frm = $s.forms
$frm.fields['username'] = $lin
$frm.fields['password'] = $pas
$s = iwr -uri ("$url/" + $frm.action) -web $tmp -met post -bod $frm.fields
$s = iwr -uri $url -web $tmp
$s.parsedhtml.body.outertext.split("`r`n") -match "Welcome" # Тут можно обозначить ключевую фразу, которую желаете получить. А в текущем варианте, при успешной авторизации, будет выводиться username, иначе просто слово Login.

Всего записей: 1888 | Зарегистр. 03-02-2009 | Отправлено: 17:36 11-03-2018 | Исправлено: YuS_2, 20:13 11-03-2018
jFobos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста небольшой bat файл сделать (для winXP). Я что-то запутался с парсингом имен папок.
Есть вот такая структура папок:
Подробнее...
Это локальный мавен репозиторий. Я хочу его почистить, оставить только последние версии. Я написал сценарий, который проходится по всех папках второго уровня и удаляет их, но как оставить две папки с наибольшей версией (старшую версию с суффиксом -SNAPSHOT и старшую версию без суфиксов)?

Всего записей: 397 | Зарегистр. 03-12-2007 | Отправлено: 11:52 14-03-2018
YuS_2



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

Цитата:
Есть вот такая структура папок

Это не структура папок, это просто набор символов, возможно с разделителем ";"
А чтобы помочь Вам, необходимо сначала осмыслить, что Вы желаете получить в итоге...
1. Старшая версия - это какая? Ибо наибольшая - не всегда старшая.
2. Уровней каталогов пока не видно по тому списку.
3. Установлен ли в XP powershell? Если нет, рекомендую установить, ибо решение на нем Вам не поможет, если его не будет.
4. Пункты выше - не требования, а рекомендации. Возможно, кто-то предложит решение на CMD.

Всего записей: 1888 | Зарегистр. 03-02-2009 | Отправлено: 17:38 14-03-2018 | Исправлено: YuS_2, 17:39 14-03-2018
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1. Для демонстрации структуры папок действительно лучше воспользоваться другим способом
Например командой
Код:
tree <путь к корню структуры> >d:\tree.txt

 
2. И указать формальный признак по которому определять какие папки оставлять

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:11 14-03-2018
jFobos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения. Когда вставлял текст там были символы | и - (как раз вывод команды tree). Не знаю почему символы заменились на коды. Наверно из за юникода. Вот тоже самое на скриншоте https://i.imgur.com/8hEmlA2.png
 
Наибольшая по цифрах - старшая. Например версия 3.3.0.18 больше чем 3.3.0.3, или версия 3.4.0.0 больше чем 3.3.999.99. Аналогично с приставкой SNAPSHOT, версия 3.4.0.5-SNAPSHOT выше чем 3.3.0.6-SNAPSHOT.
 
Хотелось бы решение CMD. Я собирался спросить тут http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=27959 , но тему закрыли.

Всего записей: 397 | Зарегистр. 03-12-2007 | Отправлено: 23:53 14-03-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ой, не туда запостил, извините
 

Всего записей: 10565 | Зарегистр. 14-10-2001 | Отправлено: 01:44 15-03-2018 | Исправлено: KLASS, 01:59 15-03-2018
NIKZZZZ



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

Код:
@echo off
set v0=0
set v1=0
set v2=0
set v3=0
set f=
for /f "delims=" %%k in ('dir /b /a:d *.*.*.*^|find /i /v "-SNAPSHOT"') do call :compare "%%~dfk"
set v0=0
set v1=0
set v2=0
set v3=0
set f=
for /f "delims=" %%k in ('dir /b /a:d *.*.*.*^|find /i "-SNAPSHOT"') do call :compare "%%~dfk"
goto :eof
:compare
for /f "tokens=1,2,3,4 delims=.-" %%a in ("%~nx1") do (
  set n0=%%a
  set n1=%%b
  set n2=%%c
  set n3=%%d
)
if %n0% GTR %v0% goto _1  
if %n0% LSS %v0% goto _2  
if %n1% GTR %v1% goto _1  
if %n1% LSS %v1% goto _2  
if %n2% GTR %v2% goto _1  
if %n2% LSS %v2% goto _2  
if %n3% GTR %v3% goto _1
if %n3% LSS %v3% goto _2
goto :eof
:_1
if /i not "%f%"=="" rd /s /q "%f%"
set v0=%n0%
set v1=%n1%
set v2=%n2%
set v3=%n3%
set f=%~dpnx1
goto :eof
:_2
rd /s /q "%~dpnx1"  
goto :eof


Всего записей: 4761 | Зарегистр. 08-02-2006 | Отправлено: 05:31 15-03-2018
jFobos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Спасибо. Круто работает! Фиг бы сам такое написал.

Всего записей: 397 | Зарегистр. 03-12-2007 | Отправлено: 13:51 15-03-2018
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
буду признателен еще за одну подсказку. Есть скрипт, написанный на python (что не суть важно).
Запускаю питоновский скрипт через cmd/bat. Результатом будет определенная строка. Как эту строку-результат присвоить переменной для дальнейшей работы?

Всего записей: 1151 | Зарегистр. 29-01-2006 | Отправлено: 19:30 17-03-2018
YuS_2



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

Цитата:
Запускаю питоновский скрипт через cmd/bat. Результатом будет определенная строка. Как эту строку-результат присвоить переменной для дальнейшей работы?


Код:
for /f %%i in ('питоновский скрипт с экранированными спецсимволами.script') do set var=%%i

Всего записей: 1888 | Зарегистр. 03-02-2009 | Отправлено: 19:43 17-03-2018
NIKZZZZ



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
msmih
Смотрите хелп for /?

Всего записей: 4761 | Зарегистр. 08-02-2006 | Отправлено: 19:46 17-03-2018
Smitis

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

Цитата:
питоновский скрипт с экранированными спецсимволами

Уточню, что питоновский скрипт должен отправить результат работы в стандартный поток ввода-вывода (через print) который перехватит cmd

Код:
for /f %%# in ('python.exe script.py') do set "result=%%~#"

 


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

Всего записей: 1276 | Зарегистр. 09-02-2003 | Отправлено: 20:27 17-03-2018
NIKZZZZ



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

Код:
for /f "delims=" %%# in ('python.exe script.py') do set "result=%%~#"  

иначе строка с пробелами будет не корректно истолкована.

Всего записей: 4761 | Зарегистр. 08-02-2006 | Отправлено: 22:44 17-03-2018
VidelSamogO



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть задачи, нужные всем компьютерщикам, только они об этом до поры не знают. Например, такую задачу сейчас пытаюсь решить. Это задача по разлинковке (отвязке) жёстких ссыок в конкретном каталоге. Ну и, естественно, - его подкаталогах. То есть, все рано или поздно сталкиваются с проблемой нехватки места на диске. И часто начинают искать дубликаты, но не пытаясь их удалить, а например, залинковав их в жёские ссылки. Но потом оказывается, что тестовая програма, которую только скачал в другое место с теми же настройками, которые оказались залинкованными после последней попойки, отказывается работать. Или наоборот - оригинал. Поскольку не поддерживает параметры, привнесённые в настройки тестовой. Так вот, перед запуском новых прог иногда неплохо разлинковать эти файлы настроек в конкретном каталоге. То есть вернуть их в виде независимых копий. Можно это сделать простым копированием папки и возвратом на исходное место - с перезаписью. Но зачем мучать уже дефрагментированный жёсткий диск, если нужно только определить, не ссылка ли файл в данном каталоге, и скопировав его под уникальным именем в другое место (на логический диск с наибольшим свободным местом), вернуть на прежнее с перезаписью, причём переместив закрытые для перезаписи в отдельный каталог с сохранением структуры каталогов для последующего удаления? Вот такая простая задача. Можно конечно долго и нудно выполнять её тотал командиром с плагином, но хотелось бы это делать быстро и оперативно. Загвоздка в одном. В определении - является файл ссылкой. Junction Руссиновича не определил у меня ссылку. Какие дургие проги могут выдать результат для условного оператора в скрипте, который я думаю натравить на целевой каталог со ссылками? В XP finddupe справляется. но выдаёт совершенно неудобный список.

Всего записей: 713 | Зарегистр. 16-08-2008 | Отправлено: 15:44 18-03-2018 | Исправлено: VidelSamogO, 19:01 18-03-2018
LevT



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

Цитата:
 То есть, все рано или поздно сталкиваются с проблемой нехватки места на диске. И часто начинают искать дубликаты, но не пытаясь их удалить, а например, залинковав их в жёские ссылки.  

 
А вот так поступают далеко не все: только особо одарённые.
При нехватке места на томе есть системное средство Виндовз - дедупликация.
Оно есть в серверной винде, но умельцами с MDL выдирается для использования в десятке (для каждого билда).
 
Что до линков, то в powershell вот так их смотрят
https://docs.microsoft.com/en-us/powershell/wmf/5.0/feedback_symbolic
но только в достаточно свежем powershell (XP курит в сторонке)

Всего записей: 10565 | Зарегистр. 14-10-2001 | Отправлено: 17:35 18-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